{"version":3,"file":"js/main.js","mappings":"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AAM,CAChCzF,EAAgBjZ,gBAChBiZ,EAAgBnZ,kBAChBmZ,EAAgB9Y,iBAChB8Y,EAAgB5Y,cAChB4Y,EAAgB1Y,mBAuIxB,SAAY0Y,GACR,yCACA,uCACA,uCACA,6DACA,mEACA,qCACA,uCACA,0CACA,4DACA,4DACA,gDACA,8CACA,gEACA,gEACA,oDACA,4CACA,8DACA,8DACA,kDACA,gDACA,8CACA,gDACA,sCACA,wCACA,sEACA,sCACA,wCACA,4CACA,sDACA,gDACA,wEACA,4DACA,4EACA,oEACA,kDACA,wEACA,kCACA,oCACA,4CACA,8CACA,4CACA,8CACA,gCACA,sDACA,wDACA,kDACA,oCACA,sCACA,0DACA,4DACA,kCACA,oCACA,gCACA,kCACA,oCACA,wDACA,0EACA,oDACA,gDACA,kDACA,wDACA,4CACA,wCACA,oCACA,sCACA,wDACA,oDACA,sDACA,wDACA,0CACA,wCACA,4CACA,8CACA,gDACA,8CACA,+CACA,+DACA,6DACA,+DACA,yDACA,6CACA,+CACA,2DACA,qDACA,6DACA,+DACA,2DACA,6DACA,+CACA,yDACA,2DACA,qDACA,uDACA,yDACA,mEACA,+DACA,iEACA,qEACA,iEACA,mEACA,mFACA,qEACA,uDACA,mDACA,qDACA,2DACA,uDACA,yDACA,mDACA,2DACA,yEACA,qEACA,mDACA,+CACA,iDACA,mDACA,2CACA,iEACA,6DACA,+DACA,mCACA,qCACA,mDACA,qDACA,6CACA,+CACA,qDACA,uDACA,yDACA,+DACA,yEACA,+DACA,4DACH,CAtID,CAAYA,IAAAA,EAAe,I,shBCxQ3B,MAAM0F,EAAe,2BACd,MAAMC,UAAgC,YACzC,MAAAljD,GACI,OAAO,uBAAK10B,GAAI23E,GACpB,EAgBG,0DAAME,EAAN,cAAgC,YAEnC,WAAAjzE,CAAaggB,GACTkzD,MAAMlzD,IACN,OAAgBptB,KACpB,CAEA,MAAAk9B,GACI,MAAM,MAAEtzB,EAAK,SAAE22E,EAAQ,aAAEC,EAAY,aAAEC,EAAY,eAAEC,EAAc,SAAEC,EAAQ,UAAEC,EAA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AqBtC,SAAYC,GACR,YACA,+BACH,CAHD,CAAYA,IAAAA,EAAY,KAKxB,SAAYC,GACR,cACA,YACA,aACH,CAJD,CAAYA,IAAAA,EAAa,MAgOzB,SAAYC,GACR,wBACA,6BACH,CAHD,CAAYA,IAAAA,EAAe,MA2B3B,SAAYC,GACR,UACA,cACA,oCACA,gBACA,UACA,YACA,UACA,UACA,gBACA,cACA,cACA,gBACA,4BACA,cACA,SACH,CAhBD,CAAYA,IAAAA,EAAsB,KAkBlC,SAAYC,GACR,gBACA,oBACA,iBACH,CAJD,CAAYA,IAAAA,EAA8B,MAsC1C,SAAYC,GACR,YACA,cACA,kBACA,kBACA,8BACA,wBACA,oBACA,0BACA,eACH,CAVD,CAAYA,IAAAA,EAAe,MAkH3B,SAAYC,GACR,oBACA,cACA,sBACA,cACA,kBACA,kBACA,cACA,WACH,CATD,CAAYA,IAAAA,EAAU,KAqBf,MAAM6rB,WAA2B/lB,KAiCxC,SAAY7F,GACR,YACA,wBACA,YACA,0BACA,cACA,WACH,CAPD,CAAYA,IAAAA,EAAgB,MAkB5B,SAAYC,GACR,cACA,cACA,cACA,cACA,cACA,oBACA,8BACA,0BACA,0BACA,wBACA,sBACA,wCACA,mCACH,CAdD,CAAYA,IAAAA,EAAiB,KAgB7B,SAAYC,GACR,YACA,wBACA,YACA,cACA,WACH,CAND,CAAYA,IAAAA,EAAY,MA6KxB,SAAYC,GACR,wBACA,kBACA,0BACA,aACH,CALD,CAAYA,IAAAA,EAAY,KAOxB,SAAYC,GACR,+BACH,CAFD,CAAYA,IAAAA,EAAU,KAyBf,MAAMyrB,WAA+BhmB,KA2F5C,SAAYxF,GACR,gBACA,0CACA,oDACA,oCACA,yBACH,CAND,CAAYA,IAAAA,EAAqB,MA4HjC,SAAYC,GACR,0CACA,gCACA,gCACA,gCACA,gCACA,kBACA,YACA,2BACH,CATD,CAAYA,IAAAA,EAAoB,MAoBhC,SAAYC,GACR,kBACA,kCACA,kBACA,wCACA,sBACA,kBACA,yBACH,CARD,CAAYA,IAAAA,EAAyB,MA8TrC,SAAYC,GACR,gBACA,UACA,oBACA,YACA,UACA,YACA,oBACA,YACA,UACA,WACH,CAXD,CAAYA,IAAAA,EAAgB,MA8B5B,SAAYC,GACR,gBACA,oBACA,aACH,CAJD,CAAYA,IAAAA,EAAQ,MAqJpB,SAAYC,GACR,cACA,eACH,CAHD,CAAYA,IAAAA,EAAoB,KA+BzB,MAAMorB,WAA4BjmB,IA6ClC,MAAMkmB,WAA4BlmB,KAy1BzC,SAAYlF,GACR,wCACA,UACA,WACH,CAJD,CAAYA,IAAAA,EAAa,MAmBzB,SAAYC,GACR,cACA,cACA,cACA,cACA,aACH,CAND,CAAYA,IAAAA,EAAO,KAgKZ,MAAMorB,WAAsBnmB,IA2G5B,MAAMomB,WAAqCpmB,IAsB3C,MAAMqmB,WAAuBrmB,IAoD7B,MAAMsmB,WAAwBtmB,KA2HrC,SAAYhF,GACR,8CACA,8CACA,4BACA,wCACA,oBACA,cACA,kCACA,iBACH,CATD,CAAYA,IAAAA,EAAQ,MA8TpB,SAAYC,GACR,gBACA,sBACA,mBACH,CAJD,CAAYA,IAAAA,EAAW,KAmJhB,MAAMsrB,WAA0CvmB,IAYhD,MAAMwmB,WAAsCxmB,KAmUnD,SAAY9E,GACR,8CACA,gDACA,0CACA,0DACA,4CACA,wBACA,gEACA,8CACA,oDACA,8BACA,sEACA,oEACA,oFACA,gDACA,sCACA,oCACA,sDACA,8CACA,kBACA,aACH,CArBD,CAAYA,IAAAA,EAAe,MA+C3B,SAAYC,GACR,UACA,UACA,UACA,UACA,UACA,SACH,CAPD,CAAYA,IAAAA,EAAa,MAsBzB,SAAYC,GACR,cACA,YACA,YACA,cACA,WACH,CAND,CAAYA,IAAAA,EAAgB,KAyCrB,MAAMqrB,WAAkBzmB,KAyS/B,SAAY3E,GACR,sCACA,kCACA,wBACA,+CACH,CALD,CAAYA,IAAAA,EAAgB,KAO5B,SAAYC,GACR,wBACA,sBACA,cACA,eACH,CALD,CAAYA,IAAAA,EAAgB,MAY5B,SAAYC,GACR,cACA,wBACA,wBACA,wBACA,cACA,cACA,gBACA,iBACH,CATD,CAAYA,IAAAA,EAAS,KAuDd,MAAMmrB,WAAyB1mB,KAwpBtC,SAAYxE,GACR,wDACA,wCACA,0CACA,gDACA,oDACA,gCACA,kEACA,sCACA,4DACA,4CACA,0CACA,+CACH,CAbD,CAAYA,IAAAA,EAAuB,KAenC,SAAYC,GACR,UACA,UACA,eACH,CAJD,CAAYA,IAAAA,EAAuB,MAqFnC,SAAYC,GACR,kBACA,wBACA,oBACA,mBACH,CALD,CAAYA,IAAAA,EAAY,KAOxB,SAAYC,GACR,UACA,cACA,UACA,kBACA,kBACA,gBACA,YACA,YACA,cACA,kBACA,cACA,oBACA,gBACA,YACA,gBACA,YACA,kBACA,aACH,CAnBD,CAAYA,IAAAA,EAAiB,KAqB7B,SAAYC,GACR,QACA,YACA,YACA,YACA,YACA,gBACA,YACA,WACH,CATD,CAAYA,IAAAA,EAAqB,MAoBjC,SAAYC,GACR,kCACA,wCACA,cACA,4BACA,iCACH,CAND,CAAYA,IAAAA,EAAqB,MA8HjC,SAAYC,GACR,UACA,oBACA,oBACA,oBACA,UACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,YACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,UACA,oBACA,oBACA,mBACH,CA3BD,CAAYA,IAAAA,EAAoB,MAyJhC,SAAYC,GACR,gBACA,oBACA,sBACA,YACA,YACA,cACA,cACA,WACH,CATD,CAAYA,IAAAA,EAAc,KAW1B,SAAYC,GACR,4BACA,kBACA,gCACA,6CACH,CALD,CAAYA,IAAAA,EAAoB,MAoGhC,SAAYC,GACR,kBACA,cACA,aACH,CAJD,CAAYA,IAAAA,EAAM,MAuFlB,SAAYC,GACR,oBACA,oBACA,gBACA,YACA,kBACA,gBACA,mBACH,CARD,CAAYA,IAAAA,EAAe,KAgCpB,MAAMyqB,WAAkC3mB,KAoG/C,SAAY7D,GACR,cACA,wBACA,YACA,YACA,UACA,YACA,gBACA,YACA,aACH,CAVD,CAAYA,IAAAA,EAAsB,MAuDlC,SAAYC,GACR,oBACA,wBACA,kCACA,iCACH,CALD,CAAYA,IAAAA,EAAqB,KAoC1B,MAAMwqB,WAA0B5mB,KAKvC,SAAY3D,GACR,oBACA,cACA,sBACA,cACA,oBACA,wBACA,iBACH,CARD,CAAYA,IAAAA,EAAgB,KAqBrB,MAAMwqB,WAA+B7mB,KA4B5C,SAAY1D,GACR,cACA,oBACA,mBACH,CAJD,CAAYA,IAAAA,EAAS,MA+FrB,SAAYC,GACR,sBACA,cACA,YACA,oBACA,mBACH,CAND,CAAYA,IAAAA,EAAW,MA6VvB,SAAYC,GACR,YACA,aACH,CAHD,CAAYA,KAAAA,GAAiB,MAqD7B,SAAYC,GACR,wBACA,kBACA,oBACA,aACH,CALD,CAAYA,KAAAA,GAAe,KAO3B,SAAYC,GACR,sEACA,sDACA,wDACA,0EACA,4EACA,8DACA,8BACA,gCACA,wCACA,gCACA,sCACA,sCACA,sCACA,4CACA,kCACA,0CACA,8BACA,gCACA,sCACA,8BACA,gCACA,oCACA,oBACA,4DACA,kDACA,8BACA,0CACA,8CACA,8CACA,gDACA,8CACA,4CACA,gCACA,4DACA,kDACA,uCACH,CArCD,CAAYA,KAAAA,GAAa,MA6DzB,SAAYC,GACR,UACA,SACH,CAHD,CAAYA,KAAAA,GAAc,MAsI1B,SAAYC,GACR,sBACA,wBACA,sBACA,4CACA,4CACA,8BACA,oBACA,sCACA,kCACA,sCACA,gBACA,kBACA,0BACA,wCACA,kDACA,8BACA,gCACA,kCACA,8BACA,wBACA,kBACA,wBACA,sBACA,oCACA,wCACA,0CACA,mBACH,CA5BD,CAAYA,KAAAA,GAAY,MAkDxB,SAAYC,GACR,gCACA,kCACA,gBACA,YACA,YACA,wBACA,gCACA,sBACA,sBACA,kCACA,YACA,YACA,0BACA,kCACA,oBACA,YACA,WACH,CAlBD,CAAYA,KAAAA,GAAW,KA8DhB,MAAMiqB,WAAiC9mB,KAiT9C,SAAYlD,GACR,oBACA,oBACA,oBACA,oBACA,mBACH,CAND,CAAYA,KAAAA,GAAe,MA2K3B,SAAY9iF,GACR,kBACA,mBACH,CAHD,CAAYA,KAAAA,GAAgC,KAgCrC,MAAM+sG,WAA6B/mB,IAsCnC,MAAMgnB,WAA+BhnB,IAiDrC,MAAMinB,WAA+BjnB,IA6LrC,MAAMknB,WAAqBlnB,KA2QlC,SAAYjD,GACR,gCACA,6BACH,CAHD,CAAYA,KAAAA,GAAkB,MA+K9B,SAAYC,GACR,gBACA,oBACA,kBACA,aACH,CALD,CAAYA,KAAAA,GAAe,MA+P3B,SAAYC,GACR,sBACA,wBACA,aACH,CAJD,CAAYA,KAAAA,GAAmB,KAuHxB,MAAMkqB,WAAoBnnB,KAsGjC,SAAY9C,GACR,kBACA,eACH,CAHD,CAAYA,KAAAA,GAAa,KA4ClB,MAAMkqB,WAA+BpnB,KAI5C,SAAY7C,GACR,YACA,WACH,CAHD,CAAYA,KAAAA,GAAqB,MA6LjC,SAAYC,GACR,YACA,YACA,kBACA,8BACA,YACA,YACA,YACA,cACA,WACH,CAVD,CAAYA,KAAAA,GAAoB,MA8EhC,SAAYC,GACR,sBACA,sBACA,kDACA,kCACA,0CACA,uBACH,CAPD,CAAYA,KAAAA,GAAyB,KASrC,SAAYC,GACR,sBACA,uBACH,CAHD,CAAYA,KAAAA,GAAuB,MA2KnC,SAAYC,GACR,sBACA,8BACA,sBACA,0CACA,uCACH,CAND,CAAYA,KAAAA,GAAsB,KAQlC,SAAYC,GACR,sBACA,oCACA,uBACH,CAJD,CAAYA,KAAAA,GAAoB,MAwJhC,SAAYC,GACR,cACA,aACH,CAHD,CAAYA,KAAAA,GAA6B,KAKzC,SAAYC,GACR,sBACA,wBACA,kBACA,8BACA,uBACH,CAND,CAAYA,KAAAA,GAA0B,KAQtC,SAAYriF,GACR,sBACA,oBACA,0BACA,8BACA,qBACH,CAND,CAAYA,KAAAA,GAA0B,KAQtC,SAAYE,GACR,wBACA,kBACA,YACA,YACA,oBACA,YACA,YACA,qBACH,CATD,CAAYA,KAAAA,GAAiB,KAW7B,SAAYpB,GACR,4BACA,kCACA,uDACH,CAJD,CAAYA,KAAAA,GAAgC,MAmB5C,SAAYwjF,GACR,oCACA,0CACA,+DACH,CAJD,CAAYA,KAAAA,GAAsB,KAS3B,MAAM0pB,WAAqCrnB,KAIlD,SAAYpC,GACR,wBACA,8CACA,kBACA,wCACA,aACH,CAND,CAAYA,KAAAA,GAA6B,MAmFzC,SAAY/hF,GACR,4CACA,4CACA,kBACA,oBACA,uBACH,CAND,CAAYA,KAAAA,GAA2B,KAQvC,SAAYtB,GACR,4BACA,oBACA,mBACH,CAJD,CAAYA,KAAAA,GAAwB,KA4B7B,MAAM+sG,WAA+BtnB,IA8ErC,MAAMunB,WAAoCvnB,KAkBjD,SAAYnC,GACR,sDACA,8BACA,wCACA,sCACA,4DACA,oDACA,wCACA,wCACA,kCACA,sBACA,yBACH,CAZD,CAAYA,KAAAA,GAA0B,KActC,SAAYC,GACR,cACA,YACA,iBACH,CAJD,CAAYA,KAAAA,GAAwB,MAiBpC,SAAYniF,GACR,wBACA,kBACA,8BACA,oBACA,yCACH,CAND,CAAYA,KAAAA,GAAsB,KAQlC,SAAYoiF,GACR,gBACA,YACA,gBACA,oBACA,gBACA,gBACA,YACA,gBACA,gBACA,gBACA,gBACA,eACH,CAbD,CAAYA,KAAAA,GAAoB,KAsCzB,MAAMypB,WAA+BxnB,KAyM5C,SAAYhC,GACR,sBACA,wBACA,wBACA,0BACA,cACA,oBACA,kBACA,kBACA,0BACA,wBACA,wBACA,wBACA,kCACA,kCACA,kCACA,kCACA,kCACA,8BACA,8BACA,kCACA,8CACA,kDACA,kCACA,0CACA,sCACA,wCACA,kCACA,kCACA,kCACA,kCACA,8CACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,cACA,sBACA,wBACA,sBACA,sBACA,sBACA,sBACA,sBACA,0BACA,uBACH,CAjDD,CAAYA,KAAAA,GAAe,MA0J3B,SAAYC,GACR,gBACA,mBACH,CAHD,CAAYA,KAAAA,GAA0B,MA0PtC,SAAYC,GACR,sBACA,sBACA,oBACA,qBACH,CALD,CAAYA,KAAAA,GAAgB,MAqL5B,SAAYC,GACR,cACA,mBACH,CAHD,CAAYA,KAAAA,GAAsB,KA4G3B,MAAMspB,WAAoBznB,KAgEjC,SAAY5B,GACR,gBACA,4BACA,qBACH,CAJD,CAAYA,KAAAA,GAAe,MA0T3B,SAAYC,GACR,kCACA,gBACA,YACA,YACA,wBACA,oCACA,sBACA,sBACA,kCACA,0BACA,WACH,CAZD,CAAYA,KAAAA,GAAiB,MAyB7B,SAAYC,GACR,sBACA,gCACA,aACH,CAJD,CAAYA,KAAAA,GAAY,MAuIxB,SAAYC,GACR,kBACA,kBACA,2BACH,CAJD,CAAYA,KAAAA,GAAyB,MA2CrC,SAAYC,GACR,wBACA,YACA,WACH,CAJD,CAAYA,KAAAA,GAAmB,KAgCxB,MAAMkpB,WAAwB1nB,KAIrC,SAAYvB,GACR,oCACA,qCACH,CAHD,CAAYA,KAAAA,GAAmB,KAK/B,SAAYC,GACR,4BACA,wCACA,gCACA,sEACA,sCACA,oCACA,oCACA,sBACA,kCACA,0BACA,gEACA,sBACA,kCACA,0BACA,gEACA,sCACA,sBACA,yBACH,CAnBD,CAAYA,KAAAA,GAAmB,KAoHxB,MAAMipB,WAAuC3nB,KA2RpD,SAAYrB,GACR,kBACA,kBACA,qBACH,CAJD,CAAYA,KAAAA,GAAqB,MAoHjC,SAAYC,GACR,cACA,kBACA,kBACA,4CACA,wCACA,8CACA,0CACA,kCACA,4CACA,gDACA,8CACA,uCACH,CAbD,CAAYA,KAAAA,GAAU,KA+Cf,MAAMgpB,WAA+B5nB,KAK5C,SAAYnB,GACR,UACA,UACA,cACA,cACA,YACA,SACH,CAPD,CAAYA,KAAAA,GAA+B,KA4FpC,MAAMgpB,WAAgC7nB,IAoCtC,MAAM8nB,WAAwB9nB,IAiO9B,MAAM+nB,WAAsB/nB,KAkDnC,SAAYlB,GACR,sBACA,kBACA,uBACH,CAJD,CAAYA,KAAAA,GAAY,KAMxB,SAAYC,GACR,gCACA,kCACA,oDACA,wCACA,8BACA,oBACA,sBACA,sBACA,yCACH,CAVD,CAAYA,KAAAA,GAAe,KAY3B,SAAYC,GACR,4BACAA,EAAA,8BACA,qBACH,CAJD,CAAYA,KAAAA,GAAa,MAsRzB,SAAYC,GACR,cACA,oBACA,mBACH,CAJD,CAAYA,KAAAA,GAAoB,KAsBzB,MAAM+oB,WAAoBhoB,KA0MjC,SAAYd,GACR,YACA,cACA,WACH,CAJD,CAAYA,KAAAA,GAAc,KAM1B,SAAYC,GACR,sBACA,oCACA,8BACA,8BACA,sBACA,gCACA,sCACA,oCACA,gCACA,wBACA,wBACA,sBACA,aACH,CAdD,CAAYA,KAAAA,GAAiB,KAgB7B,SAAYC,GACR,YACA,YACA,cACA,aACH,CALD,CAAYA,KAAAA,GAAa,KAkGlB,MAAM6oB,WAAoBjoB,KAqGjC,SAAYX,GACR,gBACA,gBACA,gBACA,gBACA,eACH,CAND,CAAYA,KAAAA,GAAsB,MAyHlC,SAAYC,GACR,kBACA,UACA,UACA,0BACA,4BACA,qBACH,CAPD,CAAYA,KAAAA,GAAwB,MAiCpC,SAAYC,GACR,kBACA,cACA,0BACA,qBACH,CALD,CAAYA,KAAAA,GAAoB,MAmKhC,SAAYC,GACR,kCACA,gBACA,oBACA,oBACA,0BACA,cACA,wBACA,wBACA,qBACH,CAVD,CAAYA,KAAAA,GAAc,MAsI1B,SAAYC,GACR,YACA,aACH,CAHD,CAAYA,KAAAA,GAAS,KAqBd,MAAMyoB,WAA6BloB,KAyL1C,SAAYN,GACR,4BACA,4BACA,8BACA,gBACA,sBACA,qBACH,CAPD,CAAYA,KAAAA,GAA6B,KAoClC,MAAMyoB,WAAqBnoB,KAoNlC,SAAYL,GACR,sBACA,WACH,CAHD,CAAYA,KAAAA,GAAoB,KAKhC,SAAYxL,GACR,cACA,kCACA,kCACA,kCACA,sBACA,cACA,kCACA,sBACA,cACA,cACA,kCACA,sBACA,cACA,cACA,sBACA,wBACA,qBACH,CAlBD,CAAYA,KAAAA,GAAgB,MAqb5B,SAAYyL,GACR,wBACA,kCACA,oCACA,eACH,CALD,CAAYA,KAAAA,GAAuB,KAsG5B,MAAMwoB,WAAmCpoB,KAyShD,SAAYH,GACR,kBACA,sBACA,kBACA,gBACA,gBACA,gBACA,kBACA,gBACA,kBACA,kCACA,YACA,sBACA,aACH,CAdD,CAAYA,KAAAA,GAAY,MA4DxB,SAAY9nF,GACR,sBACA,kBACA,sBACA,8BACA,8BACA,qBACH,CAPD,CAAYA,KAAAA,GAAwB,MAsBpC,SAAY+nF,GACR,wBACA,cACA,YACA,YACA,4BACA,gCACA,oBACA,cACA,gBACA,4BACA,kBACA,8BACA,mBACH,CAdD,CAAYA,KAAAA,GAAuB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KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,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","sources":["../node_modules/@lcdp/offline-plugin/runtime.js","../node_modules/@seznam/compose-react-refs/composeRefs.js","../node_modules/component-emitter/index.js","../node_modules/devextreme/esm/core/config.js","../node_modules/devextreme/esm/core/errors.js","../node_modules/devextreme/esm/core/utils/console.js","../node_modules/devextreme/esm/core/utils/error.js","../node_modules/devextreme/esm/core/utils/extend.js","../node_modules/devextreme/esm/core/utils/string.js","../node_modules/devextreme/esm/core/utils/type.js","../node_modules/devextreme/esm/core/version.js","../node_modules/object-assign/index.js","../node_modules/pako/index.js","../node_modules/pako/lib/deflate.js","../node_modules/pako/lib/inflate.js","../node_modules/pako/lib/utils/common.js","../node_modules/pako/lib/utils/strings.js","../node_modules/pako/lib/zlib/adler32.js","../node_modules/pako/lib/zlib/constants.js","../node_modules/pako/lib/zlib/crc32.js","../node_modules/pako/lib/zlib/deflate.js","../node_modules/pako/lib/zlib/gzheader.js","../node_modules/pako/lib/zlib/inffast.js","../node_modules/pako/lib/zlib/inflate.js","../node_modules/pako/lib/zlib/inftrees.js","../node_modules/pako/lib/zlib/messages.js","../node_modules/pako/lib/zlib/trees.js","../node_modules/pako/lib/zlib/zstream.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/client.js","../node_modules/react-fast-compare/index.js","../node_modules/react-helmet/es/Helmet.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/sleep-promise/build/esm.mjs","../node_modules/react-select-async-paginate/es/defaultShouldLoadMore.js","../node_modules/react-select-async-paginate/es/defaultReduceOptions.js","../node_modules/react-select-async-paginate/es/useAsyncPaginateBase.js","../node_modules/use-is-mounted-ref/dist/use-is-mounted-ref.es.js","../node_modules/react-select-async-paginate/es/useAsyncPaginate.js","../node_modules/react-select-async-paginate/es/useComponents.js","../node_modules/react-select-async-paginate/es/wrapMenuList.js","../node_modules/react-select-async-paginate/es/withAsyncPaginate.js","../node_modules/react-select-async-paginate/es/index.js","../node_modules/react-side-effect/lib/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/jsx-runtime.js","../node_modules/reflect-metadata/Reflect.js","../node_modules/shallow-equal-object/lib/src/shallow-equal-object.js","AppConstants/ActivityCode.ts","AppConstants/ApiUrls.ts","AppConstants/AppConstants.ts","AppConstants/Configurations.ts","AppConstants/DateTime.ts","AppConstants/Jobs.ts","AppConstants/KeyboardKeys.ts","AppConstants/PersonFunctions.ts","AppConstants/PersonVacation.ts","AppConstants/PrincipalConfig.ts","AppConstants/QueryParams.ts","AppConstants/SignalR.ts","AppConstants/Sizes.ts","AppStore.ts","Classes/PromiseCompletion.ts","Classes/PromiseQueue.ts","Components/AircraftPlaceholder.tsx","Components/AzureAuth.tsx","Components/DateTimeControls.tsx","Components/ErrorBoundary.tsx","Components/ExplainErrorChat/ExplainErrorChat.tsx","Components/Filters/ContractFilter.tsx","Components/Filters/DatePickerFilter.tsx","Components/Filters/FilterContainer.tsx","Components/Filters/FunctionFilter.tsx","Components/Filters/InstructorFilter.tsx","Components/FormControls.tsx","Components/HoverContainer.tsx","Components/Icon.tsx","Components/Loading.tsx","Components/LoginSection.tsx","Components/Dialogs/ErrorDialog.tsx","Components/Dialogs/ConfirmationDialog.tsx","Components/Dialogs/InformationDialog.tsx","Components/Dialogs/YesNoDialog.tsx","Components/ModalBodyWithBoundary.tsx","Components/Modal.tsx","Components/HelpLink.tsx","Components/NavMenu.tsx","Components/PersonFilter.tsx","Components/License.tsx","Components/Dialogs/PersonCommentDialog.tsx","Components/PersonsListItem.tsx","Components/Pickers/ContractPicker.tsx","Components/Pickers/CrewFunctionPicker.tsx","Components/Pickers/InstructorPicker.tsx","Components/ReactSelect.tsx","Components/RosterLine.tsx","Components/ThemeSwitcher.tsx","../node_modules/react-toastify/node_modules/clsx/dist/clsx.mjs","../node_modules/react-toastify/dist/react-toastify.esm.mjs","Components/ToastNotification.tsx","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/index.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getBorders.js","../node_modules/@popperjs/core/lib/dom-utils/getDecorations.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","Components/ToolTipItem.tsx","Components/VirtualizedRoster/Stores/Range.ts","Components/VirtualizedRoster/Stores/RangeStore.ts","Components/VirtualizedRoster/VirtualizedRosterTypes.ts","Components/VirtualizedRoster/Stores/SinglePersonStore.ts","Components/VirtualizedRoster/Stores/DutyStore.ts","Components/VirtualizedRoster/Components/VirtualDateMonth.tsx","Components/VirtualizedRoster/Components/VirtualDaysList.tsx","Components/VirtualizedRoster/Components/TimeoutTimer.tsx","Components/VirtualizedRoster/Components/VirtualHorizontalExpander.tsx","Components/VirtualizedRoster/VirtualizedRoster.tsx","Components/VirtualizedRoster/SelectionStrategies/BaseRosterSelectionStrategy.ts","Components/VirtualizedRoster/SelectionStrategies/RosterSelectionStrategyDefault.ts","Components/VirtualizedRoster/SelectionStrategies/RosterSelectionStrategyMobileRangeWithGap.ts","Components/VirtualizedRoster/SelectionStrategies/RosterSelectionStrategyMobileRangeWithoutGap.ts","Components/VirtualizedRoster/SelectionStrategies/RosterSelectionStrategyMobileSingleRange.ts","Components/VirtualizedRoster/index.ts","Components/Pickers/AirbusTypePicker.tsx","Components/Filters/AirbusTypeFilter.tsx","Components/Pickers/MonthlyPicker.tsx","Components/Filters/MonthlyFilter.tsx","Components/Pickers/PartialLoadPicker.tsx","Components/Filters/PartialLoadFilter.tsx","Components/Pickers/ReleasedPicker.tsx","Components/Filters/ReleasedFilter.tsx","Components/Pickers/TypeRatingPicker.tsx","Components/Filters/TypeRatingFilter.tsx","Components/ScreenDisabled.tsx","Components/Popup/Popup.tsx","Helpers/ArrayHelper.ts","Helpers/Decorator.ts","Helpers/DevicesHelper.ts","Helpers/JWTHelper.ts","Models/WebApiModels.ts","Models/DutyFilter.ts","Models/DutyItem.ts","Models/RosterCell.ts","Pages/Home/Components/Comments.tsx","Pages/Home/Components/OperationText.tsx","Services/ActivityService.ts","Services/ApiService.ts","Services/AppReadyService.ts","Services/BaseFormModel.ts","Services/ClipboardService.ts","Stores/SwissTimeTransitionsStore.ts","Services/DateTimeService.ts","Services/DevExtremeCssService.ts","Services/DownloadService.ts","Services/DutyChangeService.ts","Services/EventEmitter.ts","Services/Extensions.ts","Services/FreelanceActivityService.ts","Services/LocalStorageService.ts","Services/PrintService.ts","Services/ScrollService.ts","Models/SignalRConnectionWrapper.ts","Services/SignalRService.ts","Services/StringSearchService.ts","Services/TitleService.ts","Services/UndoService.ts","Services/UrlService.ts","Services/Validation.ts","Services/_ServicesRegister.ts","Stores/ConfigurationStore.ts","Stores/DevInfoStore.ts","Stores/GlobalAjaxLoaderStore.ts","Stores/LoaderStore.ts","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/history/esm/history.js","Stores/NavigationStore.ts","Stores/PermissionStore.ts","Stores/PersonActivityStore.ts","../delegated 1193 from dll-reference Vendor","../delegated 2188 from dll-reference Vendor","../delegated 2329 from dll-reference Vendor","../delegated 3147 from dll-reference Vendor","../delegated 3386 from dll-reference Vendor","../delegated 3774 from dll-reference Vendor","../delegated 3935 from dll-reference Vendor","../delegated 4655 from dll-reference Vendor","../delegated 6481 from dll-reference Vendor","../delegated 6759 from dll-reference Vendor","../delegated 7062 from dll-reference Vendor","../delegated 7294 from dll-reference Vendor","../delegated 7802 from dll-reference Vendor","../delegated 9669 from dll-reference Vendor","../external var \"Vendor\"","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","Components/MaintenanceBar.tsx","Components/EasaAlertBar.tsx","Components/Layout.tsx","Components/AppContainer.tsx","Pages/NotFound/NotFound.tsx","Pages/Forbidden/Forbidden.tsx","EdwRoute.tsx","routes.tsx","Services/RequestTimelineService.tsx","App.tsx","boot.tsx","devextreme-license.ts"],"sourcesContent":["var appCacheIframe;\n\nfunction hasSW() {\n \n return 'serviceWorker' in navigator && (\n window.location.protocol === 'https:' ||\n window.location.hostname === 'localhost' ||\n window.location.hostname.indexOf('127.') === 0\n );\n \n}\n\nfunction install(options) {\n options || (options = {});\n\n \n if (hasSW()) {\n var registration = navigator.serviceWorker\n .register(\n \"/sw.js\", {\n \n \n }\n );\n\n \n\n return;\n }\n \n\n \n}\n\nfunction applyUpdate(callback, errback) {\n \n\n \n}\n\nfunction update() {\n \n if (hasSW()) {\n navigator.serviceWorker.getRegistration().then(function(registration) {\n if (!registration) return;\n return registration.update();\n });\n }\n \n\n \n}\n\n\n\nexports.install = install;\nexports.applyUpdate = applyUpdate;\nexports.update = update;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction composeRefs() {\n var refs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n refs[_i] = arguments[_i];\n }\n if (refs.length === 2) { // micro-optimize the hot path\n return composeTwoRefs(refs[0], refs[1]) || null;\n }\n var composedRef = refs.slice(1).reduce(function (semiCombinedRef, refToInclude) { return composeTwoRefs(semiCombinedRef, refToInclude); }, refs[0]);\n return composedRef || null;\n}\nexports.default = composeRefs;\nvar composedRefCache = new WeakMap();\nfunction composeTwoRefs(ref1, ref2) {\n if (ref1 && ref2) {\n var ref1Cache = composedRefCache.get(ref1) || new WeakMap();\n composedRefCache.set(ref1, ref1Cache);\n var composedRef = ref1Cache.get(ref2) || (function (instance) {\n updateRef(ref1, instance);\n updateRef(ref2, instance);\n });\n ref1Cache.set(ref2, composedRef);\n return composedRef;\n }\n if (!ref1) {\n return ref2;\n }\n else {\n return ref1;\n }\n}\nfunction updateRef(ref, instance) {\n if (typeof ref === 'function') {\n ref(instance);\n }\n else {\n ref.current = instance;\n }\n}\n//# sourceMappingURL=composeRefs.js.map","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","/**\r\n * DevExtreme (esm/core/config.js)\r\n * Version: 24.1.6\r\n * Build date: Sat Sep 14 2024\r\n *\r\n * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport errors from \"./errors\";\r\nconst config = {\r\n rtlEnabled: false,\r\n defaultCurrency: \"USD\",\r\n defaultUseCurrencyAccountingStyle: true,\r\n oDataFilterToLower: true,\r\n serverDecimalSeparator: \".\",\r\n decimalSeparator: \".\",\r\n thousandsSeparator: \",\",\r\n forceIsoDateParsing: true,\r\n wrapActionsBeforeExecute: true,\r\n useLegacyStoreResult: false,\r\n useJQuery: void 0,\r\n editorStylingMode: void 0,\r\n useLegacyVisibleIndex: false,\r\n floatingActionButtonConfig: {\r\n icon: \"add\",\r\n closeIcon: \"close\",\r\n label: \"\",\r\n position: {\r\n at: \"right bottom\",\r\n my: \"right bottom\",\r\n offset: {\r\n x: -16,\r\n y: -16\r\n }\r\n },\r\n maxSpeedDialActionCount: 5,\r\n shading: false,\r\n direction: \"auto\"\r\n },\r\n optionsParser: optionsString => {\r\n if (\"{\" !== optionsString.trim().charAt(0)) {\r\n optionsString = \"{\" + optionsString + \"}\"\r\n }\r\n try {\r\n return JSON.parse(optionsString)\r\n } catch (ex) {\r\n try {\r\n return JSON.parse(normalizeToJSONString(optionsString))\r\n } catch (exNormalize) {\r\n throw errors.Error(\"E3018\", ex, optionsString)\r\n }\r\n }\r\n }\r\n};\r\nconst normalizeToJSONString = optionsString => optionsString.replace(/'/g, '\"').replace(/,\\s*([\\]}])/g, \"$1\").replace(/([{,])\\s*([^\":\\s]+)\\s*:/g, '$1\"$2\":');\r\nconst deprecatedFields = [\"decimalSeparator\", \"thousandsSeparator\"];\r\nconst configMethod = function() {\r\n if (!arguments.length) {\r\n return config\r\n }\r\n const newConfig = arguments.length <= 0 ? void 0 : arguments[0];\r\n deprecatedFields.forEach((deprecatedField => {\r\n if (newConfig[deprecatedField]) {\r\n const message = `Now, the ${deprecatedField} is selected based on the specified locale.`;\r\n errors.log(\"W0003\", \"config\", deprecatedField, \"19.2\", message)\r\n }\r\n }));\r\n extend(config, newConfig)\r\n};\r\nif (\"undefined\" !== typeof DevExpress && DevExpress.config) {\r\n configMethod(DevExpress.config)\r\n}\r\nexport default configMethod;\r\n","/**\r\n * DevExtreme (esm/core/errors.js)\r\n * Version: 24.1.6\r\n * Build date: Sat Sep 14 2024\r\n *\r\n * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errorUtils from \"./utils/error\";\r\nexport default errorUtils({\r\n E0001: \"Method is not implemented\",\r\n E0002: \"Member name collision: {0}\",\r\n E0003: \"A class must be instantiated using the 'new' keyword\",\r\n E0004: \"The NAME property of the component is not specified\",\r\n E0005: \"Unknown device\",\r\n E0006: \"Unknown endpoint key is requested\",\r\n E0007: \"'Invalidate' method is called outside the update transaction\",\r\n E0008: \"Type of the option name is not appropriate to create an action\",\r\n E0009: \"Component '{0}' has not been initialized for an element\",\r\n E0010: \"Animation configuration with the '{0}' type requires '{1}' configuration as {2}\",\r\n E0011: \"Unknown animation type '{0}'\",\r\n E0012: \"jQuery version is too old. Please upgrade jQuery to 1.10.0 or later\",\r\n E0013: \"KnockoutJS version is too old. Please upgrade KnockoutJS to 2.3.0 or later\",\r\n E0014: \"The 'release' method shouldn't be called for an unlocked Lock object\",\r\n E0015: \"Queued task returned an unexpected result\",\r\n E0017: \"Event namespace is not defined\",\r\n E0018: \"DevExpress.ui.DevExpressPopup widget is required\",\r\n E0020: \"Template engine '{0}' is not supported\",\r\n E0021: \"Unknown theme is set: {0}\",\r\n E0022: \"LINK[rel=DevExpress-theme] tags must go before DevExpress included scripts\",\r\n E0023: \"Template name is not specified\",\r\n E0024: \"DevExtreme bundle already included\",\r\n E0025: \"Unexpected argument type\",\r\n E0100: \"Unknown validation type is detected\",\r\n E0101: \"Misconfigured range validation rule is detected\",\r\n E0102: \"Misconfigured comparison validation rule is detected\",\r\n E0103: \"validationCallback of an asynchronous rule should return a jQuery or a native promise\",\r\n E0110: \"Unknown validation group is detected\",\r\n E0120: \"Adapter for a DevExpressValidator component cannot be configured\",\r\n E0121: \"The 'customItem' parameter of the 'onCustomItemCreating' function is empty or contains invalid data. Assign a custom object or a Promise that is resolved after the item is created.\",\r\n W0000: \"'{0}' is deprecated in {1}. {2}\",\r\n W0001: \"{0} - '{1}' option is deprecated in {2}. {3}\",\r\n W0002: \"{0} - '{1}' method is deprecated in {2}. {3}\",\r\n W0003: \"{0} - '{1}' property is deprecated in {2}. {3}\",\r\n W0004: \"Timeout for theme loading is over: {0}\",\r\n W0005: \"'{0}' event is deprecated in {1}. {2}\",\r\n W0006: \"Invalid recurrence rule: '{0}'\",\r\n W0007: \"'{0}' Globalize culture is not defined\",\r\n W0008: \"Invalid view name: '{0}'\",\r\n W0009: \"Invalid time zone name: '{0}'\",\r\n W0010: \"{0} is deprecated in {1}. {2}\",\r\n W0011: \"Number parsing is invoked while the parser is not defined\",\r\n W0012: \"Date parsing is invoked while the parser is not defined\",\r\n W0013: \"'{0}' file is deprecated in {1}. {2}\",\r\n W0014: \"{0} - '{1}' type is deprecated in {2}. {3}\",\r\n W0015: \"Instead of returning a value from the '{0}' function, write it into the '{1}' field of the function's parameter.\",\r\n W0016: 'The \"{0}\" option does not accept the \"{1}\" value since v{2}. {3}.',\r\n W0017: 'Setting the \"{0}\" property with a function is deprecated since v21.2',\r\n W0018: 'Setting the \"position\" property with a function is deprecated since v21.2',\r\n W0019: \"DevExtreme: Unable to Locate a Valid License Key.\\n\\nIf you are using a 30-day trial version of DevExtreme, you must uninstall all copies of DevExtreme once your 30-day trial period expires. For terms and conditions that govern use of DevExtreme UI components/libraries, please refer to the DevExtreme End User License Agreement: https://js.devexpress.com/EULAs/DevExtremeComplete.\\n\\nTo use DevExtreme in a commercial project, you must purchase a license. For pricing/licensing options, please visit: https://js.devexpress.com/Buy.\\n\\nIf you have licensing-related questions or need help with a purchase, please email clientservices@devexpress.com.\\n\\n\",\r\n W0020: \"DevExtreme: License Key Has Expired.\\n\\nA mismatch exists between the license key used and the DevExtreme version referenced in this project.\\n\\nTo proceed, you can:\\n\\u2022 use a version of DevExtreme linked to your license key: https://www.devexpress.com/ClientCenter/DownloadManager\\n\\u2022 renew your DevExpress Subscription: https://www.devexpress.com/buy/renew (once you renew your subscription, you will be entitled to product updates and support service as defined in the DevExtreme End User License Agreement)\\n\\nIf you have licensing-related questions or need help with a renewal, please email clientservices@devexpress.com.\\n\\n\",\r\n W0021: \"DevExtreme: License Key Verification Has Failed.\\n\\nTo verify your DevExtreme license, make certain to specify a correct key in the GlobalConfig. If you continue to encounter this error, please visit https://www.devexpress.com/ClientCenter/DownloadManager to obtain a valid license key.\\n\\nIf you have a valid license and this problem persists, please submit a support ticket via the DevExpress Support Center. We will be happy to follow-up: https://supportcenter.devexpress.com/ticket/create.\\n\\n\",\r\n W0022: \"DevExtreme: Pre-release software. Not suitable for commercial use.\\n\\nPre-release software may contain deficiencies and as such, should not be considered for use or integrated in any mission critical application.\\n\\n\",\r\n W0023: \"DevExtreme: the following 'devextreme' package version does not match versions of other DevExpress products used in this application:\\n\\n{0}\\n\\nInteroperability between different versions of the products listed herein cannot be guaranteed.\\n\\n\"\r\n});\r\n","/**\r\n * DevExtreme (esm/core/utils/console.js)\r\n * Version: 24.1.6\r\n * Build date: Sat Sep 14 2024\r\n *\r\n * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction\r\n} from \"./type\";\r\nconst noop = function() {};\r\nconst getConsoleMethod = function(method) {\r\n if (\"undefined\" === typeof console || !isFunction(console[method])) {\r\n return noop\r\n }\r\n return console[method].bind(console)\r\n};\r\nexport const logger = {\r\n log: getConsoleMethod(\"log\"),\r\n info: getConsoleMethod(\"info\"),\r\n warn: getConsoleMethod(\"warn\"),\r\n error: getConsoleMethod(\"error\")\r\n};\r\nexport const debug = function() {\r\n function assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message)\r\n }\r\n }\r\n return {\r\n assert: assert,\r\n assertParam: function(parameter, message) {\r\n assert(null !== parameter && void 0 !== parameter, message)\r\n }\r\n }\r\n}();\r\n","/**\r\n * DevExtreme (esm/core/utils/error.js)\r\n * Version: 24.1.6\r\n * Build date: Sat Sep 14 2024\r\n *\r\n * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"./extend\";\r\nimport {\r\n logger\r\n} from \"./console\";\r\nimport {\r\n format\r\n} from \"./string\";\r\nimport {\r\n version\r\n} from \"../version\";\r\nconst ERROR_URL = \"https://js.devexpress.com/error/\" + version.split(\".\").slice(0, 2).join(\"_\") + \"/\";\r\nexport default function(baseErrors, errors) {\r\n const exports = {\r\n ERROR_MESSAGES: extend(errors, baseErrors),\r\n Error: function() {\r\n return function(args) {\r\n const id = args[0];\r\n args = args.slice(1);\r\n const details = formatDetails(id, args);\r\n const url = getErrorUrl(id);\r\n const message = formatMessage(id, details);\r\n return extend(new Error(message), {\r\n __id: id,\r\n __details: details,\r\n url: url\r\n })\r\n }([].slice.call(arguments))\r\n },\r\n log: function(id) {\r\n let method = \"log\";\r\n if (/^E\\d+$/.test(id)) {\r\n method = \"error\"\r\n } else if (/^W\\d+$/.test(id)) {\r\n method = \"warn\"\r\n }\r\n logger[method](\"log\" === method ? id : function(args) {\r\n const id = args[0];\r\n args = args.slice(1);\r\n return formatMessage(id, formatDetails(id, args))\r\n }([].slice.call(arguments)))\r\n }\r\n };\r\n\r\n function formatDetails(id, args) {\r\n args = [exports.ERROR_MESSAGES[id]].concat(args);\r\n return format.apply(this, args).replace(/\\.*\\s*?$/, \"\")\r\n }\r\n\r\n function formatMessage(id, details) {\r\n const kind = null !== id && void 0 !== id && id.startsWith(\"W\") ? \"warning\" : \"error\";\r\n return format.apply(this, [\"{0} - {1}.\\n\\nFor additional information on this {2} message, see: {3}\", id, details, kind, getErrorUrl(id)])\r\n }\r\n\r\n function getErrorUrl(id) {\r\n return ERROR_URL + id\r\n }\r\n return exports\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/extend.js)\r\n * Version: 24.1.6\r\n * Build date: Sat Sep 14 2024\r\n *\r\n * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isPlainObject\r\n} from \"./type\";\r\nexport const extendFromObject = function(target, source, overrideExistingValues) {\r\n target = target || {};\r\n for (const prop in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, prop)) {\r\n const value = source[prop];\r\n if (!(prop in target) || overrideExistingValues) {\r\n target[prop] = value\r\n }\r\n }\r\n }\r\n return target\r\n};\r\nexport const extend = function(target) {\r\n target = target || {};\r\n let i = 1;\r\n let deep = false;\r\n if (\"boolean\" === typeof target) {\r\n deep = target;\r\n target = arguments[1] || {};\r\n i++\r\n }\r\n for (; i < arguments.length; i++) {\r\n const source = arguments[i];\r\n if (null == source) {\r\n continue\r\n }\r\n for (const key in source) {\r\n const targetValue = target[key];\r\n const sourceValue = source[key];\r\n let sourceValueIsArray = false;\r\n let clone;\r\n if (\"__proto__\" === key || \"constructor\" === key || target === sourceValue) {\r\n continue\r\n }\r\n if (deep && sourceValue && (isPlainObject(sourceValue) || (sourceValueIsArray = Array.isArray(sourceValue)))) {\r\n if (sourceValueIsArray) {\r\n clone = targetValue && Array.isArray(targetValue) ? targetValue : []\r\n } else {\r\n clone = targetValue && isPlainObject(targetValue) ? targetValue : {}\r\n }\r\n target[key] = extend(deep, clone, sourceValue)\r\n } else if (void 0 !== sourceValue) {\r\n target[key] = sourceValue\r\n }\r\n }\r\n }\r\n return target\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/string.js)\r\n * Version: 24.1.6\r\n * Build date: Sat Sep 14 2024\r\n *\r\n * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction,\r\n isString\r\n} from \"./type\";\r\nexport const encodeHtml = function() {\r\n const encodeRegExp = [new RegExp(\"&\", \"g\"), new RegExp('\"', \"g\"), new RegExp(\"'\", \"g\"), new RegExp(\"<\", \"g\"), new RegExp(\">\", \"g\")];\r\n return function(str) {\r\n return String(str).replace(encodeRegExp[0], \"&\").replace(encodeRegExp[1], \""\").replace(encodeRegExp[2], \"'\").replace(encodeRegExp[3], \"<\").replace(encodeRegExp[4], \">\")\r\n }\r\n}();\r\nconst splitQuad = function(raw) {\r\n switch (typeof raw) {\r\n case \"string\":\r\n return raw.split(/\\s+/, 4);\r\n case \"object\":\r\n return [raw.x || raw.h || raw.left, raw.y || raw.v || raw.top, raw.x || raw.h || raw.right, raw.y || raw.v || raw.bottom];\r\n case \"number\":\r\n return [raw];\r\n default:\r\n return raw\r\n }\r\n};\r\nexport const quadToObject = function(raw) {\r\n const quad = splitQuad(raw);\r\n let left = parseInt(quad && quad[0], 10);\r\n let top = parseInt(quad && quad[1], 10);\r\n let right = parseInt(quad && quad[2], 10);\r\n let bottom = parseInt(quad && quad[3], 10);\r\n if (!isFinite(left)) {\r\n left = 0\r\n }\r\n if (!isFinite(top)) {\r\n top = left\r\n }\r\n if (!isFinite(right)) {\r\n right = left\r\n }\r\n if (!isFinite(bottom)) {\r\n bottom = top\r\n }\r\n return {\r\n top: top,\r\n right: right,\r\n bottom: bottom,\r\n left: left\r\n }\r\n};\r\nexport function format(template) {\r\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\r\n values[_key - 1] = arguments[_key]\r\n }\r\n if (isFunction(template)) {\r\n return template(...values)\r\n }\r\n values.forEach(((value, index) => {\r\n if (isString(value)) {\r\n value = value.replace(/\\$/g, \"$$$$\")\r\n }\r\n const placeholderReg = new RegExp(\"\\\\{\" + index + \"\\\\}\", \"gm\");\r\n template = template.replace(placeholderReg, value)\r\n }));\r\n return template\r\n}\r\nexport const isEmpty = function() {\r\n const SPACE_REGEXP = /\\s/g;\r\n return function(text) {\r\n return !text || !text.replace(SPACE_REGEXP, \"\")\r\n }\r\n}();\r\n","/**\r\n * DevExtreme (esm/core/utils/type.js)\r\n * Version: 24.1.6\r\n * Build date: Sat Sep 14 2024\r\n *\r\n * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nconst types = {\r\n \"[object Array]\": \"array\",\r\n \"[object Date]\": \"date\",\r\n \"[object Object]\": \"object\",\r\n \"[object String]\": \"string\"\r\n};\r\nconst type = function(object) {\r\n if (null === object) {\r\n return \"null\"\r\n }\r\n const typeOfObject = Object.prototype.toString.call(object);\r\n return \"object\" === typeof object ? types[typeOfObject] || \"object\" : typeof object\r\n};\r\nconst isBoolean = function(object) {\r\n return \"boolean\" === typeof object\r\n};\r\nconst isExponential = function(value) {\r\n return isNumeric(value) && -1 !== value.toString().indexOf(\"e\")\r\n};\r\nconst isDate = function(object) {\r\n return \"date\" === type(object)\r\n};\r\nconst isDefined = function(object) {\r\n return null !== object && void 0 !== object\r\n};\r\nconst isFunction = function(object) {\r\n return \"function\" === typeof object\r\n};\r\nconst isString = function(object) {\r\n return \"string\" === typeof object\r\n};\r\nconst isNumeric = function(object) {\r\n return \"number\" === typeof object && isFinite(object) || !isNaN(object - parseFloat(object))\r\n};\r\nconst isObject = function(object) {\r\n return \"object\" === type(object)\r\n};\r\nconst isEmptyObject = function(object) {\r\n let property;\r\n for (property in object) {\r\n return false\r\n }\r\n return true\r\n};\r\nconst isPlainObject = function(object) {\r\n if (!object || \"object\" !== type(object)) {\r\n return false\r\n }\r\n const proto = Object.getPrototypeOf(object);\r\n if (!proto) {\r\n return true\r\n }\r\n const ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\r\n return \"function\" === typeof ctor && Object.toString.call(ctor) === Object.toString.call(Object)\r\n};\r\nconst isPrimitive = function(value) {\r\n return -1 === [\"object\", \"array\", \"function\"].indexOf(type(value))\r\n};\r\nconst isWindow = function(object) {\r\n return null != object && object === object.window\r\n};\r\nconst isRenderer = function(object) {\r\n return !!object && !!(object.jquery || object.dxRenderer)\r\n};\r\nconst isPromise = function(object) {\r\n return !!object && isFunction(object.then)\r\n};\r\nconst isDeferred = function(object) {\r\n return !!object && isFunction(object.done) && isFunction(object.fail)\r\n};\r\nconst isEvent = function(object) {\r\n return !!(object && object.preventDefault)\r\n};\r\nexport {\r\n isBoolean,\r\n isExponential,\r\n isDate,\r\n isDefined,\r\n isFunction,\r\n isString,\r\n isNumeric,\r\n isObject,\r\n isEmptyObject,\r\n isPlainObject,\r\n isPrimitive,\r\n isWindow,\r\n isRenderer,\r\n isPromise,\r\n isDeferred,\r\n type,\r\n isEvent\r\n};\r\n","/**\r\n * DevExtreme (esm/core/version.js)\r\n * Version: 24.1.6\r\n * Build date: Sat Sep 14 2024\r\n *\r\n * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport const version = \"24.1.6\";\r\nexport const fullVersion = \"24.1.6\";\r\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = require('./lib/utils/common').assign;\n\nvar deflate = require('./lib/deflate');\nvar inflate = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n","'use strict';\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","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\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","'use strict';\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","'use strict';\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","'use strict';\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 = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\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","'use strict';\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 GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\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","'use strict';\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 = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\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","'use strict';\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 = require('../utils/common');\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","'use strict';\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","'use strict';\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 = require('../utils/common');\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< 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","'use strict';\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 * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function 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 }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\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}","var e=setTimeout;function t(t,n){var u=n.useCachedSetTimeout?e:setTimeout;return new Promise((function(e){u(e,t)}))}function n(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},u=n.useCachedSetTimeout,r=t(e,{useCachedSetTimeout:u});function o(e){return r.then((function(){return e}))}return o.then=function(){return r.then.apply(r,arguments)},o.catch=Promise.resolve().catch,o}export default n;\n","var AVAILABLE_DELTA = 10;\nexport var defaultShouldLoadMore = function defaultShouldLoadMore(scrollHeight, clientHeight, scrollTop) {\n var bottomBorder = scrollHeight - clientHeight - AVAILABLE_DELTA;\n return bottomBorder < scrollTop;\n};","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nexport var defaultReduceOptions = function defaultReduceOptions(prevOptions, loadedOptions) {\n return [].concat(_toConsumableArray(prevOptions), _toConsumableArray(loadedOptions));\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _toPropertyKey from \"@babel/runtime/helpers/toPropertyKey\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport sleep from 'sleep-promise';\nimport useIsMountedRef from 'use-is-mounted-ref';\nimport { defaultShouldLoadMore } from './defaultShouldLoadMore';\nimport { defaultReduceOptions } from './defaultReduceOptions';\nvar errorText = '[react-select-async-paginate] response of \"loadOptions\" should be an object with \"options\" prop, which contains array of options.';\nexport var validateResponse = function validateResponse(console, response) {\n if (!response) {\n console.error(errorText, 'Received:', response);\n throw new Error(errorText);\n }\n\n if (!Array.isArray(response.options)) {\n console.error(errorText, 'Received:', response);\n throw new Error(errorText);\n }\n};\nexport var getInitialOptionsCache = function getInitialOptionsCache(_ref) {\n var options = _ref.options,\n defaultOptions = _ref.defaultOptions,\n additional = _ref.additional,\n defaultAdditional = _ref.defaultAdditional;\n var initialOptions = defaultOptions === true ? null : defaultOptions instanceof Array ? defaultOptions : options;\n\n if (initialOptions) {\n return {\n '': {\n isFirstLoad: false,\n isLoading: false,\n options: initialOptions,\n hasMore: true,\n additional: defaultAdditional || additional\n }\n };\n }\n\n return {};\n};\nexport var getInitialCache = function getInitialCache(params) {\n return {\n isFirstLoad: true,\n options: [],\n hasMore: true,\n isLoading: false,\n additional: params.additional\n };\n};\nexport var requestOptions = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(caller, paramsRef, optionsCacheRef, debounceTimeout, sleepParam, setOptionsCache, validateResponseParam, reduceOptions) {\n var currentInputValue, isCacheEmpty, currentOptions, newInputValue, response, hasError, loadOptions, _response, options, hasMore, newAdditional;\n\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n currentInputValue = paramsRef.current.inputValue;\n isCacheEmpty = !optionsCacheRef.current[currentInputValue];\n currentOptions = isCacheEmpty ? getInitialCache(paramsRef.current) : optionsCacheRef.current[currentInputValue];\n\n if (!(currentOptions.isLoading || !currentOptions.hasMore)) {\n _context.next = 5;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 5:\n setOptionsCache(function (prevOptionsCache) {\n return _objectSpread(_objectSpread({}, prevOptionsCache), {}, _defineProperty({}, currentInputValue, _objectSpread(_objectSpread({}, currentOptions), {}, {\n isLoading: true\n })));\n });\n\n if (!(debounceTimeout > 0 && caller === 'input-change')) {\n _context.next = 13;\n break;\n }\n\n _context.next = 9;\n return sleepParam(debounceTimeout);\n\n case 9:\n newInputValue = paramsRef.current.inputValue;\n\n if (!(currentInputValue !== newInputValue)) {\n _context.next = 13;\n break;\n }\n\n setOptionsCache(function (prevOptionsCache) {\n if (isCacheEmpty) {\n var itemForDelete = prevOptionsCache[currentInputValue],\n restCache = _objectWithoutProperties(prevOptionsCache, [currentInputValue].map(_toPropertyKey));\n\n return restCache;\n }\n\n return _objectSpread(_objectSpread({}, prevOptionsCache), {}, _defineProperty({}, currentInputValue, _objectSpread(_objectSpread({}, currentOptions), {}, {\n isLoading: false\n })));\n });\n return _context.abrupt(\"return\");\n\n case 13:\n _context.prev = 13;\n loadOptions = paramsRef.current.loadOptions;\n _context.next = 17;\n return loadOptions(currentInputValue, currentOptions.options, currentOptions.additional);\n\n case 17:\n response = _context.sent;\n hasError = false;\n _context.next = 24;\n break;\n\n case 21:\n _context.prev = 21;\n _context.t0 = _context[\"catch\"](13);\n hasError = true;\n\n case 24:\n if (!hasError) {\n _context.next = 27;\n break;\n }\n\n setOptionsCache(function (prevOptionsCache) {\n return _objectSpread(_objectSpread({}, prevOptionsCache), {}, _defineProperty({}, currentInputValue, _objectSpread(_objectSpread({}, currentOptions), {}, {\n isLoading: false\n })));\n });\n return _context.abrupt(\"return\");\n\n case 27:\n validateResponseParam(console, response);\n _response = response, options = _response.options, hasMore = _response.hasMore; // eslint-disable-next-line no-prototype-builtins\n\n newAdditional = response.hasOwnProperty('additional') ? response.additional : currentOptions.additional;\n setOptionsCache(function (prevOptionsCache) {\n return _objectSpread(_objectSpread({}, prevOptionsCache), {}, _defineProperty({}, currentInputValue, _objectSpread(_objectSpread({}, currentOptions), {}, {\n options: reduceOptions(currentOptions.options, options, newAdditional),\n hasMore: !!hasMore,\n isLoading: false,\n isFirstLoad: false,\n additional: newAdditional\n })));\n });\n\n case 31:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[13, 21]]);\n }));\n\n return function requestOptions(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8) {\n return _ref2.apply(this, arguments);\n };\n}();\nexport var increaseStateId = function increaseStateId(prevStateId) {\n return prevStateId + 1;\n};\nexport var useAsyncPaginateBasePure = function useAsyncPaginateBasePure(useRefParam, useStateParam, useEffectParam, useCallbackParam, validateResponseParam, getInitialOptionsCacheParam, requestOptionsParam, params) {\n var deps = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : [];\n var defaultOptions = params.defaultOptions,\n _params$loadOptionsOn = params.loadOptionsOnMenuOpen,\n loadOptionsOnMenuOpen = _params$loadOptionsOn === void 0 ? true : _params$loadOptionsOn,\n _params$debounceTimeo = params.debounceTimeout,\n debounceTimeout = _params$debounceTimeo === void 0 ? 0 : _params$debounceTimeo,\n inputValue = params.inputValue,\n menuIsOpen = params.menuIsOpen,\n _params$filterOption = params.filterOption,\n filterOption = _params$filterOption === void 0 ? null : _params$filterOption,\n _params$reduceOptions = params.reduceOptions,\n reduceOptions = _params$reduceOptions === void 0 ? defaultReduceOptions : _params$reduceOptions,\n _params$shouldLoadMor = params.shouldLoadMore,\n shouldLoadMore = _params$shouldLoadMor === void 0 ? defaultShouldLoadMore : _params$shouldLoadMor;\n var isMountedRef = useIsMountedRef();\n var isInitRef = useRefParam(true);\n var paramsRef = useRefParam(params);\n paramsRef.current = params;\n var setStateId = useStateParam(0)[1];\n var optionsCacheRef = useRefParam(null);\n\n if (optionsCacheRef.current === null) {\n optionsCacheRef.current = getInitialOptionsCacheParam(params);\n }\n\n var callRequestOptions = useCallbackParam(function (caller) {\n requestOptionsParam(caller, paramsRef, optionsCacheRef, debounceTimeout, sleep, function (reduceState) {\n optionsCacheRef.current = reduceState(optionsCacheRef.current);\n\n if (isMountedRef.current) {\n setStateId(increaseStateId);\n }\n }, validateResponseParam, reduceOptions);\n }, [debounceTimeout]);\n var handleScrolledToBottom = useCallbackParam(function () {\n var currentInputValue = paramsRef.current.inputValue;\n var currentOptions = optionsCacheRef.current[currentInputValue];\n\n if (currentOptions) {\n callRequestOptions('menu-scroll');\n }\n }, [callRequestOptions]);\n useEffectParam(function () {\n if (isInitRef.current) {\n isInitRef.current = false;\n } else {\n optionsCacheRef.current = {};\n setStateId(increaseStateId);\n }\n\n if (defaultOptions === true) {\n callRequestOptions('autoload');\n }\n }, deps);\n useEffectParam(function () {\n if (menuIsOpen && !optionsCacheRef.current[inputValue]) {\n callRequestOptions('input-change');\n }\n }, [inputValue]);\n useEffectParam(function () {\n if (menuIsOpen && !optionsCacheRef.current[''] && loadOptionsOnMenuOpen) {\n callRequestOptions('menu-toggle');\n }\n }, [menuIsOpen]);\n var currentOptions = optionsCacheRef.current[inputValue] || getInitialCache(params);\n return {\n handleScrolledToBottom: handleScrolledToBottom,\n shouldLoadMore: shouldLoadMore,\n filterOption: filterOption,\n isLoading: currentOptions.isLoading,\n isFirstLoad: currentOptions.isFirstLoad,\n options: currentOptions.options\n };\n};\nexport var useAsyncPaginateBase = function useAsyncPaginateBase(params) {\n var deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return useAsyncPaginateBasePure(useRef, useState, useEffect, useCallback, validateResponse, getInitialOptionsCache, requestOptions, params, deps);\n};","import { useRef, useEffect } from 'react';\n\nfunction useIsMountedRef() {\r\n var isMountedRef = useRef(false);\r\n useEffect(function () {\r\n isMountedRef.current = true;\r\n return function () {\r\n isMountedRef.current = false;\r\n };\r\n }, []);\r\n return isMountedRef;\r\n}\n\nexport { useIsMountedRef as default };\n//# sourceMappingURL=use-is-mounted-ref.es.js.map\n","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { useState, useCallback } from 'react';\nimport { useAsyncPaginateBase } from './useAsyncPaginateBase';\nexport var useAsyncPaginatePure = function useAsyncPaginatePure(useStateParam, useCallbackParam, useAsyncPaginateBaseParam, params) {\n var deps = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var inputValueParam = params.inputValue,\n menuIsOpenParam = params.menuIsOpen,\n defaultInputValueParam = params.defaultInputValue,\n defaultMenuIsOpenParam = params.defaultMenuIsOpen,\n onInputChangeParam = params.onInputChange,\n onMenuCloseParam = params.onMenuClose,\n onMenuOpenParam = params.onMenuOpen;\n\n var _useStateParam = useStateParam(defaultInputValueParam || ''),\n _useStateParam2 = _slicedToArray(_useStateParam, 2),\n inputValueState = _useStateParam2[0],\n setInputValue = _useStateParam2[1];\n\n var _useStateParam3 = useStateParam(!!defaultMenuIsOpenParam),\n _useStateParam4 = _slicedToArray(_useStateParam3, 2),\n menuIsOpenState = _useStateParam4[0],\n setMenuIsOpen = _useStateParam4[1];\n\n var inputValue = typeof inputValueParam === 'string' ? inputValueParam : inputValueState;\n var menuIsOpen = typeof menuIsOpenParam === 'boolean' ? menuIsOpenParam : menuIsOpenState;\n var onInputChange = useCallbackParam(function (nextInputValue, actionMeta) {\n if (onInputChangeParam) {\n onInputChangeParam(nextInputValue, actionMeta);\n }\n\n setInputValue(nextInputValue);\n }, [onInputChangeParam]);\n var onMenuClose = useCallbackParam(function () {\n if (onMenuCloseParam) {\n onMenuCloseParam();\n }\n\n setMenuIsOpen(false);\n }, [onMenuCloseParam]);\n var onMenuOpen = useCallbackParam(function () {\n if (onMenuOpenParam) {\n onMenuOpenParam();\n }\n\n setMenuIsOpen(true);\n }, [onMenuOpenParam]);\n var baseResult = useAsyncPaginateBaseParam(_objectSpread(_objectSpread({}, params), {}, {\n inputValue: inputValue,\n menuIsOpen: menuIsOpen\n }), deps);\n return _objectSpread(_objectSpread({}, baseResult), {}, {\n inputValue: inputValue,\n menuIsOpen: menuIsOpen,\n onInputChange: onInputChange,\n onMenuClose: onMenuClose,\n onMenuOpen: onMenuOpen\n });\n};\nexport var useAsyncPaginate = function useAsyncPaginate(params) {\n var deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return useAsyncPaginatePure(useState, useCallback, useAsyncPaginateBase, params, deps);\n};","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport { useMemo } from 'react';\nimport { components as defaultComponents } from 'react-select';\nimport { wrapMenuList } from './wrapMenuList';\nexport var MenuList = wrapMenuList(defaultComponents.MenuList);\nexport var useComponentsPure = function useComponentsPure(useMemoParam, components) {\n return useMemoParam(function () {\n return _objectSpread({\n MenuList: MenuList\n }, components);\n }, [components]);\n};\nexport var useComponents = function useComponents(components) {\n return useComponentsPure(useMemo, components);\n};","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport { useEffect, useRef, useCallback } from 'react';\nimport composeRefs from '@seznam/compose-react-refs';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var CHECK_TIMEOUT = 300;\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport var wrapMenuList = function wrapMenuList(MenuList) {\n function WrappedMenuList(props) {\n var _props$selectProps = props.selectProps,\n handleScrolledToBottom = _props$selectProps.handleScrolledToBottom,\n shouldLoadMore = _props$selectProps.shouldLoadMore,\n innerRef = props.innerRef,\n useEffectProp = props.useEffect,\n useRefProp = props.useRef,\n useCallbackProp = props.useCallback,\n setTimeoutProp = props.setTimeout,\n clearTimeoutProp = props.clearTimeout;\n var checkTimeoutRef = useRefProp(null);\n var menuListRef = useRefProp(null);\n var shouldHandle = useCallbackProp(function () {\n var el = menuListRef.current; // menu not rendered\n\n if (!el) {\n return false;\n }\n\n var scrollTop = el.scrollTop,\n scrollHeight = el.scrollHeight,\n clientHeight = el.clientHeight;\n return shouldLoadMore(scrollHeight, clientHeight, scrollTop);\n }, [shouldLoadMore]);\n var checkAndHandle = useCallbackProp(function () {\n if (shouldHandle()) {\n if (handleScrolledToBottom) {\n handleScrolledToBottom();\n }\n }\n }, [shouldHandle, handleScrolledToBottom]);\n var setCheckAndHandleTimeout = useCallbackProp(function () {\n checkAndHandle();\n checkTimeoutRef.current = setTimeoutProp(setCheckAndHandleTimeout, CHECK_TIMEOUT);\n }, [checkAndHandle]);\n useEffectProp(function () {\n setCheckAndHandleTimeout();\n return function () {\n if (checkTimeoutRef.current) {\n clearTimeoutProp(checkTimeoutRef.current);\n }\n };\n }, []);\n return /*#__PURE__*/_jsx(MenuList, _objectSpread(_objectSpread({}, props), {}, {\n innerRef: composeRefs(innerRef, menuListRef)\n }));\n }\n\n WrappedMenuList.defaultProps = {\n useEffect: useEffect,\n useRef: useRef,\n useCallback: useCallback,\n setTimeout: setTimeout,\n clearTimeout: clearTimeout\n };\n return WrappedMenuList;\n};","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"components\", \"selectRef\", \"isLoading\", \"useComponents\", \"useAsyncPaginate\", \"cacheUniqs\"];\nimport { useAsyncPaginate } from './useAsyncPaginate';\nimport { useComponents } from './useComponents';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function withAsyncPaginate( // eslint-disable-next-line @typescript-eslint/naming-convention\nSelectComponent) {\n function WithAsyncPaginate(props) {\n var components = props.components,\n selectRef = props.selectRef,\n isLoadingProp = props.isLoading,\n useComponentsProp = props.useComponents,\n useAsyncPaginateProp = props.useAsyncPaginate,\n cacheUniqs = props.cacheUniqs,\n rest = _objectWithoutProperties(props, _excluded);\n\n var asyncPaginateProps = useAsyncPaginateProp(rest, cacheUniqs);\n var processedComponents = useComponentsProp(components);\n var isLoading = typeof isLoadingProp === 'boolean' ? isLoadingProp : asyncPaginateProps.isLoading;\n return /*#__PURE__*/_jsx(SelectComponent, _objectSpread(_objectSpread(_objectSpread({}, props), asyncPaginateProps), {}, {\n isLoading: isLoading,\n components: processedComponents,\n ref: selectRef\n }));\n }\n\n WithAsyncPaginate.defaultProps = {\n selectRef: null,\n cacheUniqs: [],\n components: {},\n useComponents: useComponents,\n useAsyncPaginate: useAsyncPaginate\n };\n return WithAsyncPaginate;\n}","import Select from 'react-select';\nimport { withAsyncPaginate } from './withAsyncPaginate';\nexport { wrapMenuList } from './wrapMenuList';\nexport { reduceGroupedOptions } from './reduceGroupedOptions';\nexport { withAsyncPaginate };\nexport { useAsyncPaginateBase } from './useAsyncPaginateBase';\nexport { useAsyncPaginate } from './useAsyncPaginate';\nexport { useComponents } from './useComponents';\nexport var AsyncPaginate = withAsyncPaginate(Select);\nexport * from './types';","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\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\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// MIT © 2017 azu\nvar hasOwn = Object.prototype.hasOwnProperty;\n// Object.is ponyfill\nexports.is = function (x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n }\n else {\n return x !== x && y !== y;\n }\n};\n/**\n * Return true, if `objectA` is shallow equal to `objectB`.\n * Pass Custom equality function to `customEqual`.\n * Default equality is `Object.is`\n *\n * Options:\n *\n * - `customEqual`: function should return true if the `a` value is equal to `b` value.\n * - `debug`: enable debug info to console log. This log will be disable in production build\n */\nexports.shallowEqual = function (objectA, objectB, options) {\n if (objectA === objectB) {\n return true;\n }\n if (typeof objectA !== \"object\" || objectA === null) {\n if (process.env.NODE_ENV !== \"production\" && options && options.debug) {\n var out = options.console || console;\n out.group(\"shallow-equal-object\");\n out.log(\"objectA is not object.\");\n out.log(\"objectA\", objectA);\n out.log(\"objectB\", objectB);\n out.groupEnd();\n }\n return false;\n }\n if (typeof objectB !== \"object\" || objectB === null) {\n if (process.env.NODE_ENV !== \"production\" && options && options.debug) {\n var out = options.console || console;\n out.group(\"shallow-equal-object\");\n out.log(\"objectB is not object.\");\n out.log(\"objectA\", objectA);\n out.log(\"objectB\", objectB);\n out.groupEnd();\n }\n return false;\n }\n var keysA = Object.keys(objectA);\n var keysB = Object.keys(objectB);\n if (keysA.length !== keysB.length) {\n if (process.env.NODE_ENV !== \"production\" && options && options.debug) {\n var out = options.console || console;\n out.group(\"shallow-equal-object\");\n out.log(\"object key length is not same\");\n out.log(\"objectA\", objectA);\n out.log(\"objectB\", objectB);\n out.groupEnd();\n }\n return false;\n }\n var isEqual = options && typeof options.customEqual === \"function\" ? options.customEqual : exports.is;\n for (var i = 0; i < keysA.length; i++) {\n var key = keysA[i];\n if (!hasOwn.call(objectB, key) || !isEqual(objectA[key], objectB[key])) {\n if (process.env.NODE_ENV !== \"production\" && options && options.debug) {\n var out = options.console || console;\n out.group(\"shallow-equal-object\");\n out.log(\"key:\" + key + \" is not equals between A and B.\");\n out.log(\"objectA[\" + key + \"]:\", objectA[key]);\n out.log(\"objectB[\" + key + \"]:\", objectB[key]);\n out.log(\"objectA\", objectA);\n out.log(\"objectB\", objectB);\n out.groupEnd();\n }\n return false;\n }\n }\n return true;\n};\n//# sourceMappingURL=shallow-equal-object.js.map","export class ActivityCode {\n // flight duty activity types?\n public static readonly PIC: string = 'PIC';\n public static readonly FO: string = 'FO';\n public static readonly SC: string = 'SC';\n public static readonly OBS1: string = 'OBS1';\n public static readonly OBS2: string = 'OBS2';\n public static readonly CC2: string = 'CC2';\n public static readonly CC3: string = 'CC3';\n public static readonly CC4: string = 'CC4';\n public static readonly CC5: string = 'CC5';\n public static readonly CC6: string = 'CC6';\n public static readonly CC7: string = 'CC7';\n public static readonly CC8: string = 'CC8';\n public static readonly CC9: string = 'CC9';\n public static readonly CC10: string = 'CC10';\n public static readonly CC11: string = 'CC11';\n public static readonly CC12: string = 'CC12';\n public static readonly CC13: string = 'CC13';\n public static readonly ME1: string = 'ME1';\n public static readonly ME2: string = 'ME2';\n public static readonly TI1: string = 'TI1';\n public static readonly TI2: string = 'TI2';\n public static readonly FF1: string = 'FF1';\n public static readonly FF2: string = 'FF2';\n\n public static readonly VAC: string = 'VAC';\n public static readonly ILL: string = 'ILL';\n public static readonly ACC: string = 'ACC';\n public static readonly VAC_ILL: string = 'VAC-ILL';\n public static readonly VAC_ACC: string = 'VAC-ACC';\n public static readonly OFF_ILL: string = 'OFF-ILL';\n public static readonly OFF_ACC: string = 'OFF-ACC';\n public static readonly OFF_REL: string = 'OFF-REL';\n public static readonly RES_OFF: string = 'RES-OFF';\n public static readonly SIM: string = 'SIM';\n public static readonly TRG: string = 'TRG';\n\n public static readonly LAY: string = 'LAY';\n public static readonly OFF: string = 'OFF';\n public static readonly FSB: string = 'FSB';\n public static readonly OFC: string = 'OFC';\n public static readonly OFC_FLX: string = 'OFC-FLX';\n public static readonly INS: string = 'INS';\n public static readonly DTY: string = 'DTY';\n public static readonly COU_N: string = 'COU-N';\n public static readonly COU_H: string = 'COU-H';\n public static readonly COU_R: string = 'COU-R';\n public static readonly RGC: string = 'RGC';\n public static readonly RGC1: string = 'RGC1';\n public static readonly RGC2: string = 'RGC2';\n public static readonly CRM: string = 'CRM';\n public static readonly COMP: string = \"COMP\";\n\n public static readonly GRD: string = 'GRD';\n public static readonly FLTTRG: string = 'FLTTRG';\n public static readonly LATE_REL: string = 'LATE-REL';\n public static readonly NAS: string = 'NAS';\n public static readonly INS_N_TRN: string = 'INS-N-TRN';\n public static readonly INS_R_TRN: string = 'INS-R-TRN';\n public static readonly PR: string = 'PR';\n\n public static readonly EFA: string = 'EFA';\n public static readonly AP_OFC: string = 'AP-OFC';\n public static readonly AP_DTY: string = 'AP-DTY';\n\n // Activitiy types requested by person\n public static readonly LTO: string = 'LTO';\n public static readonly LTE: string = 'LTE';\n public static readonly STO: string = 'STO';\n\n public static readonly DTY_ILL: string = 'DTY-ILL';\n public static readonly DTY_ACC: string = 'DTY-ACC';\n public static readonly DTY_UFT: string = 'DTY-UFT';\n\n // Flags\n public static readonly WISH: string = 'WISH';\n\n //Activity types relevant for Freelance contract type only\n public static readonly A__: string = 'A__';\n public static readonly A_N: string = 'A+N';\n public static readonly AE_: string = 'AE_';\n public static readonly AL_: string = 'AL_';\n public static readonly AN_: string = 'AN_';\n public static readonly N_A: string = 'N_A';\n public static readonly O_R: string = 'O_R';\n\n //Activity types relevant for part-type contracts only\n public static readonly TZV: string = 'TZV';\n\n //Non-duty activity types\n public static readonly AND: string = 'AND';\n public static readonly BND: string = 'BND';\n public static readonly M_P: string = 'M_P';\n public static readonly M_U: string = 'M_U';\n public static readonly MIL: string = 'MIL';\n public static readonly PRE: string = 'PRE';\n public static readonly UFT: string = 'UFT';\n public static readonly UFT_F: string = 'UFT-F';\n public static readonly UFT_O: string = 'UFT-O';\n\n //Non-flight duty activity types\n public static readonly POS: string = 'POS';\n public static readonly RSV: string = 'RSV';\n public static readonly RSV_P: string = 'RSV-P';\n public static readonly RSV_OFF: string = 'RSV-OFF';\n public static readonly FRSV: string = 'FRSV';\n public static readonly FRSV_P: string = 'FRSV-P';\n public static readonly SBS: string = 'SBS';\n public static readonly SBC: string = 'SBC';\n public static readonly SBL: string = 'SBL';\n public static readonly FSBS: string = 'FSBS';\n public static readonly FSBC: string = 'FSBC';\n public static readonly FSBL: string = 'FSBL';\n public static readonly HOME_STUDY: string = 'HOME-STUDY';\n public static readonly DUTY_PART: string = 'DUTY-PART';\n public static readonly FOFF: string = 'FOFF';\n public static readonly FA__: string = 'FA__';\n public static readonly FA_N: string = 'FA+N';\n public static readonly FAE_: string = 'FAE_';\n public static readonly FAL_: string = 'FAL_';\n public static readonly FAN_: string = 'FAN_';\n public static readonly FN_A: string = 'FN_A';\n public static readonly FO_R: string = 'FO_R';\n\n //Other\n public static readonly EXT: string = 'EXT';\n public static readonly NULL: string = 'NULL';\n\n //Virtual Codes\n public static readonly SWAP: string = 'SWAP';\n public static readonly INTRO_FLIGHT: string = 'INTRO-FLIGHT';\n public static readonly OBSERVER_FLIGHT: string = 'OBSERVER-FLIGHT';\n\n //Flags\n public static readonly REQUEST: string = 'REQUEST';\n public static readonly IMPORTANT: string = 'IMPORTANT';\n public static readonly GAV: string = 'GAV';\n public static readonly FTL: string = 'FTL';\n public static readonly FLEX: string = 'FLEX';\n public static readonly FLEX_OFF: string = 'FLEX,OFF';\n public static readonly PARTY: string = 'PARTY';\n public static readonly DOOO: string = 'DOOO';\n public static readonly DOOT: string = 'DOOT';\n public static readonly DOOV: string = 'DOOV';\n public static readonly DOOF: string = 'DOOF';\n public static readonly FILAT: string = 'FILAT';\n public static readonly SPHFI: string = 'SPHFI';\n\n public static readonly AdditionalActivities: Array = [ActivityCode.OFC, ActivityCode.OFC_FLX, ActivityCode.INS, ActivityCode.DTY, ActivityCode.FLTTRG, ActivityCode.PR, ActivityCode.GRD, ActivityCode.COU_N, ActivityCode.COU_H, ActivityCode.COU_R, ActivityCode.INS_N_TRN, ActivityCode.INS_R_TRN, ActivityCode.RGC1, ActivityCode.RGC2, ActivityCode.UFT_O, ActivityCode.UFT_F];\n\n public static readonly HiddenActivities: Array = [ActivityCode.FSBS, ActivityCode.FSBL, ActivityCode.FSBC, ActivityCode.FRSV, ActivityCode.FRSV_P, ActivityCode.FOFF, ActivityCode.FA__, ActivityCode.FA_N, ActivityCode.FAE_, ActivityCode.FAL_, ActivityCode.FAN_, ActivityCode.FN_A, ActivityCode.FO_R, ActivityCode.HOME_STUDY, ActivityCode.DUTY_PART];\n\n public static readonly VacationActivities: Array = [ActivityCode.VAC, ActivityCode.VAC_ILL, ActivityCode.VAC_ACC];\n\n public static readonly StandByActivities: Array = [ActivityCode.SBS, ActivityCode.SBL, ActivityCode.SBC];\n\n public static readonly FormerStandByActivities: Array = [ActivityCode.FSBS, ActivityCode.FSBL, ActivityCode.FSBC];\n\n public static readonly FlightActivities: Array = [ActivityCode.PIC, ActivityCode.FO, ActivityCode.OBS1, ActivityCode.OBS2, ActivityCode.SC, ActivityCode.CC2, ActivityCode.CC3, ActivityCode.CC4, ActivityCode.CC5, ActivityCode.CC6, ActivityCode.CC7, ActivityCode.CC8, ActivityCode.CC9, ActivityCode.CC10, ActivityCode.CC11, ActivityCode.CC12, ActivityCode.CC13];\n\n public static readonly UiActivityCodeNames: string[] = ['PIC', 'FO', 'OBS1', 'OBS2', 'GND1', 'GND2', 'SC', 'CC2', 'CC3', 'CC4', 'CC5', 'CC6', 'CC7', 'CC8', 'CC9', 'CC10', 'CC11', 'CC12', 'CC13', 'ME1', 'ME2', 'TI1', 'TI2', 'FF1', 'FF2'];\n public static readonly CockpitActivityCodeNames: string[] = ['PIC', 'FO', 'OBS1', 'OBS2'];\n\n public static readonly FreelancerActivities: ActivityCode[] = [ActivityCode.A__, ActivityCode.A_N, ActivityCode.AE_, ActivityCode.AL_, ActivityCode.AN_, ActivityCode.N_A, ActivityCode.O_R];\n public static readonly FreelancerActivitiesShort: ActivityCode[] = [ActivityCode.A_N, ActivityCode.AE_, ActivityCode.AL_, ActivityCode.AN_];\n\n public static readonly FormerFreelancerActivities: ActivityCode[] = [ActivityCode.FA__, ActivityCode.FA_N, ActivityCode.FAE_, ActivityCode.FAL_, ActivityCode.FAN_, ActivityCode.FN_A, ActivityCode.FO_R];\n public static readonly FormerFreelancerActivitiesShort: ActivityCode[] = [ActivityCode.FA_N, ActivityCode.FAE_, ActivityCode.FAL_, ActivityCode.FAN_];\n\n public static readonly NonFreelancerActivities: ActivityCode[] = [ActivityCode.OFF, ActivityCode.LTO, ActivityCode.STO, ActivityCode.LTE, ActivityCode.FLEX_OFF, ActivityCode.VAC];\n\n public static readonly MeActivities: Array = [ActivityCode.ME1, ActivityCode.ME2];\n\n public static readonly UnfitActivities: Array = [ActivityCode.UFT_O, ActivityCode.UFT_F];\n\n public static readonly Offs: ActivityCode[] = [ActivityCode.OFF, ActivityCode.OFF_ACC, ActivityCode.OFF_ILL, ActivityCode.OFF_REL, ActivityCode.LTO, ActivityCode.STO, ActivityCode.RES_OFF];\n\n public static readonly allowedCabinAndCockpitActivities: ActivityCode[] = [\n ActivityCode.OFF,\n ActivityCode.LTO,\n ActivityCode.STO,\n ActivityCode.REQUEST,\n ActivityCode.GAV,\n ActivityCode.FTL,\n ActivityCode.FLEX,\n ActivityCode.FLEX_OFF,\n ActivityCode.NAS,\n ActivityCode.OFF_REL,\n ActivityCode.LATE_REL,\n ActivityCode.VAC,\n ActivityCode.VAC_ILL,\n ActivityCode.ILL,\n ActivityCode.VAC_ACC,\n ActivityCode.OFF_ILL,\n ActivityCode.OFF_ACC,\n ActivityCode.ACC,\n ActivityCode.DOOO,\n ActivityCode.DOOT,\n ActivityCode.DOOV,\n ActivityCode.DOOF,\n ActivityCode.FILAT,\n ActivityCode.SPHFI,\n ActivityCode.FLTTRG,\n ActivityCode.PR,\n ActivityCode.GRD,\n ActivityCode.SBS,\n ActivityCode.SBL,\n ActivityCode.SBC,\n ActivityCode.RSV,\n ActivityCode.COU_N,\n ActivityCode.INS,\n ActivityCode.COU_H,\n ActivityCode.COU_R,\n ActivityCode.RGC1,\n ActivityCode.RGC2,\n ActivityCode.INS_N_TRN,\n ActivityCode.INS_R_TRN,\n ActivityCode.OFC,\n ActivityCode.OFC_FLX,\n ActivityCode.DTY,\n ActivityCode.POS,\n ActivityCode.N_A,\n ActivityCode.A__,\n ActivityCode.AE_,\n ActivityCode.AL_,\n ActivityCode.AN_,\n ActivityCode.A_N,\n ActivityCode.O_R,\n ActivityCode.PRE,\n ActivityCode.M_P,\n ActivityCode.M_U,\n ActivityCode.UFT,\n ActivityCode.UFT_F,\n ActivityCode.UFT_O,\n ActivityCode.IMPORTANT,\n ActivityCode.LAY,\n ActivityCode.EXT\n ];\n\n public static readonly allowedCabinActivities: ActivityCode[] = [\n ...this.allowedCabinAndCockpitActivities,\n ActivityCode.LTE,\n ActivityCode.RSV_OFF,\n ActivityCode.EFA\n ];\n\n public static readonly allowedCockpitActivities: ActivityCode[] = [\n ...this.allowedCabinAndCockpitActivities,\n ActivityCode.RSV_P,\n ActivityCode.RES_OFF,\n ActivityCode.SIM,\n ActivityCode.AP_OFC,\n ActivityCode.AP_DTY,\n ActivityCode.DTY_ILL,\n ActivityCode.DTY_ACC,\n ActivityCode.DTY_UFT\n ];\n\n //ground\n public static readonly TRV: string = 'TRV';\n public static readonly ADM: string = 'ADM';\n public static readonly DIV: string = 'DIV';\n public static readonly OPS: string = 'OPS';\n public static readonly COM: string = 'COM';\n public static readonly DIS: string = 'DIS';\n public static readonly E: string = 'E';\n public static readonly E1: string = 'E1';\n public static readonly L: string = 'L';\n public static readonly L1: string = 'L1';\n public static readonly L2: string = 'L2';\n public static readonly AD1: string = 'AD1';\n public static readonly AD2: string = 'AD2';\n public static readonly GND1: string = 'GND1';\n public static readonly GND2: string = 'GND2';\n\n //ground flags\n public static readonly PIKETT: string = 'PIKETT';\n public static readonly SUPPORT: string = 'SUPPORT';\n\n public static readonly allowedGroundActivities: ActivityCode[] = [\n ActivityCode.OFF,\n ActivityCode.VAC,\n ActivityCode.ILL,\n ActivityCode.ACC,\n ActivityCode.DOOO,\n ActivityCode.WISH,\n ActivityCode.IMPORTANT,\n ActivityCode.ADM,\n ActivityCode.OFC,\n ActivityCode.DIV,\n ActivityCode.DIS,\n ActivityCode.TRV,\n ActivityCode.DTY,\n ActivityCode.INS,\n ActivityCode.SUPPORT,\n ActivityCode.PIKETT,\n ActivityCode.PRE,\n ActivityCode.M_P,\n ActivityCode.M_U,\n ActivityCode.COMP\n ];\n\n public static readonly allowedOGEActivities: ActivityCode[] = [\n ...this.allowedGroundActivities,\n ActivityCode.OPS,\n ActivityCode.OPS + ',' + ActivityCode.SUPPORT\n ];\n\n public static readonly allowedOGGEActivities: ActivityCode[] = [\n ...this.allowedGroundActivities,\n ActivityCode.AD1,\n ActivityCode.AD2\n ];\n\n public static readonly allowedOPRActivities: ActivityCode[] = [\n ...this.allowedGroundActivities,\n ActivityCode.L,\n ActivityCode.L1,\n ActivityCode.L2,\n ActivityCode.E,\n ActivityCode.E1\n ];\n\n public static readonly allowedOMCCActivities: ActivityCode[] = [\n ...this.allowedGroundActivities\n ];\n\n public static readonly groundActivities: string[] = [\n ActivityCode.TRV,\n ActivityCode.DTY,\n ActivityCode.ADM,\n ActivityCode.DIV,\n ActivityCode.OPS,\n ActivityCode.DIS,\n ActivityCode.INS,\n ActivityCode.OFC,\n ActivityCode.E,\n ActivityCode.E1,\n ActivityCode.L,\n ActivityCode.L1,\n ActivityCode.L2,\n ActivityCode.AD1,\n ActivityCode.AD2\n ];\n\n public static readonly AllowedToCopyActivities: Array = [\n\n // StandByActivities\n\n ActivityCode.SBS,\n ActivityCode.SBL,\n ActivityCode.SBC,\n\n // FreelanceOnlyActivities\n\n ActivityCode.A__,\n ActivityCode.A_N,\n ActivityCode.AE_,\n ActivityCode.AL_,\n ActivityCode.AN_,\n ActivityCode.N_A,\n ActivityCode.O_R,\n\n // CourseActivities\n\n ActivityCode.OFC,\n ActivityCode.OFC_FLX,\n ActivityCode.GRD,\n ActivityCode.INS,\n ActivityCode.INS_N_TRN,\n ActivityCode.INS_R_TRN,\n ActivityCode.COU_N,\n ActivityCode.COU_H,\n ActivityCode.COU_R,\n ActivityCode.RGC,\n ActivityCode.RGC1,\n ActivityCode.RGC2,\n ActivityCode.CRM,\n\n // GroundStaffActivities\n\n ActivityCode.OPS,\n ActivityCode.COM,\n ActivityCode.TRV,\n ActivityCode.ADM,\n ActivityCode.DIV,\n ActivityCode.DIS,\n ActivityCode.E,\n ActivityCode.E1,\n ActivityCode.L,\n ActivityCode.L1,\n ActivityCode.L2,\n ActivityCode.AD1,\n ActivityCode.AD2,\n\n // OtherActivities\n\n ActivityCode.POS,\n ActivityCode.OFF,\n ActivityCode.RSV,\n ActivityCode.LAY,\n ActivityCode.PRE,\n ActivityCode.M_P,\n ActivityCode.M_U,\n ActivityCode.COMP,\n ActivityCode.EXT,\n ActivityCode.FILAT,\n ActivityCode.SPHFI,\n ActivityCode.DTY,\n ActivityCode.TZV,\n ActivityCode.MIL,\n ActivityCode.SIM,\n ActivityCode.FLTTRG,\n ActivityCode.SUPPORT,\n ActivityCode.PR,\n ActivityCode.EFA,\n ActivityCode.AP_OFC,\n ActivityCode.AP_DTY\n ];\n}\n","export class ApiUrls {\n // ReSharper disable InconsistentNaming\n public static readonly ErrorUrl: string = '/api/error/ui';\n\n public static readonly RootUrl: string = '/api';\n public static readonly PersonUrl: string = '/api/person';\n public static readonly PersonRevalidateUrl: string = '/api/person/revalidate';\n public static readonly PersonPublishUrl: string = '/api/person/publish';\n public static readonly PersonLookupUrl: string = '/api/person/lookup';\n public static readonly PersonLookupByPhoneUrl: string = '/api/person/lookup-by-phone';\n public static readonly PersonByIdUrl: string = '/api/person/info';\n public static readonly RelatedPersonUrl: string = '/api/person/related-person';\n public static readonly PersonSmsUrl: string = '/api/person/sms';\n public static readonly PersonSmsCrewUrl: string = '/api/person/sms-crew';\n public static readonly IsConstantFreelancerUrl: string = '/api/personrequest/is-constant-freelancer';\n public static readonly HasTzvContract: string = '/api/personrequesttzv/has-tzv-contract';\n public static readonly PersonLicensesUrl: string = '/api/person/licenses';\n public static readonly PersonMintLicensesUrl: string = '/api/person/mint-licenses';\n public static readonly PersonMintLicenseInactivationsUrl: string = '/api/person/mint-license-inactivations';\n public static readonly PersonPlanningFunctionOverrulesUrl: string = '/api/person/planning-function-overrules';\n public static readonly PersonAircraftActivitiesUrl: string = '/api/person/aircraft-activities';\n public static readonly PersonAirportsUrl: string = '/api/person/airports';\n public static readonly PersonShowMySchedule: string = '/api/person/show-my-schedule';\n public static readonly PersonShowMyPhone: string = '/api/person/show-my-phone';\n public static readonly PersonOptInShowEfaSchedule: string = '/api/person/opt-in-show-efa-schedule';\n public static readonly PersonOptInShowAeropersSchedule: string = '/api/person/opt-in-show-aeropers-schedule';\n public static readonly PersonEntriesUrl: string = '/api/person/entries';\n public static readonly PersonFunctionsUrl: string = '/api/person/functions';\n public static readonly PersonModificationsUrl: string = '/api/person/person-modifications';\n\n public static readonly PersonInfoUrl: string = '/api/personinfo';\n public static readonly PersonQuarterInfoUrl: string = '/api/personinfo/quarter';\n public static readonly PersonSummaryInfoUrl: string = '/api/personinfo/summary-figures';\n public static readonly PersonDeltaInfoUrl: string = '/api/personinfo/delta-figures';\n public static readonly PersonConsecutiveMonthInfoUrl: string = '/api/personinfo/consecutive3month-figures';\n public static readonly PersonDutyPeriodInfoUrl: string = '/api/personinfo/duty-periods';\n public static readonly PersonDayDutyFiguresUrl: string = '/api/personinfo/duty-figures';\n public static readonly PersonDayDayStatusUrl: string = '/api/personinfo/day-status';\n public static readonly PersonDatePopupDataUrl: string = '/api/personinfo/popup-data';\n public static readonly ChangeCheckInCheckOutUrl: string = '/api/personinfo/cico/change';\n public static readonly ResetCheckInCheckOutUrl: string = '/api/personinfo/cico/reset';\n public static readonly CiCoSetByEstimated: string = '/api/personinfo/cico/set-by-estimated';\n public static readonly CheckInCheckOutInfoUrl: string = '/api/personinfo/cico/';\n public static readonly PersonLocation: string = '/api/personinfo/location';\n\n public static readonly AirportsUrl: string = '/api/airport';\n\n public static readonly HolidayUrl: string = '/api/holiday';\n\n public static readonly HomeStudyUrl: string = '/api/homestudy';\n public static readonly HomeStudyPersonsUrl: string = '/api/homestudy/persons';\n\n public static readonly FlightUrl: string = '/api/flight';\n public static readonly FlightSectorUrl: string = '/api/flight/sectors';\n public static readonly FlightInfoUrl: string = '/api/flight/info';\n public static readonly FlightHistoryUrl: string = '/api/flight/history';\n public static readonly FlightFdpExtensionUrl: string = '/api/flight/person-fdp-extension-type';\n public static readonly FlightFdpAmendmentTypeUrl: string = '/api/flight/person-fdp-amendment-type';\n public static readonly FlightDecodeUrl: string = '/api/flight/decode';\n public static readonly FlightCrewDetailsUrl: string = '/api/flight/crew-details';\n public static readonly FlightPublishUrl: string = '/api/flight/publish-netline';\n public static readonly FlightSectorByIdUrl: string = '/api/flight/sector';\n public static readonly UrgentFlightUrl: string = '/api/flight/urgent';\n public static readonly UrgentFlightSuppressUrl: string = '/api/flight/urgent-suppress';\n\n public static readonly RotationUrl: string = '/api/rotation/for-day';\n public static readonly LonghaulRotationUrl: string = '/api/rotation/long-haul';\n public static readonly LonghaulByIdUrl: string = '/api/rotation/long-haul/single';\n public static readonly LonghaulForPeriodUrl: string = '/api/rotation/long-haul/for-period';\n public static readonly RotationIdByKeyUrl: string = '/api/rotation/rotation-id';\n public static readonly RotationDirectionsUrl: string = '/api/rotation/directions';\n public static readonly RotationBuildUrl: string = '/api/rotation/build';\n public static readonly RotationPutUrl: string = '/api/rotation';\n public static readonly RotationCopyUrl: string = '/api/rotation/copy';\n public static readonly RotationCopyDatesUrl: string = '/api/rotation/dates';\n public static readonly RotationFlightDatesUrl: string = '/api/rotation/flight-dates';\n public static readonly RotationDeleteUrl: string = '/api/rotation/delete';\n public static readonly RotationAvailableFlightsUrl: string = '/api/rotation/available-flights';\n public static readonly RotationInitUrl: string = '/api/rotation/init-rotation';\n public static readonly RotationByIdUrl: string = '/api/rotation';\n public static readonly RotationsForFlightUrl: string = '/api/rotation/flight';\n public static readonly RotationAircraftUrl: string = '/api/rotation/aircraft';\n\n public static readonly AirbusTypesUrl: string = '/api/personlicense/airbus-types';\n public static readonly ContractTypeUrl: string = '/api/contract/types';\n public static readonly ContractFlagTypeUrl: string = '/api/contract/flag-types';\n\n public static readonly TypeRatingFiltersUrl: string = '/api/typeratingfilter';\n public static readonly InstructorFiltersUrl: string = '/api/instructorfilter';\n\n public static readonly ReleaseHistoryUrl: string = '/api/releasehistory/release';\n public static readonly ReleaseHistoryAvailableMonthsUrl: string = '/api/releasehistory/available-months';\n public static readonly ReleaseHistoryPersonsWithNotFullDutyMonthUrl: string = '/api/releasehistory/not-full-persons';\n public static readonly ReleaseHistoryDateUrl: string = '/api/releasehistory/release-date';\n public static readonly ReleaseHistoryGroupsUrl: string = '/api/releasehistory/release-groups';\n public static readonly ReleaseHistoryPeriodsUrl: string = '/api/releasehistory/release-periods';\n public static readonly ReleaseHistoryStatusUrl: string = '/api/releasehistory/release-status';\n\n public static readonly DutyValidationDataUrl: string = '/api/duty/validation-data';\n public static readonly DutyValidationGroundDataUrl: string = '/api/duty/validation-data-ground';\n public static readonly DutyValidationFseDataUrl: string = '/api/duty/validation-data-fse';\n public static readonly DutyDownloadValidationUrl: string = '/api/duty/download-validation';\n public static readonly DutyDownloadValidationResultUrl: string = '/api/duty/download-validation-result';\n public static readonly DutyUndoUrl: string = '/api/duty/undo';\n public static readonly DutyRollbackUndoUrl: string = '/api/duty/rollback-undo';\n public static readonly DutySwapUrl: string = '/api/duty/swap';\n public static readonly DutyHideUrl: string = '/api/duty/hide-duty';\n public static readonly DutyUpdateTitleUrl: string = '/api/duty/update-title';\n public static readonly DutyCopyUrl: string = '/api/duty/copy';\n public static readonly DutyPersistShadowDuties: string = '/api/duty/persist';\n public static readonly DayActivitiesUrl: string = 'api/duty/day-activities';\n public static readonly MonthDutyTypeUrl: string = '/api/duty/month-duty-types';\n public static readonly ReleaseFilterTypeUrl: string = '/api/duty/release-filter-types';\n public static readonly PopToolDutyHistory: string = '/api/duty/history';\n public static readonly PartialLoadTypeUrl: string = '/api/duty/partial-load-types';\n public static readonly GetDutyHoursUrl: string = '/api/duty/get-duty-hours';\n public static readonly ChangeDutyHoursUrl: string = '/api/duty/change-duty-hours';\n public static readonly UrgentDutyUrl: string = '/api/duty/urgent';\n public static readonly UrgentDutyRPUrl: string = '/api/duty/urgent-release-period';\n public static readonly PersonDayLandingUrl: string = '/api/duty/person-day-landing';\n public static readonly SeatHistory: string = '/api/duty/seat-history';\n public static readonly DutyHidePlanningPeriodUrl: string = '/api/duty/configure-planning-period';\n public static readonly DutyGetPlanningPeriodsUrl: string = '/api/duty/planning-periods';\n public static readonly DutyPartUrl: string = '/api/duty/duty-part';\n public static readonly DutyRecencyLandings: string = '/api/duty/recency-landings';\n public static readonly DutyRecencyTakeoffs: string = '/api/duty/recency-takeoffs';\n\n public static readonly PlanningDutyPeriodUrl: string = '/api/duty/planning-duty-period';\n public static readonly PlanningDutyPeriodStartUrl: string = '/api/duty/planning-duty-period-start';\n public static readonly PlanningDutyPeriodReleaseUrl: string = '/api/duty/planning-duty-period-release';\n\n public static readonly PersonDayMessageHistoryUrl: string = '/api/duty/person-day-messages';\n public static readonly FlightMessageHistoryUrl: string = '/api/flight/messages';\n public static readonly PersonMessageHistoryUrl: string = '/api/person/messages';\n\n public static readonly DutySectorSwapCrewUrl: string = '/api/duty/sector/swap-crew';\n public static readonly DutySectorMoveCrewUrl: string = '/api/duty/sector/move-crew';\n public static readonly DutyRotationSwapCrewUrl: string = '/api/duty/rotation/swap-crew';\n public static readonly DutyRotationMoveCrewUrl: string = '/api/duty/rotation/move-crew';\n\n public static readonly JeppesenExportedFileListUrl: string = '/api/jeppesentool/list';\n public static readonly JeppesenRosterExportInfoUrl: string = '/api/jeppesentool/roster-export-info';\n public static readonly JeppesenCrewExportInfoUrl: string = '/api/jeppesentool/crew-export-info';\n public static readonly JeppesenRosterImportInfoUrl: string = '/api/jeppesentool/roster-import-info';\n public static readonly JeppesenDownloadFileUrl: string = '/api/jeppesentool/download-file';\n public static readonly JeppesenRosterImportsUrl: string = '/api/jeppesentool/roster-imports';\n public static readonly JeppesenRosterImportDetailsUrl: string = '/api/jeppesentool/roster-import-details';\n public static readonly JeppesenRosterImportExceptionUrl: string = '/api/jeppesentool/roster-import-exception';\n public static readonly JeppesenRosterImportFileDataUrl: string = '/api/jeppesentool/roster-import-file-data';\n public static readonly JeppesenRosterImportUploadFileUrl: string = '/api/jeppesentool/roster-import-upload-file';\n public static readonly JeppesenCasImportInfoUrl: string = '/api/jeppesentool/cas-import-info';\n public static readonly JeppesenCasImportFileUrl: string = '/api/jeppesentool/cas-import-file';\n\n public static readonly TradeUnionExportInfoUrl: string = '/api/tradeunioninterface/export-info';\n public static readonly TradeUnionDownloadFileUrl: string = '/api/tradeunioninterface/download-file';\n public static readonly TradeUnionExportsUrl: string = '/api/tradeunioninterface/exports';\n public static readonly TradeUnionExportsFileDataUrl: string = '/api/tradeunioninterface/file-data';\n\n public static readonly CateringReportDataUrl: string = '/api/cateringreport';\n public static readonly GroundStaffReportUrl: string = '/api/groundstaffreport';\n\n public static readonly DutyValidationUrl: string = '/api/dutyvalidation';\n public static readonly DutyValidationUrgentUrl: string = '/api/dutyvalidation/urgent';\n public static readonly DutyValidationSuppressReasonsUrl: string = '/api/dutyvalidation/suppress-reasons';\n public static readonly DutyValidationSuppressUrl: string = '/api/dutyvalidation/suppress';\n public static readonly DutyValidationResumeUrl: string = '/api/dutyvalidation/resume';\n public static readonly DutyValidationSuppressErrorsUrl: string = '/api/dutyvalidation/suppress-errors';\n public static readonly DutyValidationErrorsInfoUrl: string = '/api/dutyvalidation/errors-info';\n\n public static readonly DutyDayUrl: string = '/api/duty/day-duties';\n\n public static readonly DutyCheckerTraineeUrl: string = '/api/dutycheckertrainee';\n public static readonly DutyCheckerTraineePersonUrl: string = '/api/dutycheckertrainee/person';\n public static readonly DutyCheckerTraineeFunctionUrl: string = '/api/dutycheckertrainee/function';\n public static readonly DutyCheckerTraineeLongHaulUrl: string = '/api/dutycheckertrainee/long-haul';\n public static readonly DutyCheckerTraineeFlightTeamUrl: string = '/api/dutycheckertrainee/flight-team';\n public static readonly DutyCheckerTraineeGroundTeamUrl: string = '/api/dutycheckertrainee/ground-team';\n\n public static readonly FunctionUrl: string = '/api/function';\n public static readonly FunctionGroupUrl: string = '/api/function/group';\n\n public static readonly SimulationUrl: string = '/api/simulation';\n public static readonly SimulationPlannedUrl: string = '/api/simulation/activity/planned';\n public static readonly SimulationTraineeCandidatesUrl: string = '/api/simulation/trainee-candidates';\n public static readonly SimulationHistoryUrl: string = '/api/simulation/history';\n public static readonly SimulationDeletionHistoryUrl: string = '/api/simulation/deletion-history';\n public static readonly SimulationPositionHistoryUrl: string = '/api/simulation/position-history';\n public static readonly SimulationPositionLogHistoryUrl: string = '/api/simulation/position-history-log';\n\n public static readonly ConfigurationUrl: string = '/api/configuration';\n public static readonly MaintenanceUrl: string = '/api/maintenance';\n public static readonly MaintenanceNotificationUrl: string = '/api/maintenance/notification';\n public static readonly VersionUrl: string = '/api/dev/version';\n\n public static readonly ServiceRevalidateAllUrl: string = '/api/service/revalidate-all';\n public static readonly ServicePersonValidationUrl: string = '/api/service/person-validation';\n public static readonly ServiceRecalculateExperienceUrl: string = '/api/service/recalculate-experience';\n public static readonly ServiceDownloadFullLogsUrl: string = '/api/service/download-full-logs';\n public static readonly ServiceDownloadDayLogsUrl: string = '/api/service/download-day-logs';\n public static readonly ServiceDownloadMessagesUrl: string = '/api/service/download-messages';\n public static readonly ServiceDownloadDeadlettersUrl: string = '/api/service/download-deadletters';\n public static readonly ServiceDatesWithLogsUrl: string = '/api/service/logs-dates';\n public static readonly ServiceMessagesDatesUrl: string = '/api/service/messages-dates';\n public static readonly ServiceMessagesLabelsUrl: string = '/api/service/message-labels';\n public static readonly ServiceMessagesTagsUrl: string = '/api/service/message-tags';\n public static readonly ServiceVacationDataCalculationUrl: string = '/api/service/vacation-calculation';\n public static readonly MessageStatisticsUrl: string = '/api/service/message-statistics';\n public static readonly ServiceQueueStatisticsUrl: string = '/api/service/input-queue-statistics';\n public static readonly ServiceQueueDeadlettersUrl: string = '/api/service/input-queue-deadletters';\n public static readonly ServiceRestartSchedulerUrl: string = '/api/service/restart-scheduler';\n public static readonly ServiceOperationsUrl: string = '/api/service/operations';\n\n public static readonly PushNotificationKeyUrl: string = '/api/pushnotification/notification-key';\n public static readonly PushNotificationEnableUrl: string = '/api/pushnotification/notification-enable';\n public static readonly PushNotificationDisableUrl: string = '/api/pushnotification/notification-disable';\n public static readonly PushNotificationHasSubscriptionUrl: string = '/api/pushnotification/has-subscription';\n\n public static readonly LocalToUtc: string = '/api/time/local-to-utc';\n public static readonly UtcToLocal: string = '/api/time/utc-to-local';\n public static readonly AvailableTimeZones: string = '/api/time/available-timezones';\n public static readonly TimezoneOffsets: string = '/api/time/timezone-offsets';\n public static readonly DefaultTimezoneOffset: string = '/api/time/default-timezone';\n public static readonly TimeSwissTransitions: string = '/api/time/swiss-transitions';\n\n public static readonly ChangeLogUrl: string = '/api/changeLog';\n public static readonly ChangeLogSetPlanningConfirmationUrl: string = '/api/changeLog/set-planning-confirmation';\n public static readonly ChangeLogUpdateReasonUrl: string = '/api/changeLog/reason';\n public static readonly ChangeLogUpdateOldDutyTextUrl: string = '/api/changeLog/oldDutyText';\n public static readonly ChangeLogUpdateNewDutyTextUrl: string = '/api/changeLog/newDutyText';\n\n public static readonly CrewDutyListReportUrl: string = '/api/crewdutylistreport';\n public static readonly CrewApiConfigReportUrl: string = '/api/crewapi/config-report';\n public static readonly PersonReportUrl: string = '/api/personsreport';\n public static readonly RecurrentTrainingReportUrl: string = '/api/recurrenttrainingreport';\n public static readonly SectorsReportUrl: string = '/api/sectorsreport';\n public static readonly SimulatorLicenseStatusReportUrl: string = '/api/simulatorlicensestatusreport';\n public static readonly StandbyReportUrl: string = '/api/standbyreport';\n public static readonly StandbyReportPersonFunctionsUrl: string = '/api/standbyreport/functions';\n public static readonly StandbyReportCreateEmailUrl: string = '/api/standbyreport/download-email';\n public static readonly PlannedTrainingsReportUrl: string = '/api/plannedtrainingsreport';\n public static readonly AirportRecencyReportUrl: string = '/api/airportrecencyreport';\n public static readonly AreaRouteCompetenceReportUrl: string = '/api/arearoutecompetencereport';\n public static readonly AreaRouteCompetenceRulesUrl: string = '/api/arearoutecompetence/rules-report';\n public static readonly CommentReportUrl: string = '/api/commentreport';\n public static readonly AbsenceReportUrl: string = '/api/absencereport';\n public static readonly OffDaysReportUrl: string = '/api/offdaysreport';\n public static readonly AircraftTypeRecencyReportUrl: string = '/api/aircrafttyperecencyreport/cabin';\n public static readonly AircraftTypeRecencyCockpitReportUrl: string = '/api/aircrafttyperecencyreport/cockpit';\n public static readonly DooxReportUrl: string = '/api/dooxreport';\n public static readonly ExperienceReportUrl: string = '/api/experiencereport';\n public static readonly ErrorReportUrl: string = '/api/errorreport';\n public static readonly XStarMonitoringReportUrl: string = '/api/xstarmonitoringreport';\n public static readonly DosimetryReportUrl: string = '/api/dosimetryreport';\n public static readonly SeniorityReportUrl: string = '/api/seniorityreport';\n public static readonly SimulationReportUrl: string = '/api/Simulation';\n\n public static readonly LogbookUrl: string = '/api/logbook';\n\n public static readonly HotelManagementLocationUrl: string = '/api/hotelmanagement/locations';\n public static readonly HotelManagementLocationMonthUrl: string = '/api/hotelmanagement/locations-month';\n public static readonly HotelManagementHotelDetailsUrl: string = '/api/hotelmanagement/hotel-details';\n public static readonly HotelManagementHotelPersonDetailsUrl: string = '/api/hotelmanagement/hotel-person-details';\n public static readonly HotelManagementPreReservationDetailsUrl: string = '/api/hotelmanagement/pre-reservation/hotel-details';\n public static readonly HotelManagementPreReservationBookingDetailsUrl: string = '/api/hotelmanagement/pre-reservation/hotel-booking-details';\n public static readonly HotelManagementCreateEmailUrl: string = '/api/hotelmanagement/download-email';\n public static readonly HotelManagementCreatePreReservationEmailUrl: string = '/api/hotelmanagement/pre-reservation/download-email';\n\n public static readonly AircraftsUrl: string = '/api/aircraft';\n public static readonly AircraftsMaintenanceUrl: string = '/api/aircraft/maintenance';\n\n public static readonly RequestToolOffUrl: string = '/api/personrequest/off';\n public static readonly RequestToolAllRequests: string = '/api/personrequest/requests';\n public static readonly RequestToolPoints: string = '/api/personrequest/points-balance';\n public static readonly RequestToolPointsLog: string = '/api/personrequest/points-log';\n public static readonly RequestToolPointsPeriods: string = '/api/personrequest/points-periods';\n public static readonly RequestToolPointsManualCorrection: string = '/api/personrequest/manual-correction';\n public static readonly RequestToolAvailableFlights: string = '/api/personrequest/available-flights';\n public static readonly RequestToolPersonFlights: string = '/api/personrequest/flight';\n public static readonly RequestToolGrantJobStatus: string = '/api/personrequest/grant-job-status';\n public static readonly RequestToolRejectFlight: string = '/api/personrequest/flight/rejected-by-planner';\n public static readonly RequestToolPersonFlightsOffs: string = '/api/personrequest/rotation-offs';\n public static readonly RequestToolValidateOff: string = '/api/personrequest/validate-off';\n public static readonly RequestToolPersonInfo: string = '/api/personrequest/person-info';\n public static readonly RequestToolResolveRequest: string = '/api/personrequest/resolve';\n public static readonly RequestToolRotation: string = 'api/personrequest/rotation-days';\n public static readonly RequestToolAvailableRequestRange: string = '/api/personrequest/available-request-range';\n public static readonly RequestToolOffLimits: string = '/api/personrequest/off-limits';\n public static readonly RequestToolFlightLimitsCockpit: string = '/api/personrequest/flight-limits-cockpit';\n public static readonly RequestToolFlightLimitsCabin: string = '/api/personrequest/flight-limits-cabin';\n public static readonly RequestToolFlightLimitsLogsForCabin: string = '/api/personrequest/flight-limits-logs-cabin';\n public static readonly RequestToolFlightLimitsLogsForCockpit: string = '/api/personrequest/flight-limits-logs-cockpit';\n public static readonly PersonRequestBlockingDay: string = '/api/personrequestblockingperiod/day';\n public static readonly PersonRequestBlockingFlight: string = '/api/personrequestblockingflight/flight';\n\n public static readonly RequestToolVacation: string = '/api/personrequestvac';\n public static readonly RequestToolVacationValidate: string = '/api/personrequestvac/validation';\n public static readonly RequestToolVacationRequestRules: string = '/api/personrequestvac/rules-status';\n public static readonly RequestToolAvailiableVacTypes: string = '/api/personrequestvac/available-types';\n public static readonly RequestToolVacationDaysBalanceInfo: string = '/api/personrequestvac/balance-info';\n public static readonly RequestToolVacationDaysBalanceTotal: string = '/api/personrequestvac/balance-info/total';\n public static readonly RequestToolVacationDaysManualCorrection: string = '/api/personrequestvac/balance/manual-correction';\n public static readonly RequestToolVacationYearPeriods: string = '/api/personrequestvac/vacation-periods';\n public static readonly RequestToolVacationYears: string = '/api/personrequestvac/vacation-years';\n public static readonly RequestToolVacationAvailiableVacSDaysAndDeadline: string = '/api/personrequestvac/vac-s-deadline-info';\n public static readonly RequestToolVacationAvailiableVacPDaysAndDeadline: string = '/api/personrequestvac/vac-p-deadline-info';\n public static readonly RequestToolVacRequestBlock: string = '/api/personrequestvac/request-block';\n public static readonly RequestToolVacationAbsence: string = '/api/personrequestvac/vac-blocks';\n\n public static readonly RequestToolTzvYears: string = '/api/personrequesttzv/tzv-years';\n public static readonly RequestToolTzvBalanceInfo: string = '/api/personrequesttzv/tzv-balance-info';\n public static readonly RequestToolTzvBalanceTotal: string = '/api/personrequesttzv/tzv-balance-info/total';\n public static readonly RequestToolTzvBlocks: string = '/api/personrequesttzv/tzv-blocks';\n public static readonly RequestToolTzvManualCorrection: string = '/api/personrequesttzv/balance/manual-correction';\n public static readonly RequestToolTzvContractInfo: string = '/api/personrequesttzv/contract-info';\n public static readonly RequestToolTzvAssignment: string = '/api/personrequesttzv/tzv-assignment';\n\n public static readonly RequestToolFlightDutyRecord: string = '/api/flightdutyrecord';\n public static readonly RequestToolFlightDutyRecordDownload: string = '/api/flightdutyrecord/Download';\n public static readonly RequestToolLogbookDownload: string = '/api/logbook/Download';\n\n public static readonly RequestToolNbu: string = '/api/personrequestnbu';\n\n public static readonly RequestPersonView: string = '/api/personview';\n public static readonly RequestPersonCabinRecency: string = '/api/personview/cabin-recency';\n public static readonly RequestPersonCockpitRecency: string = '/api/personview/cockpit-recency';\n\n public static readonly TzvYearOverviewReport: string = '/api/tzvyearoverviewreport';\n public static readonly TzvYearOverviewYears: string = '/api/tzvyearoverviewreport/tzv-years';\n public static readonly TzvYearOverviewFleetTypes: string = '/api/tzvyearoverviewreport/fleet-types';\n\n public static readonly VacManagement: string = '/api/vacmanagement/requests';\n public static readonly VacManagementRequestBlock: string = '/api/vacmanagement/request-block';\n public static readonly VacManagementValidateSelectedRange: string = '/api/vacmanagement/selected-range-validation';\n public static readonly VacManagementUpdateSelectedRange: string = '/api/vacmanagement/update-selected-range';\n public static readonly VacManagementVacYears: string = '/api/vacmanagement/vacation-years';\n public static readonly VacManagementVacYearPeriods: string = '/api/vacmanagement/vacation-year-periods';\n public static readonly VacManagementVacYearPeriodsFilterOptions: string = '/api/vacmanagement/vacation-year-periods-filter-options';\n public static readonly VacManagementVacYearPeriodModels: string = '/api/vacmanagement/vacation-periods';\n public static readonly VacManagementInform: string = '/api/vacmanagement/inform';\n public static readonly VacManagementCapacityFigures: string = '/api/vacmanagement/capacity-figures';\n public static readonly VacManagementCapacityMonthFigures: string = '/api/vacmanagement/capacity-month-figures';\n public static readonly VacManagementVacTypes: string = '/api/vacmanagement/vac-types';\n public static readonly VacManagementMonthFromOptions: string = '/api/vacmanagement/month-from-options';\n public static readonly VacManagementMonthToOptions: string = '/api/vacmanagement/month-to-options';\n public static readonly VacManagementPersonVacYearDetails: string = '/api/vacmanagement/person-vac-year-details';\n\n public static readonly ReserveManagement: string = '/api/reservemanagement/requests';\n public static readonly ReserveBlocksManagement: string = '/api/reservemanagement/reserve-blocks';\n\n public static readonly RequestToolReserveDutyBlocks: string = '/api/personrequestreserve/reserve-duty-blocks';\n\n public static readonly CommentUrl: string = '/api/comment/';\n public static readonly PersonCommentUrl: string = '/api/comment/person';\n public static readonly PersonUpdateOnlyCommentUrl: string = '/api/comment/person-update-comment';\n public static readonly DayCommentUrl: string = '/api/comment/day';\n public static readonly CreateMultiDayCommentUrl: string = '/api/comment/create-multi';\n public static readonly FlightCommentUrl: string = '/api/comment/flight';\n public static readonly AcceptValidationErrorCommentUrl: string = '/api/comment/validation';\n public static readonly DutyCommentUrl: string = '/api/comment/duty';\n public static readonly NoteCommentUrl: string = '/api/comment/planning-note';\n public static readonly CommentStandbyUrl: string = '/api/comment/standby';\n\n public static readonly JobUrl: string = '/api/job/';\n\n public static readonly JobList: string = '/api/job/list';\n public static readonly JobStartUrl: string = '/api/job/start';\n public static readonly JobStopUrl: string = '/api/job/stop';\n public static readonly JobParametersUrl: string = '/api/job/parameters';\n public static readonly JobSettingsUrl: string = '/api/job/settings';\n public static readonly JobCronValidation: string = '/api/Job/cron/validation';\n public static readonly JobTriggerCreateUrl: string = '/api/job/create';\n public static readonly JobTriggerDeleteUrl: string = '/api/job/delete';\n public static readonly CheckTriggerNameUrl: string = '/api/job/check-trigger-name';\n\n public static readonly MonitoringUrl: string = '/api/monitoring';\n\n public static readonly SelfTestJobsUrl: string = '/api/selftest/jobs';\n public static readonly SelfTestDatabaseUrl: string = '/api/selftest/database';\n public static readonly SelfTestSignalRUrl: string = '/api/selftest/signalr';\n public static readonly SelfTestPersonDayQueueUrl: string = '/api/selftest/persondayqueue';\n public static readonly SelfTestPersonRevalidateUrl: string = '/api/selftest/personrevalidate';\n public static readonly SelfTestEmailQueueUrl: string = '/api/selftest/emailqueue';\n public static readonly SelfTestNetlineOpsQueue: string = '/api/selftest/netline-ops-queue';\n public static readonly SelfTestPersonMessageBusQueue: string = '/api/selftest/person-message-bus-queue';\n public static readonly SelfTestCrewApiQueue: string = '/api/selftest/crew-api-queue';\n public static readonly SelfTestCrewApiMclQueue: string = '/api/selftest/crew-api-mcl-queue';\n\n public static readonly OnlinePrincipalConnectedClientsUrl: string = '/api/onlineprincipal/connected-clients';\n public static readonly OnlinePrincipalRosterActiveityUrl: string = '/api/onlineprincipal/roster-activity';\n\n public static readonly PlanningFlightActivityCandidatesUrl: string = '/api/planning/flight-activity-candidates';\n public static readonly PlanningValidateFlightActivityCandidateUrl: string = '/api/planning/validate-flight-candidate';\n public static readonly PlanningDutyRestTime: string = '/api/planning/rest-delta-times';\n\n public static readonly PermissionUrl: string = '/api/permission';\n public static readonly PermissionRoleUrl: string = '/api/permission/role';\n\n public static readonly PersonChangeLog: string = '/api/personchangelog';\n public static readonly PersonChangeLogConfirm: string = '/api/personchangelog/confirm';\n public static readonly PersonChangeLogLast: string = '/api/personchangelog/last';\n\n public static readonly RequestCapacityToolAnalyze: string = '/api/requestcapacitytool/analyze';\n public static readonly RequestCapacityToolImport: string = '/api/requestcapacitytool/import';\n public static readonly RequestCapacityToolOverview: string = '/api/requestcapacitytool/overview';\n\n public static readonly CalendarMonthUrl: string = '/api/time/calendar-month';\n\n public static readonly LicenseManagementUrl: string = '/api/licensemanagement/license-list';\n\n public static readonly CourseManagementUrl: string = '/api/coursemanagement/list';\n public static readonly CabinCrewAttestationUrl: string = '/api/coursemanagement/report';\n public static readonly CabinCrewAttestationPdfUrl: string = '/api/coursemanagement/export-pdf';\n public static readonly CabinCrewAttestationBazlUrl: string = '/api/coursemanagement/export-bazl';\n public static readonly CabinCrewAttestationPersonPdfUrl: string = '/api/coursemanagement/person-export-pdf';\n public static readonly CourseManagementImport: string = '/api/coursemanagement/import';\n\n public static readonly CustomPersonManagementUrl: string = '/api/custompersonmanagement/list';\n\n public static readonly CrewApiPayload: string = '/api/crewapi/payload';\n public static readonly CrewApiHistory: string = '/api/crewapi/history';\n public static readonly CrewApiGenerate: string = '/api/crewapi/generate';\n public static readonly CrewApiProcess: string = '/api/crewapi/process';\n public static readonly CrewApiRelatedAirports: string = '/api/crewapi/related-airports';\n public static readonly CrewApiFlightsStatus: string = '/api/crewapi/flight-status';\n public static readonly CrewApiPersonStatus: string = '/api/crewapi/person-status';\n public static readonly CrewApiPersonState: string = '/api/crewapi/person-state';\n public static readonly CrewApiAddMcl: string = '/api/crewapi/add-mcl';\n public static readonly CrewApiUpdateMcl: string = '/api/crewapi/update-mcl';\n public static readonly CrewApiDeleteMcl: string = '/api/crewapi/delete-mcl';\n public static readonly CrewApiSkipMcl: string = '/api/crewapi/skip-mcl';\n public static readonly CrewApiGetMclMissingDataPersons: string = '/api/crewapi/mcl-missing-data';\n public static readonly CrewApiMassConfiguration: string = '/api/crewapi/mass-configuration';\n\n public static readonly GenDecUrl: string = '/api/gendec';\n public static readonly GenDecRotationUrl: string = '/api/gendec/rotation';\n public static readonly GenDecRelatedAirports: string = '/api/gendec/related-airports';\n public static readonly GenDecFlightsStatus: string = '/api/gendec/flight-status';\n public static readonly GenDecProcess: string = '/api/gendec/process';\n public static readonly GenDecPayload: string = '/api/gendec/payload';\n public static readonly GenDecConfigReport: string = '/api/gendec/config-report';\n\n public static readonly TempFileUrl: string = '/api/tempfile';\n\n public static readonly TemplatesManagement = '/api/templatesmanagement';\n public static readonly TemplatesManagementCodes = '/api/templatesmanagement/codes';\n\n public static readonly EmailsUrl = '/api/email';\n public static readonly EmailBodyUrl = '/api/email/body';\n public static readonly EmailAttachmentsUrl = '/api/email/attachments';\n public static readonly EmailAttachmentDownloadUrl = '/api/email/attachment';\n public static readonly EmailUpdateStatusUrl = '/api/email/update-status';\n\n public static readonly PingUrl: string = '/api/dev/ping';\n\n public static readonly ReleaseNotesUrl: string = '/api/releasenotes';\n public static readonly ReleaseNotesMarkAsReadUrl: string = '/api/releasenotes/mark-as-read';\n\n public static readonly QualityLoopExportUrl: string = '/api/qualityloopexport';\n public static readonly QualityLoopExportDataUrl: string = '/api/qualityloopexport/data';\n public static readonly QualityLoopExportMappingUrl: string = '/api/qualityloopexport/id-mapping';\n}\n","/* eslint-disable max-classes-per-file */\n\nexport class Location {\n public static readonly ZRH: string = 'ZRH';\n}\nexport class PersonContractType {\n public static readonly Freelance: string = 'freelance';\n}\n\nexport class Logs {\n public static readonly MaxSizeInMbToDownload: number = 10;\n}\n\nexport class PersonInfo {\n public static readonly Age: number = 60;\n}\n\nexport class MouseButtons {\n public static readonly Left: number = 0;\n public static readonly Wheel: number = 1;\n public static readonly Right: number = 2;\n}\n\nexport class CheckerTraineeFunctionName {\n public static readonly CL: string = 'CL';\n public static readonly SafetyPilot: string = 'Safety Pilot';\n public static readonly EisCrew: string = 'EIS-Crew';\n}\n\nexport class ChangeLogStatuses {\n public static readonly confirmed: string = 'Confirmed';\n public static readonly notConfirmed: string = 'NotConfirmed';\n}\n\nexport class Status {\n public static readonly success: string = 'Success';\n public static readonly warning: string = 'Warning';\n public static readonly fail: string = 'Fail';\n}\n\nexport class Security {\n public static readonly FreezePeriodError: string = 'Only Administrator or Support can do changes in salary payment period.';\n}\n\nexport class Actions {\n public static readonly ADD: string = 'Add';\n public static readonly UPDATE: string = 'Update';\n public static readonly DELETE: string = 'Delete';\n}\n\nexport class AircraftTypeActivityExperience {\n public static readonly ConsecutiveLength: number = 120;\n public static readonly ConsecutiveBlockHours: number = 100;\n public static readonly ConsecutiveSectorsCount: number = 10;\n public static readonly GeneralBlockHours: number = 150;\n public static readonly GeneralSectorsCount: number = 20;\n}\n\nexport class ParameterType {\n public static readonly DateTime: string = 'DateTime';\n public static readonly Date: string = 'Date';\n public static readonly Boolean: string = 'Boolean';\n public static readonly MultiLine: string = 'Multiline';\n public static readonly SingleLine: string = 'String';\n public static readonly Integer: string = 'Integer';\n public static readonly Enum: string = 'Enum';\n}\n\nexport class AircraftTypeRecencyLandingType {\n public static readonly SimpleLanding: string = 'SimpleLanding';\n public static readonly SIM: string = 'SIM';\n public static readonly CustomLanding: string = 'CustomLanding';\n public static readonly Training: string = 'Training';\n}\n\nexport class FlightType {\n public static readonly Outbound: string = 'Outbound';\n public static readonly Inbound: string = 'Inbound';\n}\n\nexport enum HttpStatusCode {\n BadRequest = 400,\n Conflict = 409\n}\n\nexport enum DifferenceStateEnum {\n empty = 0,\n notAvailable = 1,\n availableFull = 2,\n available15 = 3,\n available30 = 4\n}\n\nexport enum LastUpdatedFilter {\n FunctionId,\n PartialLoadType,\n FunctionFromDate,\n TypeRatingFilters,\n QualificationIds,\n InstructorFilters,\n ContractTypes,\n ContractFlagTypes,\n ReferenceDate,\n MonthlyTypes,\n ReleaseFilterTypes,\n TopPersonIds,\n Search,\n Sort,\n Order,\n SortBaseDate,\n IsSortFrozen,\n PersonsFilterMode,\n DutyFilter\n}\n\nexport class MessageQueueItemDirectionType {\n public static readonly In: string = 'In';\n public static readonly Out: string = 'Out';\n public static readonly DeadletterToInbox: string = 'DeadletterToInbox';\n}\n\nexport class PageTitles {\n public static readonly Home: string = 'Home';\n public static readonly HealthBoard: string = 'Health Board';\n public static readonly JobList: string = 'Job List';\n public static readonly Maintenance: string = 'Maintenance';\n public static readonly Configs: string = 'Configs';\n public static readonly CrewApi: string = 'Crew API';\n public static readonly CrewPortal: string = 'Crew Portal';\n public static readonly HotelManagementDaily: string = 'Hotel Management Daily';\n public static readonly HotelManagementMonthly: string = 'Hotel Management Monthly';\n public static readonly RotationTool: string = 'Rotation Tool';\n public static readonly VacManagement: string = 'Vac Management';\n public static readonly RequestTool: string = 'Request Tool';\n public static readonly RequestCapacityTool: string = 'Request Capacity Tool';\n public static readonly PersonReport: string = 'Person Report';\n public static readonly RecurrentTrainingReport: string = 'Recurrent Training Report';\n public static readonly StandbyReport: string = 'Standby Report';\n public static readonly PlannedTrainingsReport: string = 'Planned Trainings Report';\n public static readonly FncRecencyReport: string = 'Fnc Recency Report';\n public static readonly AreaRouteCompetenceReport: string = 'Area Route Competence Report';\n public static readonly SectorsReport: string = 'Sectors Report';\n public static readonly CrewDutyListReport: string = 'Crew Duty List Report';\n public static readonly RosterReport: string = 'Roster Report';\n public static readonly CommentReport: string = 'Comment Report';\n public static readonly OffDaysReport: string = 'Off Days Report';\n public static readonly HomeStudy: string = 'Home Study';\n public static readonly UrgentDutyReport: string = 'Urgent Duty Report';\n public static readonly AircraftTypeRecencyCockpitReport: string = 'Aircraft Type Recency Cockpit Report';\n public static readonly AircraftTypeRecencyCabinReport: string = 'Aircraft Type Recency Cabin Report';\n public static readonly DooxReport: string = 'Doox Report';\n public static readonly ExperienceReport: string = 'Experience Report';\n public static readonly SimulatorLicenseStatusReport: string = 'Simulator License Status Report';\n public static readonly ErrorReport: string = 'Error Report';\n public static readonly PersonVacYearDetails: string = 'Person Vac Year Details';\n public static readonly TzvReport: string = 'Tzv Report';\n public static readonly ChangeLog: string = 'Change Log';\n public static readonly JeppesenTool: string = 'Jeppesen Tool';\n public static readonly AeroPersInterface: string = 'Aero Pers Interface';\n public static readonly LicenseManagement: string = 'License Management';\n public static readonly BlockDaysManagement: string = 'Block Days Management';\n public static readonly RequestTimeline: string = 'Request Timeline';\n public static readonly NotFound: string = 'Not Found';\n}\n\nexport class FreelanceTool {\n public static readonly CockpitJulOctMaxReduction: number = 16;\n}\n","export class Configurations {\n public static readonly globalGroup: string = 'Global';\n\n public static readonly crewPortalGroup: string = 'CrewPortal';\n public static readonly crewPortalChangelogPageRules: string = 'ChangelogPageRules';\n public static readonly crewPortalPersonFreelancePageRulesCockpit: string = 'PersonFreelancePageRulesCockpit';\n public static readonly crewPortalPersonFreelancePageRulesCabin: string = 'PersonFreelancePageRulesCabin';\n public static readonly crewPortalLtoPageRulesCabin: string = 'LtoPageRulesCabin';\n public static readonly crewPortalLtoPageRulesCockpit: string = 'LtoPageRulesCockpit';\n public static readonly crewPortalStoPageRulesCabin: string = 'StoPageRulesCabin';\n public static readonly crewPortalStoPageRulesCockpit: string = 'StoPageRulesCockpit';\n public static readonly crewPortalFlightPageRulesCabin: string = 'FlightPageRulesCabin';\n public static readonly crewPortalFlightPageRulesCockpit: string = 'FlightPageRulesCockpit';\n public static readonly crewPortalPersonNbuPageRules: string = 'PersonNbuPageRules';\n public static readonly crewPortalVacationPageRulesCabin: string = 'VacationPageRulesCabin';\n public static readonly crewPortalVacationPageRulesCockpit: string = 'VacationPageRulesCockpit';\n public static readonly crewPortalReservePageRulesCockpit: string = 'ReservePageRulesCockpit';\n\n public static readonly featureGroup: string = 'Feature';\n public static readonly featureEnableShowAllErrorCategories: string = 'EnableShowAllErrorCategories';\n public static readonly featureEnableChangeLogPushNotification: string = 'EnableChangeLogPushNotification';\n public static readonly featureEnableTzvCockpit: string = 'EnableTZVCockpit';\n public static readonly featureEnableTzvCabin: string = 'EnableTZVCabin';\n public static readonly featureEnableExperienceReport: string = 'EnableExperienceReport';\n public static readonly featureEnableLTECabin: string = 'EnableLTECabin';\n public static readonly featureEnableLogbook: string = 'EnableLogbook';\n public static readonly featureEnableTakeOffRecencyOnCrewPortal: string = 'EnableTakeOffRecencyOnCrewPortal';\n public static readonly featureEnableCabinAttestation: string = 'EnableCabinAttestation';\n public static readonly featureEnableSimOverview: string = 'EnableSimOverview';\n public static readonly featureEnableSimCourseOverview: string = 'EnableSimCourseOverview';\n public static readonly featureEnableEfaUi: string = 'EnableEfaExportUi';\n public static readonly featureEnableEBT: string = 'EnableEBT';\n public static readonly featureEnableReserveTool: string = 'EnableReserveTool';\n public static readonly featureEnableAiExplanation: string = 'EnableAzureAiValidationExplanation';\n\n public static readonly ebtGroup:string = 'EBT';\n public static readonly ebtFromDate: string = 'EBTFromDate';\n\n public static readonly validationGroup: string = 'Validation';\n public static readonly validationXStarManualTagEffectiveFromDate: string = 'XStarManualTagEffectiveFromDate';\n\n public static readonly featureVacUbuKey: string = 'U-VAC/U-UBU';\n public static readonly cabinCockpitFlagsEnableKey: string = 'CabinCockpitFlagsEnable';\n public static readonly recencyTimelinePopup: string = 'RecencyTimelinePopup';\n public static readonly enableEasaWarning: string = 'EnableEasaWarning';\n public static readonly featureKeys: string[] = [Configurations.featureVacUbuKey, Configurations.cabinCockpitFlagsEnableKey, Configurations.recencyTimelinePopup, Configurations.enableEasaWarning];\n\n public static readonly helpLinkKey: string = 'HelpLink';\n public static readonly requestToolGroup: string = 'RequestTool';\n public static readonly allowEditStoInDateRangeAsLto: string = 'AllowEditStoInDateRangeAsLto';\n public static readonly hideVacToolLinkFor: string = 'HideVacToolLinkFor';\n public static readonly enablePWA: string = 'EnablePWA';\n\n public static readonly pushNotificationTag_ChangeLog: string = 'ChangeLog';\n}\n","export class DateTime {\n public static readonly jsonDateFormat: string = 'YYYY-MM-DD';\n public static readonly viewDateFormat: string = 'DD.MM.YYYY';\n public static readonly jsonFullFormat: string = 'YYYY-MM-DD HH:mm:ss';\n public static readonly jsonDateTimeFormat: string = 'YYYY-MM-DDTHH:mm:ssZ';\n public static readonly viewFullFormat: string = 'DD.MM.YYYY HH:mm';\n public static readonly momentFullFormat: string = 'DD.MM.YYYY HH:mm:ss';\n public static readonly viewMonthFormat: string = 'MM.YYYY';\n public static readonly timeFormat: string = 'HH:mm';\n public static readonly minDate: string = '01.01.1970';\n public static readonly dayMonthFormat: string = 'DD.MM';\n public static readonly tcDayFormat: string = 'dd';\n public static readonly ocDayFormat: string = 'D';\n public static readonly fullMonthFullYearDateFormat: string = 'MMMM YYYY';\n public static readonly gridDateFormat: string = 'dd.MM.yyyy';\n public static readonly gridDateTimeFormat: string = 'dd.MM.yyyy HH:mm';\n}\n","export class Jobs {\n public static readonly AeroPersExportJob: string = 'AeroPersExportJob';\n public static readonly EfaExportJob: string = 'EfaExportJob';\n public static readonly ExportCrewDutyListJob: string = 'ExportCrewDutyListJob';\n public static readonly ExportLogbookJob: string = 'ExportLogbookJob';\n public static readonly CateringReportJob = 'CateringReportJob';\n public static readonly ReleaseScheduleJob = 'ReleaseScheduleJob';\n public static readonly SmsQueueJob = 'SmsQueueJob';\n public static readonly QualityLoopExportJob = 'QualityLoopExportJob';\n}\n","export class KeyboardKeys {\n public static readonly ENTER: number = 13;\n public static readonly COMMA: number = 188;\n public static readonly ESCAPE: number = 27;\n public static readonly BACKSPACE: number = 8;\n public static readonly C: number = 67;\n public static readonly H: number = 72;\n public static readonly V: number = 86;\n public static readonly Z: number = 90;\n}\n\nexport class KeyboardCodes {\n public static readonly ENTER: string = 'Enter';\n public static readonly ESCAPE: string = 'Escape';\n public static readonly BACKSPACE: string = 'Backspace';\n}\n","import { AzureAuth, UserPermissions } from \"@app/Components\";\n\nexport class PersonFunctions {\n public static readonly FCM: string = 'Cabin & Cockpit';\n public static readonly PIC: string = 'PIC';\n public static readonly FO: string = 'FO';\n public static readonly COCKPIT: string = 'Cockpit';\n public static readonly SC: string = 'SC';\n public static readonly CC: string = 'CC';\n public static readonly CABIN: string = 'Cabin';\n public static readonly OBS1: string = 'OBS1';\n public static readonly OBS2: string = 'OBS2';\n public static readonly OPR: string = 'OPR';\n public static readonly OGE: string = 'OGE';\n public static readonly OGG: string = 'OGG';\n public static readonly OGGE: string = 'OGGE';\n public static readonly OMCC: string = 'OMCC';\n public static readonly OFC: string = 'OFC';\n public static readonly GROUND: string = 'Ground';\n public static readonly FSE: string = 'Fse';\n public static readonly MARSHALS = \"Marshals\";\n public static readonly TIG: string = \"Tiger\";\n public static readonly FFX: string = \"Flying Fox\";\n}\n\nexport class PersonFunctionsIds {\n public static readonly PIC: string = '00434950-0000-0000-0000-000000000000';\n public static readonly FO: string = '00004f46-0000-0000-0000-000000000000';\n public static readonly CC: string = '00004343-0000-0000-0000-000000000000';\n public static readonly SC: string = '00004353-0000-0000-0000-000000000000';\n public static readonly OPR: string = '0052504f-0000-0000-0000-000000000000';\n public static readonly OGE: string = '0045474f-0000-0000-0000-000000000000';\n public static readonly OGG: string = '0047474f-0000-0000-0000-000000000000';\n public static readonly OGGE: string = '4547474f-0000-0000-0000-000000000000';\n public static readonly OMCC: string = '43434d4f-0000-0000-0000-000000000000';\n public static readonly FSE: string = '00455346-0000-0000-0000-000000000000';\n public static readonly TIG: string = '00474954-0000-0000-0000-000000000000';\n public static readonly FFX: string = '00584646-0000-0000-0000-000000000000';\n}\n\nexport class FunctionGroupIds {\n public static readonly Fcm: string = '004d4346-0000-0000-0000-000000000000';\n public static readonly Cabin: string = '69626143-006e-0000-0000-000000000000';\n public static readonly Cockpit: string = '6b636f43-6970-0074-0000-000000000000';\n public static readonly Ground: string = '756f7247-646e-0000-0000-000000000000';\n public static readonly Fse: string = '00657346-0000-0000-0000-000000000000';\n public static readonly Marshals: string = '7372614d-6168-736c-0000-000000000000';\n\n public static groupMap: { [functionName: string]: string } = {\n Cockpit: FunctionGroupIds.Cockpit,\n PIC: FunctionGroupIds.Cockpit,\n FO: FunctionGroupIds.Cockpit,\n Cabin: FunctionGroupIds.Cabin,\n SC: FunctionGroupIds.Cabin,\n CC: FunctionGroupIds.Cabin,\n Ground: FunctionGroupIds.Ground,\n OPR: FunctionGroupIds.Ground,\n OGE: FunctionGroupIds.Ground,\n OGGE: FunctionGroupIds.Ground,\n OMCC: FunctionGroupIds.Ground,\n OFC: FunctionGroupIds.Ground\n };\n public static functionNameMap: { [functionId: string]: string } = {\n [PersonFunctionsIds.PIC]: PersonFunctions.COCKPIT,\n [PersonFunctionsIds.FO]: PersonFunctions.COCKPIT,\n [PersonFunctionsIds.SC]: PersonFunctions.CABIN,\n [PersonFunctionsIds.CC]: PersonFunctions.CABIN,\n [PersonFunctionsIds.OPR]: PersonFunctions.OPR,\n [PersonFunctionsIds.OGE]: PersonFunctions.OGE,\n [PersonFunctionsIds.OGG]: PersonFunctions.OGG,\n [PersonFunctionsIds.OGGE]: PersonFunctions.OGGE,\n [PersonFunctionsIds.OMCC]: PersonFunctions.OMCC,\n [PersonFunctionsIds.FSE]: PersonFunctions.FSE,\n [PersonFunctionsIds.TIG]: PersonFunctions.MARSHALS,\n [PersonFunctionsIds.FFX]: PersonFunctions.MARSHALS,\n };\n public static functionGroupNameMap: { [functionGroupId: string]: string } = {\n [FunctionGroupIds.Cockpit]: 'Cockpit',\n [FunctionGroupIds.Cabin]: 'Cabin',\n [FunctionGroupIds.Ground]: 'Ground',\n [FunctionGroupIds.Fse]: 'Fse',\n [FunctionGroupIds.Marshals]: 'Marshals',\n };\n\n public static groupIdsMap: { [functionId: string]: string } = {\n [PersonFunctionsIds.OPR]: FunctionGroupIds.Ground,\n [PersonFunctionsIds.OGE]: FunctionGroupIds.Ground,\n [PersonFunctionsIds.OGG]: FunctionGroupIds.Ground,\n [PersonFunctionsIds.OMCC]: FunctionGroupIds.Ground,\n [PersonFunctionsIds.OGGE]: FunctionGroupIds.Ground,\n [PersonFunctionsIds.SC]: FunctionGroupIds.Cabin,\n [PersonFunctionsIds.CC]: FunctionGroupIds.Cabin,\n [PersonFunctionsIds.PIC]: FunctionGroupIds.Cockpit,\n [PersonFunctionsIds.FO]: FunctionGroupIds.Cockpit\n };\n\n public static cockpitMap: { [functionName: string]: string } = {\n [PersonFunctions.FO]: PersonFunctionsIds.FO,\n [PersonFunctions.PIC]: PersonFunctionsIds.PIC\n };\n public static fcmWithGroupIds: string[] = [FunctionGroupIds.Fcm];\n public static cockpitWithGroupIds: string[] = [PersonFunctionsIds.PIC, PersonFunctionsIds.FO, FunctionGroupIds.Cockpit];\n public static cabinIdWithGroupsIds: string[] = [PersonFunctionsIds.CC, PersonFunctionsIds.SC, FunctionGroupIds.Cabin];\n public static groundWithGroupsIds: string[] = [PersonFunctionsIds.OPR, PersonFunctionsIds.OGE, PersonFunctionsIds.OGG, PersonFunctionsIds.OGGE, PersonFunctionsIds.OMCC, FunctionGroupIds.Ground];\n public static fseWithGroupsIds: string[] = [PersonFunctionsIds.FSE, FunctionGroupIds.Fse];\n public static marshalsGroupsIds: string[] = [PersonFunctionsIds.TIG, PersonFunctionsIds.FFX];\n public static marshalsWithGroupsIds: string[] = [PersonFunctionsIds.TIG, PersonFunctionsIds.FFX, FunctionGroupIds.Marshals];\n\n public static groupIds: string[] = [FunctionGroupIds.Cockpit, FunctionGroupIds.Cabin, FunctionGroupIds.Ground];\n public static cockpitIds: string[] = [PersonFunctionsIds.PIC, PersonFunctionsIds.FO];\n public static cabinIds: string[] = [PersonFunctionsIds.CC, PersonFunctionsIds.SC];\n public static groundIds: string[] = [PersonFunctionsIds.OPR, PersonFunctionsIds.OGE, PersonFunctionsIds.OGG, PersonFunctionsIds.OGGE, PersonFunctionsIds.OMCC];\n\n public static getAvailableFunctionIds(): string[] {\n const result: string[] = [];\n if (AzureAuth.hasAccess(UserPermissions.RosterCockpitRead)) {\n result.push(FunctionGroupIds.Cockpit, PersonFunctionsIds.FO, PersonFunctionsIds.PIC);\n }\n if (AzureAuth.hasAccess(UserPermissions.RosterCabinRead)) {\n result.push(FunctionGroupIds.Cabin, PersonFunctionsIds.SC, PersonFunctionsIds.CC);\n }\n if (AzureAuth.hasAccess(UserPermissions.RosterCockpitRead) && AzureAuth.hasAccess(UserPermissions.RosterCabinRead)) {\n result.push(FunctionGroupIds.Fcm);\n }\n if (AzureAuth.hasAccess(UserPermissions.RosterGroundRead)) {\n result.push(FunctionGroupIds.Ground, PersonFunctionsIds.OGE, PersonFunctionsIds.OGGE, PersonFunctionsIds.OPR, PersonFunctionsIds.OMCC);\n }\n if (AzureAuth.hasAccess(UserPermissions.RosterFseRead)) {\n result.push(FunctionGroupIds.Fse);\n }\n if (AzureAuth.hasAccess(UserPermissions.RosterMarshalRead)) {\n result.push(FunctionGroupIds.Marshals, PersonFunctionsIds.FFX, PersonFunctionsIds.TIG);\n }\n return result;\n }\n}\n","/* eslint-disable max-classes-per-file */\n\nexport class VacationYearPeriodStatus {\n public static readonly Upcoming: string = 'Upcoming';\n public static readonly OpenRoundOne: string = 'OpenRoundOne';\n public static readonly OpenRoundTwo: string = 'OpenRoundTwo';\n public static readonly Approval: string = 'Approval';\n public static readonly Extended: string = 'Extended';\n public static readonly Closed: string = 'Closed';\n}\n\nexport class VacationRequestPriority {\n public static readonly low: string = 'Low';\n public static readonly medium: string = 'Medium';\n public static readonly high: string = 'High';\n}\n\nexport class VacationRequestColorizeType {\n public static readonly slashed: string = 'Slashed';\n}\n\nexport class VacationRequestType {\n public static readonly vac_p: string = 'VAC_P';\n public static readonly vac_s: string = 'VAC_S';\n public static readonly vac_n: string = 'VAC_N';\n public static readonly vac_v: string = 'VAC_V';\n public static readonly ubu: string = 'UBU';\n public static readonly vac: string = 'VAC';\n public static readonly vac_w: string = 'VAC_W';\n public static readonly ubu_j_s: string = 'UBU_J_S';\n public static readonly ubu_c: string = 'UBU_C';\n public static readonly ubu_p: string = 'UBU_P';\n public static readonly ubu_k: string = 'UBU_K';\n}\n\nexport class PersonRequestVacDecision {\n public static readonly None: string = 'None';\n public static readonly Confirmed: string = 'Confirmed';\n public static readonly Denied: string = 'Denied';\n public static readonly ConfirmedAlternative: string = 'ConfirmedAlternative';\n public static readonly DeniedAlternative: string = 'DeniedAlternative';\n}\n\nexport enum PersonRequestVacDecisionEnum {\n None = 0,\n Confirmed = 1,\n Denied = 2,\n ConfirmedAlternative = 3,\n DeniedAlternative = 4\n}\n\nexport class PersonAlternativeRequestDecision {\n public static readonly Accept: string = 'Accept';\n public static readonly Decline: string = 'Decline';\n}\n\nexport class PersonRequestVac14DaysRuleStatus {\n public static readonly IsNotFulfilledYetButCanBe: string = 'IsNotFulfilledYetButCanBe';\n public static readonly IsFulfilled: string = 'IsFulfilled';\n public static readonly IsNotFulfilled: string = 'IsNotFulfilled';\n}\n\nexport class PersonRequestVacCategory {\n public static readonly Variant: string = 'Variant';\n public static readonly Alternative: string = 'Alternative';\n public static readonly Reality: string = 'Reality';\n}\n\nexport class RequestStatusDisplayName {\n public static readonly RequestedToApprove: string = 'Requested To Approve';\n public static readonly RequestedToRemove: string = 'Requested To Remove';\n public static readonly Approved: string = 'Approved';\n public static readonly Rejected: string = 'Rejected';\n public static readonly RejectedByPlanning: string = 'Rejected by Planning';\n public static readonly RejectedByCrew: string = 'Rejected by Crew';\n public static readonly RejectedByCancellation: string = 'Rejected by Cancellation';\n public static readonly Requested: string = 'Requested';\n public static readonly ManualAction: string = 'ManualAction';\n}\n\nexport class PersonRequestSummaryStatus {\n public static readonly InProgress: string = 'InProgress';\n public static readonly Approved: string = 'Approved';\n public static readonly Rejected: string = 'Rejected';\n public static readonly Requested: string = 'Requested';\n}\n\nexport class PersonRequestType {\n public static readonly Vacation: string = 'Vacation';\n public static readonly STO: string = 'STO';\n public static readonly LTO: string = 'LTO';\n public static readonly LTE: string = 'LTE';\n public static readonly Flight: string = 'Flight';\n public static readonly Reserve: string = 'Reserve';\n}\n\nexport class PersonRequestVacStatus {\n public static readonly RequestedToApprove: string = 'RequestedToApprove';\n public static readonly Pending: string = 'Pending';\n public static readonly Confirmed: string = 'Confirmed';\n public static readonly Denied: string = 'Denied';\n public static readonly ManualAction: string = 'ManualAction';\n}\n\nexport class PersonRequestVacBlockStatus {\n public static readonly Requested: string = 'Requested';\n public static readonly Pending: string = 'Pending';\n public static readonly AlternativePending: string = 'Alternative_Pending';\n public static readonly Closed: string = 'Closed';\n public static readonly AlternativeOffered: string = 'Alternative_Offered';\n}\n\nexport enum PersonRequestVacBlockStatusEnum {\n Requested = 0,\n Pending = 1,\n AlternativePending = 2,\n Closed = 3,\n AlternativeOffered = 4\n}\n\nexport enum TypeRatingEnum {\n A320 = 1,\n A330 = 2,\n A340 = 3,\n A334 = 4,\n A320Only = 5,\n A330Only = 6,\n A340Only = 7,\n A320And330Only = 8,\n A320And340Only = 9,\n A330And340Only = 10\n}\n","export class PrincipalConfig {\n public static readonly PersonFilterKey: string = 'person';\n public static readonly RosterViewStateKey: string = 'view-state';\n public static readonly ScrollPositionKey: string = 'scrollPosition';\n public static readonly ShowQuartersKey: string = 'show';\n public static readonly ShowSummaryKey: string = 'showSummary';\n public static readonly ShowRestTimeKey: string = 'showRest';\n public static readonly ShowDailyDutyFiguresKey: string = 'showDutyFigures';\n public static readonly ShowDeltaKey: string = 'showDelta';\n public static readonly ShowRosterFilters: string = 'showRosterFilters';\n public static readonly ReportFiltersKey: string = 'reportFilters';\n public static readonly ReportGridConfigKey: string = 'reportGridConfig';\n public static readonly ReportGridStateKey: string = 'reportGridState';\n public static readonly VacationToolKey: string = 'vacationToolState';\n public static readonly ChangeLogFiltersKey: string = 'changeLogFilters';\n public static readonly ChangeLogConfigKey: string = 'changeLogGridConfig';\n public static readonly UseKeyboardShortcutsKey: string = 'useKeyboardShortcuts';\n public static readonly ShowHistorizedRosterline: string = 'showHistorizedRosterline';\n public static readonly ShowSwissTime: string = 'showSwissTime';\n public static readonly ShowSwissTimeGround: string = 'showSwissTimeGround';\n public static readonly ShowActivePersons: string = 'showActivePersons';\n public static readonly Zoom: string = 'zoom';\n public static readonly ViewGroup: string = 'View';\n public static readonly DarkMode: string = 'DarkMode';\n public static readonly FdrGroundView: string = 'FdrGroundView';\n public static readonly SectorsSortOrder: string = 'SectorsSortOrder';\n\n public static readonly PersonFilterGroup: string = 'filter';\n public static readonly PersonOrderGroup: string = 'personOrder';\n public static readonly MainRosterGroup: string = 'main-roster';\n public static readonly CommonGroup: string = 'common';\n public static readonly ChangeLogGroup: string = 'changeLog';\n public static readonly FlightsGantGroup: string = 'flightsGantGroup';\n\n public static readonly PersonReportGroup: string = 'personReport';\n public static readonly SimulationReportGroup: string = 'simReport';\n public static readonly RosterImportsGroup: string = 'rosterImportsGroup';\n public static readonly AeroPersExportsGroup: string = 'aeroPersExportsGroup';\n public static readonly EfaExportsGroup: string = 'aeroPersExportsGroup';\n public static readonly RosterImportDetailsGroup: string = 'rosterImportDetailsGroup';\n public static readonly RecurrentTrainingReportGroup: string = 'recurrentTrainingReport';\n public static readonly SimulatorLicenseStatusReportGroup: string = 'simulatorLicenseStatusReport';\n public static readonly StandbyReportGroup: string = 'standbyReport';\n public static readonly VacationRequestReportGroup: string = 'vacationRequestReport';\n public static readonly TrainingsReportGroup: string = 'trainingsReport';\n public static readonly AirportRecencyReportGroup: string = 'airportRecencyReport';\n public static readonly AreaRouteCompetenceReportGroup: string = 'areaRouteCompetencyReport';\n public static readonly SectorsReportGroup: string = 'sectorsReport';\n public static readonly CrewDutyReportGroup: string = 'crewDutyReport';\n public static readonly HomeStudyReportGroup: string = 'homeStudyReport';\n public static readonly HomeStudyPersonGroup: string = 'homeStudyPersonReport';\n public static readonly CommentsReportGroup: string = 'commentsReport';\n public static readonly OffDaysReportGroup: string = 'offDaysReport';\n public static readonly AbsenceReportGroup: string = 'absenceReport';\n public static readonly RosterReportGroup: string = 'rosterReport';\n public static readonly VacationBalanceCorrectionGroup: string = 'vacationBalanceCorrection';\n public static readonly VacationToolGroup: string = 'vacationToolGroup';\n public static readonly HotelPreReservationLocationGroup: string = 'hotelPreReservationLocationGroup';\n public static readonly HotelPreReservationBookingGroup: string = 'hotelPreReservationBookingGroup';\n public static readonly HotelManagementDailyGroup: string = 'hotelManagementDailyGroup';\n public static readonly HotelManagementDailyDetailsGroup: string = 'hotelManagementDailyDetailsGroup';\n public static readonly AircraftTypeRecencyCockpitReportGroup: string = 'aircraftTypeRecencyCockpitReport';\n public static readonly AircraftTypeRecencyCabinReportGroup: string = 'aircraftTypeRecencyCabinReport';\n public static readonly DooxReportGroup: string = 'dooxReport';\n public static readonly SeniorityReportGroup: string = 'seniorityReport';\n public static readonly GroundStatisticsReportGroup: string = 'groundStatistics';\n public static readonly ExperienceReportGroup: string = 'experienceReportGroup';\n public static readonly VacationDetailsAbsenceGroup: string = 'VacationDetailsAbsence';\n public static readonly VacationDetailsRequestDaysGroup: string = 'VacationDetailsRequestDays';\n public static readonly ErrorReportGroup: string = 'errorReport';\n public static readonly XStarMonitoringReportGroup: string = 'xStarMonitoringReport';\n public static readonly DosimetryReportGroup: string = 'dosimetryReport';\n public static readonly CrewApiConfigReportGroup: string = 'crewapiconfig';\n public static readonly GenDecConfigReportGroup: string = 'gendecconfig';\n\n public static readonly RotationToolGroup: string = 'rotationTool';\n public static readonly VacManagementGroup: string = 'vacationManagementGroup';\n public static readonly VacManagementCockpitGroup: string = 'vacationManagementCockpitGroup';\n public static readonly VacManagementCabinGroup: string = 'vacationManagementCabinGroup';\n public static readonly VacManagementGroundGroup: string = 'vacationManagementGroundGroup';\n public static readonly PersonVacYearDetailsReportGroup: string = 'personVacYearDetailsReportGroup';\n public static readonly TzvYearOverviewReportGroup: string = 'tzvYearOverviewReportGroup';\n\n public static readonly LicenseManagementGroup: string = 'licenseManagementGroup';\n public static readonly CourseManagementGroup: string = 'courseManagementGroup';\n public static readonly CabinCrewAttestationGroup: string = 'cabinCrewAttestationGroup';\n public static readonly FdrGroup: string = 'flightDutyRecordGroup';\n public static readonly GenDecGroup: string = 'flightDutyRecordGroup';\n\n public static readonly ReserveManagementGroup: string = 'reserveManagementGroup';\n}","export class GlobalQueryParams {\n public static readonly impersonateAsPerson: string = 'impersonateAsPerson';\n public static readonly viewPersonId: string = 'viewPersonId';\n}\n\nexport class RequestToolQueryParams {\n public static readonly requestId: string = 'requestId';\n public static readonly vacationYearId: string = 'vacationYearId';\n public static readonly tzvYearId: string = 'tzvYearId';\n public static readonly courseId: string = 'courseId';\n public static readonly personRequestVacBlockId: string = 'personRequestVacBlockId';\n public static readonly personAnswer: string = 'personAnswer';\n public static readonly reserveYearId: string = 'reserveYearId';\n}\n","import { Jobs } from \"./Jobs\";\n\nexport class SignalREvents {\n public static readonly success: string = 'success';\n public static readonly warning: string = 'warning';\n public static readonly info: string = 'info';\n public static readonly error: string = 'error';\n\n public static readonly updateEasaAlert: string = 'UpdateEasaAlert';\n public static readonly updateStatusMaintenance: string = 'UpdateStatusMaintenance';\n public static readonly urgentErrorsChanged: string = 'urgentErrorsChanged';\n public static readonly urgentErrorsRPChanged: string = 'urgentErrorsRPChanged';\n public static readonly urgentFlightsChanged: string = 'urgentFlightsChanged';\n public static readonly sendMaintenanceNotification: string = 'SendMaintenanceNotification';\n public static readonly personRequestVacBlockChanged: string = 'personRequestVacBlockChanged';\n public static readonly personRequestVacAbsenceBlockChanged: string = 'personRequestVacAbsenceBlockChanged';\n public static readonly personRequestTzvBlockChanged: string = 'personRequestTzvBlockChanged';\n public static readonly personRequestReserveBlockChanged: string = 'personRequestReserveBlockChanged';\n public static readonly personRequestVacReportLineChangedAsync: string = 'personRequestVacReportLineChangedAsync';\n public static readonly personRequestReserveReportLineChanged: string = 'personRequestReserveReportLineChanged';\n public static readonly personRevalidationComplete: string = 'personRevalidationComplete';\n public static readonly refreshPersonRange: string = 'refreshPersonRange';\n public static readonly rosterHidePlanningPeriod: string = 'rosterHidePlanningPeriod';\n public static readonly rosterPlanningRsvChanged: string = 'rosterPlanningRsvChanged';\n public static readonly jobStatusChanged: string = 'jobStatusChanged';\n public static readonly jobProgressMaxValueChanged: string = 'jobProgressMaxValueChanged';\n public static readonly jobProgressValueChanged: string = 'jobProgressValueChanged';\n public static readonly jobExportCompleted: string = 'jobExportCompleted';\n public static readonly jobMailStatusChanged: string = 'jobMailStatusChanged';\n public static readonly standByReportNotification: string = 'StandByReportNotification';\n public static readonly requestToolPointsNotification: string = 'requestToolPointsNotification';\n public static readonly requestToolGrantJobChangeStatus: string = 'requestToolGrantJobChangeStatus';\n public static readonly refreshPersonRequestFlight: string = 'refreshPersonRequestFlight';\n public static readonly refreshPersonRequestFlightStatus: string = 'refreshPersonRequestFlightStatus';\n public static readonly refreshPersonRequestAvailableFlight: string = 'refreshPersonRequestAvailableFlight';\n public static readonly refreshPersonRequestOff: string = 'refreshPersonRequestOff';\n public static readonly availableVacTypesChanged: string = 'availableVacTypesChanged';\n public static readonly sendJobTimeline: string = 'sendJobTimeline';\n public static readonly releaseHistoryStep: string = 'releaseHistoryStep';\n public static readonly sendApplyShadowDutiesJobProgressValue: string = 'sendApplyShadowDutiesJobProgressValue';\n public static readonly releaseHistoryResult: string = 'releaseHistoryResult';\n public static readonly changeLogNotification: string = 'changeLogNotification';\n public static readonly notifyFlightChanged: string = 'flightChanged';\n public static readonly rosterActivity: string = 'rosterActivity';\n public static readonly updatePersonConnection: string = 'updatePersonConnection';\n public static readonly simulationCourseChanged: string = 'simulationCourseChanged';\n public static readonly refreshPersonRequestReserve: string = 'refreshPersonRequestReserve';\n public static readonly aiExplainValidationMessageReply: string = 'aiExplainValidationMessageReply';\n}\n\nexport class SignalRMethods {\n public static readonly updateRosterActivity: string = 'updateRosterActivity';\n public static readonly updatePersonIsActive: string = 'updatePersonIsActive';\n public static readonly updatePersonLastActivity: string = 'updatePersonLastActivity';\n public static readonly updatePersonLocation: string = 'updatePersonLocation';\n\n public static readonly explainValidationError: string = 'explainValidationError';\n public static readonly stopExplanation: string = 'stopExplanation';\n}\nexport class SignalRGroups {\n public static readonly Job: string = ':Internal:JOB';\n public static readonly ChangeLog: string = ':Internal:CHANGE_LOG';\n public static readonly Roster: string = ':Internal:ROSTER';\n public static readonly RosterPlanningPeriod: string = ':Internal:ROSTER-PP';\n public static readonly RequestTimeline: string = ':Internal:REQUEST_TIMELINE';\n public static readonly ReleaseRoster: string = ':Internal:RELEASE_ROSTER';\n public static readonly StandByReport: string = ':Internal:STAND_BY_REPORT';\n public static readonly VacationManagment: string = ':Internal:VACATION_MANAGMENT';\n public static readonly ReserveManagment: string = ':Internal:RESERVE_MANAGMENT';\n public static readonly UrgentError: string = ':Internal:URGENT_ERROR';\n public static readonly RosterActivity: string = ':Internal:ROSTER_ACTIVITY';\n public static readonly ClientActivity: string = ':Internal:CLIENT_ACTIVITY';\n\n public static readonly RequestToolFlight: string = ':Internal:REQUEST_TOOL_FLIGHT';\n public static readonly RequestToolLtoStoFlight: string = ':Internal:REQUEST_TOOL_LTO_STO_FLIGHT';\n public static readonly RequestToolVacation: string = ':Internal:REQUEST_TOOL_VACATION';\n public static readonly RequestToolLtoSto: string = ':Internal:REQUEST_TOOL_LTO_STO';\n public static readonly RequestToolReserve: string = ':Internal:REQUEST_TOOL_RESERVE';\n}\n\nexport class SignalRJobGroups {\n public static readonly CateringReport = `${SignalRGroups.Job}:${Jobs.CateringReportJob}`;\n public static readonly ExportCrewDutyListReport = `${SignalRGroups.Job}:${Jobs.ExportCrewDutyListJob}`;\n public static readonly ExportLogbook = `${SignalRGroups.Job}:${Jobs.ExportLogbookJob}`;\n public static readonly ReleaseScheduleJob = `${SignalRGroups.Job}:${Jobs.ReleaseScheduleJob}`;\n public static readonly SmsQueueJob = `${SignalRGroups.Job}:${Jobs.SmsQueueJob}`;\n public static readonly QualityLoopExport = `${SignalRGroups.Job}:${Jobs.QualityLoopExportJob}`;\n}\n\nexport class ComponentUrls {\n public static readonly HubUrl: string = '/hubs/notification';\n public static readonly QsImpersonatedPersonId: string = 'impersonate-p';\n public static readonly QsViewPersonId: string = 'view-p';\n public static readonly QsImpersonatedRoles: string = 'impersonate-r';\n public static readonly QsToken: string = 'token';\n}\n","export class Sizes {\n public static readonly dutyHeight: number = 45;\n public static readonly dutyWidths: number = 45;\n public static readonly personWidth: number = 100;\n public static readonly quarterWidth: number = 32;\n public static readonly consecutiveMonthsWidth: number = 35;\n public static readonly deltaWidth: number = 32;\n public static readonly summaryWidth: number = 32;\n public static readonly summaryWidthExtra: number = 5;\n public static readonly orderMarkWidth: number = 8;\n public static readonly longHaulLineHeight: number = 17;\n public static readonly scrollWidth: number = 17;\n public static readonly dutyPeriodHeight: number = 35;\n public static readonly historizedDutyHeight: number = Sizes.dutyHeight + 8;\n public static readonly datesHeight: number = 40;\n public static readonly gridVirtualSelectMinWidth: number = 180;\n public static readonly dutyListItemWidth: number = 40;\n public static readonly requestHeight: number = 20;\n public static readonly maxJeppesenImportFileSize: number = 1024 * 1024 * 50;\n public static readonly flightLineHeight: number = 30;\n public static readonly rotationHeight: number = 20;\n public static readonly actualRotationHeight: number = 3;\n public static readonly rotationBlockHeight: number = Sizes.rotationHeight + Sizes.actualRotationHeight;\n}\n","import { observable, action, computed } from 'mobx';\nimport UrlService from './Services/UrlService';\nimport { UserProfileDTO } from '@app/Models';\nimport { GlobalQueryParams } from './AppConstants/QueryParams';\nimport { ComponentUrls } from './AppConstants/SignalR';\nimport { getEncodedToken } from './Helpers/JWTHelper';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\ntype JwtToken = {\n aio: string;\n amr: string[];\n aud: string;\n exp: number;\n family_name: string;\n given_name: string;\n iat: number;\n ipaddr: string;\n iss: string;\n name: string;\n nbf: number;\n nonce: string;\n oid: string;\n rh: string;\n roles: string[];\n sub: string;\n tid: string;\n unique_name: string;\n upn: string;\n uti: string;\n ver: string;\n};\n\nclass AppStore {\n public readonly isPrintMode: boolean = this.printMode;\n @observable isLoading: boolean = false;\n @observable isHistorized: boolean = false;\n @observable isLastHistorizedMonth: boolean = false;\n @observable isAppReady: boolean = false;\n @observable isChangeLogOff: boolean = true;\n @observable isCtrlKey: boolean = false;\n @observable isShiftKey: boolean = false;\n @observable releasedDate: Date | null;\n @observable isContrastMode: boolean = true;\n @observable isRosterWriteUnlocked: boolean = false;\n @observable public isShortcutsEnabled: boolean = true;\n @observable isAdaptive: boolean = false;\n @observable bodyClassList: Set = new Set([].slice.apply(document.body.classList));\n signalRConnectionId?: string;\n\n notificationBar: HTMLElement | null = null;\n notificationBarMessage: HTMLElement | null = null;\n\n constructor () {\n applyDecorators(this);\n document.body.addEventListener('keydown', this._keydownHandler);\n document.body.addEventListener('mouseenter', this._appMouseInHandler);\n const mode: boolean | null = this.getValue('contrastMode');\n if (mode !== null) this.isContrastMode = mode;\n }\n\n public get crewPortalUrl(){\n if (this.impersonatedUser && !this.isCrewPortalDns) {\n return '/crew-portal';\n }\n\n const crewPortalUrlConfig = (window as {crewPortalUrl?: string}).crewPortalUrl;\n const isCrewPortalConfigured = !!crewPortalUrlConfig;\n const crewPortalUrl = isCrewPortalConfigured ? (window.location.protocol + '//' + crewPortalUrlConfig) : '/crew-portal';\n return crewPortalUrl;\n }\n\n public get isCrewPortalDns(){\n return window.location.host.toLowerCase() == (window as {crewPortalUrl?: string}).crewPortalUrl?.toLowerCase();\n }\n\n public get isMobileView (): boolean {\n return window.innerWidth <= 1000;\n }\n\n public get isMacOS (): boolean {\n return window.navigator.platform.includes('Mac');\n }\n\n public get currentToken (): string {\n return this.getValue('currentToken') || '';\n }\n\n private _currentUser: UserProfileDTO | null = null;\n public get currentUser (): UserProfileDTO | null {\n if (!this._currentUser) {\n this._currentUser = this.getValue('currentUser');\n }\n\n return this._currentUser;\n }\n\n public get impersonatedUser (): IImpersonationModel | null {\n return this.impersonatedUsersStack.pop() || null;\n }\n\n public get impersonatedUsersStack () {\n return this.getValue('impersonatedUsers') || [];\n }\n\n public setImpersonatedUserValue (value: IImpersonationModel[]) {\n this.setValue('impersonatedUsers', value);\n }\n\n setImpersonatedUser (value: IImpersonationModel) {\n const stack = this.impersonatedUsersStack;\n stack.push(value);\n this.setImpersonatedUserValue(stack);\n }\n\n exitImpersonation () {\n const stack = this.impersonatedUsersStack;\n stack.pop();\n if (stack.length) {\n this.setImpersonatedUserValue(stack);\n } else {\n localStorage.removeItem('impersonatedUsers');\n }\n window.location.reload();\n }\n\n public get impersonatedUserRoles(): string[] {\n return this.impersonatedUser?.roles || [];\n }\n\n public get realUserRoles (): string[] {\n return this.currentUser?.roles || [];\n }\n\n get currentUserName () {\n if (this.currentUser) {\n return this.currentUser.name ?? this.currentUser?.unique_name ?? 'guest';\n }\n\n return 'guest';\n }\n\n isAuthorized (): boolean {\n return !!(this.currentToken && this.currentUser);\n }\n\n clearUserData () {\n localStorage.removeItem('currentUser');\n localStorage.removeItem('currentToken');\n localStorage.removeItem('impersonatedUser');\n }\n\n setValue (key: string, value: T) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n getValue (key: string): T | null {\n const value = localStorage.getItem(key);\n return value ? (JSON.parse(value) as T) : null;\n }\n\n removeItem (key: string) {\n localStorage.removeItem(key);\n }\n\n @action.bound\n setAppReady () {\n this.isAppReady = true;\n }\n\n @action\n switchMode (value: boolean) {\n this.isContrastMode = value;\n this.setValue('contrastMode', value);\n }\n\n @action.bound\n _keydownHandler (event: KeyboardEvent) {\n /* Windows Ctrl key is MacOS Command key. Keep in mind to check isMacOS. event.metaKey in Windows is WINDOWS key.*/\n this.isCtrlKey = event.ctrlKey || (this.isMacOS && event.metaKey);\n this.isShiftKey = event.shiftKey;\n }\n\n @action.bound\n _appMouseInHandler (event: MouseEvent) {\n this.isCtrlKey = event.ctrlKey || (this.isMacOS && event.metaKey);\n this.isShiftKey = event.shiftKey;\n }\n\n @computed get printMode () {\n return UrlService.getParam('printMode') === 'enabled';\n }\n\n @computed get historizedMode () {\n return UrlService.getParam('historizedMode') === 'enabled';\n }\n\n @action.bound\n switchChangeLogCheckBox () {\n this.isChangeLogOff = !this.isChangeLogOff;\n }\n\n @action.bound\n setChangeLogCheckBoxValue (value: boolean) {\n if (this.isChangeLogOff !== value) this.switchChangeLogCheckBox();\n }\n\n public get currentTokenObj () {\n return this._parseJwtToken(this.currentToken);\n }\n\n private _parseJwtToken (token: string): JwtToken | null {\n if (!token) return null;\n\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n atob(base64).split('').map((c: string) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join('')\n );\n\n return JSON.parse(jsonPayload);\n }\n\n public getQueryStringAuthParams (opts?: { single?: boolean, token?: boolean }) {\n const parameters: string[] = [];\n\n const impersonateAsPersonId = UrlService.getParam(GlobalQueryParams.impersonateAsPerson);\n if (impersonateAsPersonId) {\n parameters.push(ComponentUrls.QsImpersonatedPersonId + '=' + impersonateAsPersonId);\n }\n\n const viewPersonId = UrlService.getParam(GlobalQueryParams.viewPersonId);\n if (viewPersonId) {\n parameters.push(ComponentUrls.QsViewPersonId + '=' + viewPersonId);\n }\n\n if (!impersonateAsPersonId && this.impersonatedUser) {\n if (this.impersonatedUser.personId) {\n parameters.push(ComponentUrls.QsImpersonatedPersonId + '=' + this.impersonatedUser.personId);\n }\n if (this.impersonatedUser.roles) {\n parameters.push(ComponentUrls.QsImpersonatedRoles + '=' + encodeURIComponent(this.impersonatedUser.roles.join(',')));\n }\n }\n\n if (opts?.token) {\n const encodedToken = getEncodedToken(appStore.currentToken);\n parameters.push(ComponentUrls.QsToken + '=' + encodeURIComponent(encodedToken));\n }\n\n if (!parameters.length) {\n return '';\n }\n\n return (opts?.single ? '?' : '&') + parameters.join('&');\n }\n}\n\nexport interface IImpersonationModel {\n personId?: string;\n name?: string;\n roles?: Array;\n impersonateAsPrincipal?: boolean;\n email?: string;\n}\n\nexport const appStore = new AppStore();\n","import { observable, computed } from 'mobx';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\nexport enum CompletionType {\n //to track that at least one of operations is still pending\n Pending,\n //that operation was completed at least once fully\n //then completion is created, then is't not completed\n //and will be completed once at least one promise is finished *AND* \n //at least once waiting queue is empty (=all tasks are done once)\n Completed\n}\n\nexport class PromiseCompletion {\n @observable private _promiseList: PromiseLike[] = [];\n @observable private _completedOnce: boolean = false;\n private _type: CompletionType;\n private _waiters: (() => void)[] = [];\n\n constructor (type: CompletionType = CompletionType.Pending) {\n applyDecorators(this);\n this._type = type;\n }\n\n @computed\n get isCompleted () {\n let result = !this._promiseList.length;\n if (this._type === CompletionType.Completed) {\n result = this._completedOnce;\n }\n return result;\n }\n\n @computed\n get isPending () {\n return !!this._promiseList.length;\n }\n\n public add (callback: () => PromiseLike) {\n const promise = callback();\n this.subscribe(promise);\n return promise;\n }\n\n public subscribeRange (promises: PromiseLike[]) {\n promises.forEach((p) => this.subscribe(p));\n }\n\n public subscribe (promise: PromiseLike) {\n if (this._promiseList.indexOf(promise) !== -1) {\n throw new Error('Promise is already registered!');\n }\n\n this._promiseList.push(promise);\n promise.then(\n () => this._complete(promise),\n () => this._complete(promise)\n );\n }\n\n private _complete (promise: PromiseLike) {\n window.setTimeout(() => {\n const index = this._promiseList.indexOf(promise);\n if (index === -1) throw new Error('Promise is not registered!');\n\n this._promiseList.splice(index, 1);\n this._completedOnce = this._completedOnce || !this._promiseList.length;\n\n if (!this._promiseList.length) {\n const waiters = this._waiters.slice(0);\n this._waiters.length = 0;\n waiters.forEach((w) => w());\n }\n }, 0);\n }\n\n public wait (forceWait?: boolean): Promise {\n if (this._completedOnce && !forceWait) {\n return Promise.resolve();\n }\n\n if (this._completedOnce && forceWait && !this.isPending) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n this._waiters.push(resolve);\n });\n }\n}\n","import { computed } from 'mobx';\nimport { CompletionType, PromiseCompletion } from '@app/Classes/PromiseCompletion';\n\nexport type PromiseHandler = (item: T) => PromiseLike;\ntype ProgressHandler = (queueLength: number) => void;\n\nexport default class PromiseQueue {\n private _queue: {\n item: T;\n onDone: Function;\n handler: PromiseHandler;\n }[] = [];\n private _completion: PromiseCompletion = new PromiseCompletion(CompletionType.Pending);\n private _parallelTasksNumber: number = 0;\n private _maxParallelTasksNumber: number;\n private _waitHandlers: ProgressHandler[] = [];\n\n constructor(maxParallelTasksNumber: number = 1) {\n this._maxParallelTasksNumber = maxParallelTasksNumber;\n }\n\n public add(item: T, handler: PromiseHandler) {\n const promise = new Promise((resolve) => {\n this._queue.push({\n item: item,\n onDone: resolve,\n handler: handler\n });\n });\n this._completion.subscribe(promise);\n void this._processNextItem();\n }\n\n public async wait(callback?: ProgressHandler) {\n callback && this._waitHandlers.push(callback);\n try {\n await this._completion.wait();\n } finally {\n if (callback) {\n const handlerIndex = this._waitHandlers.indexOf(callback);\n if (handlerIndex !== -1) {\n this._waitHandlers.splice(handlerIndex, 1);\n }\n }\n }\n }\n\n private _notifyProgress() {\n this._waitHandlers.forEach((h) => h(this._queue.length + this._parallelTasksNumber));\n }\n\n @computed\n public get isPending() {\n return this._completion.isPending;\n }\n\n private async _processNextItem() {\n if (this._parallelTasksNumber >= this._maxParallelTasksNumber) {\n return;\n }\n\n const nextItem = this._queue.pop();\n if (!nextItem) return;\n\n this._parallelTasksNumber++;\n try {\n const handler = nextItem.handler;\n await handler(nextItem.item);\n } finally {\n this._parallelTasksNumber--;\n nextItem.onDone();\n this._notifyProgress();\n void this._processNextItem();\n }\n }\n}\n","import React, { PropsWithChildren } from 'react';\nimport { Helmet } from 'react-helmet';\n\ntype AircraftPlaceholderProps = PropsWithChildren & {\n pageTitle: string;\n mainClass: string;\n sceneMsgClass?: string;\n};\n\nexport default class AircraftPlaceholder extends React.PureComponent {\n render() {\n const { pageTitle, mainClass, sceneMsgClass, children } = this.props;\n return (\n
\n \n
\n \n \n \n \n \n \n \n \"\"\n
{children}
\n
\n
\n );\n }\n}\n","import { appStore } from '@app/AppStore';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { FunctionGroupIds } from '@app/AppConstants/PersonFunctions';\nimport { RosterCell } from '@app/Models/RosterCell';\nimport { DutyItem, FunctionModel } from '@app/Models/WebApiModels';\nimport { IPersonStore } from \"@app/Components/VirtualizedRoster\";\nimport { permissionStore } from '@app/Stores/PermissionStore';\n\nexport interface IWindowAdal extends Window {\n adal?: {\n redirectToLogin(): void;\n redirectToLogout(): void;\n };\n}\n\nexport class WritePermissionOptions {\n type: \"WritePermissionOptions\";\n personStore?: IPersonStore;\n personFunctionId?: string;\n ignorePermissions?: number[];\n}\n\nexport class AzureAuth {\n static logOut = (all?: boolean) => {\n appStore.clearUserData();\n const appWindow: IWindowAdal = window;\n all && appStore.setValue('logout-event', 'logout' + Math.random());\n appWindow.adal && appWindow.adal.redirectToLogout();\n };\n\n static exitImpersonation = () => {\n appStore.exitImpersonation();\n };\n\n static login = () => {\n appStore.clearUserData();\n const appWindow: IWindowAdal = window;\n appWindow.adal && appWindow.adal.redirectToLogin();\n };\n\n public static hasAccess(permissions: number | number[]) {\n const hasAdmin = permissionStore.currentUserPermissions.includes(UserPermissions.AdminToolsWrite);\n if (hasAdmin) return true;\n\n if (typeof permissions === 'number') {\n return permissionStore.currentUserPermissions.indexOf(permissions) !== -1;\n }\n\n if (Array.isArray(permissions)) {\n for (const permission of permissions) {\n if (permissionStore.currentUserPermissions.indexOf(permission) !== -1) {\n return true;\n }\n }\n }\n return false;\n }\n\n static get userUpn() {\n return appStore.currentUser?.unique_name || null;\n }\n\n static isAllowChangeForDate(date: Date) {\n const hasAccess = appStore.isRosterWriteUnlocked;\n if (hasAccess) {\n return true;\n }\n const dateNow = DateTimeService.today();\n const currentDay = dateNow.getUTCDate();\n const startOfMonth = DateTimeService.toFirstDayOfMonth(dateNow);\n const startOfPrevMonth = DateTimeService.addMonths(startOfMonth, -1);\n return !((currentDay >= 3 && DateTimeService.isBeforeDate(date, startOfMonth)) || DateTimeService.isBeforeDate(date, startOfPrevMonth));\n }\n\n static hasRosterAccess() {\n const rosterPermissions = [\n UserPermissions.RosterCabinRead,\n UserPermissions.RosterCockpitRead,\n UserPermissions.RosterGroundRead,\n UserPermissions.RosterFseRead,\n UserPermissions.RosterMarshalRead];\n\n return AzureAuth.hasAccess(rosterPermissions);\n }\n\n static hasCrewPortalAccess(functionId?: string | null) {\n\n if (typeof functionId === 'undefined') {\n return AzureAuth.hasAccess([\n UserPermissions.CrewPortalAccess,\n UserPermissions.ReadFDRCockpit,\n UserPermissions.ReadFDRCockpitAeropers,\n UserPermissions.ReadFDRCabin,\n UserPermissions.ReadFDRCabinEFA,\n UserPermissions.ReadFDRGround,\n UserPermissions.CrewPortalCockpitReadOthers,\n UserPermissions.CrewPortalCockpitAeropersReadOthers,\n UserPermissions.CrewPortalCabinEFAReadOthers,\n UserPermissions.CrewPortalCabinReadOthers,\n UserPermissions.CrewPortalGroundReadOthers,\n UserPermissions.CrewPortalCockpitCanControlNbu,\n UserPermissions.CrewPortalCabinCanControlNbu\n ]);\n }\n\n if (functionId === 'PIC' || functionId === 'FO' || functionId === FunctionGroupIds.Cockpit) {\n return AzureAuth.hasAccess([\n UserPermissions.ReadFDRCockpit,\n UserPermissions.ReadFDRCockpitAeropers,\n UserPermissions.CrewPortalCockpitReadOthers,\n UserPermissions.CrewPortalCockpitAeropersReadOthers,\n UserPermissions.CrewPortalCockpitCanControlNbu,\n UserPermissions.CrewPortalCabinCanControlNbu\n ]);\n }\n if (functionId === 'CC' || functionId === 'SC' || functionId === FunctionGroupIds.Cabin) {\n return AzureAuth.hasAccess([\n UserPermissions.ReadFDRCabin,\n UserPermissions.CrewPortalCabinReadOthers,\n UserPermissions.ReadFDRCabinEFA,\n UserPermissions.CrewPortalCabinEFAReadOthers\n ]);\n }\n if (functionId === 'OFC' || functionId === FunctionGroupIds.Ground) {\n return AzureAuth.hasAccess([\n UserPermissions.ReadFDRGround,\n UserPermissions.CrewPortalGroundReadOthers\n ]\n );\n }\n return AzureAuth.hasAccess(UserPermissions.CrewPortalAccess);\n }\n\n static canManageCrewPortal(isCockpit: boolean, isCabin: boolean, isGround: boolean, isOwnData?: boolean) {\n return !!isOwnData\n || isCockpit && AzureAuth.hasAccess(UserPermissions.CrewPortalCockpitWriteOthers)\n || isCabin && AzureAuth.hasAccess(UserPermissions.CrewPortalCabinWriteOthers)\n || isGround && AzureAuth.hasAccess(UserPermissions.CrewPortalGroundWriteOthers);\n }\n\n static getRosterPermissions = () => [\n UserPermissions.RosterCabinRead,\n UserPermissions.RosterCockpitRead,\n UserPermissions.RosterGroundRead,\n UserPermissions.RosterFseRead,\n UserPermissions.RosterMarshalRead\n ];\n\n\n static hasReadHistoryPermission(cells: RosterCell[], personStore: IPersonStore, rosterFunctionGroupId: string, focusedDuty: DutyItem | null) {\n if (!cells.length) {\n return false;\n }\n\n for (const cell of cells) {\n const personData = personStore.getDetails(cell.person.id);\n const pf = personData?.function;\n const hasNoContract = focusedDuty?.hasNoContract;\n\n if (!hasNoContract && !pf) {\n return false;\n }\n\n if (!hasNoContract && pf && !pf.functionGroupId && !pf.planningFunctionGroupId) {\n return false;\n }\n\n const rosterReadPermissions: number[][] = [];\n if (pf?.functionGroupId === FunctionGroupIds.Cockpit || pf?.planningFunctionGroupId === FunctionGroupIds.Cockpit || (hasNoContract && rosterFunctionGroupId === FunctionGroupIds.Cockpit)) {\n rosterReadPermissions.push([UserPermissions.SeeRosterHistoryCockpit]);\n }\n if (pf?.functionGroupId === FunctionGroupIds.Cabin || pf?.planningFunctionGroupId === FunctionGroupIds.Cabin || (hasNoContract && rosterFunctionGroupId === FunctionGroupIds.Cabin)) {\n rosterReadPermissions.push([UserPermissions.SeeRosterHistoryCabin]);\n }\n if (pf?.functionGroupId === FunctionGroupIds.Ground || pf?.planningFunctionGroupId === FunctionGroupIds.Ground || (hasNoContract && rosterFunctionGroupId === FunctionGroupIds.Ground)) {\n rosterReadPermissions.push([UserPermissions.SeeRosterHistoryGround]);\n }\n if (pf?.functionGroupId === FunctionGroupIds.Fse || pf?.planningFunctionGroupId === FunctionGroupIds.Fse || (hasNoContract && rosterFunctionGroupId === FunctionGroupIds.Fse)) {\n rosterReadPermissions.push([UserPermissions.SeeRosterHistoryFse]);\n }\n if (pf?.functionGroupId === FunctionGroupIds.Marshals || pf?.planningFunctionGroupId === FunctionGroupIds.Marshals || (hasNoContract && rosterFunctionGroupId === FunctionGroupIds.Marshals)) {\n rosterReadPermissions.push([UserPermissions.SeeRosterHistoryMarshal]);\n }\n\n for (const permissionId of rosterReadPermissions) {\n if (!AzureAuth.hasAccess(permissionId)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n static hasRosterWritePermission(cells: RosterCell[], options: WritePermissionOptions, rosterFunctionGroupId: string, onReleasedCheck?: (date: Date, functionGroupId: string | null, functionId?: string | null) => boolean, ignorePastCheck?: boolean) {\n if (!cells.length) {\n return false;\n }\n\n for (const cell of cells) {\n let personFunction: FunctionModel = {} as FunctionModel;\n\n if (options.personFunctionId) {\n personFunction.functionGroupId = options.personFunctionId;\n personFunction.planningFunctionGroupId = options.personFunctionId;\n } else if (options.personStore) {\n const personData = options.personStore.getDetails(cell.person.id);\n if (personData?.function) {\n personFunction = personData.function;\n } else if (rosterFunctionGroupId) {\n //in case no function found - failback to selected view\n personFunction.functionGroupId = rosterFunctionGroupId;\n personFunction.planningFunctionGroupId = rosterFunctionGroupId;\n }\n }\n\n if (!personFunction?.functionGroupId && !personFunction?.planningFunctionGroupId) {\n return false;\n }\n\n const isDateReleased = onReleasedCheck?.(cell.date, personFunction.functionGroupId ?? personFunction.planningFunctionGroupId ?? null, personFunction?.planningFunctionId);\n\n let rosterWritePermissions: number[][] = [];\n\n if ((rosterFunctionGroupId === FunctionGroupIds.Cockpit || rosterFunctionGroupId === FunctionGroupIds.Fcm)\n && (personFunction.functionGroupId === FunctionGroupIds.Cockpit || personFunction.planningFunctionGroupId === FunctionGroupIds.Cockpit)) {\n if (isDateReleased) {\n rosterWritePermissions.push([UserPermissions.RosterCockpitWriteTracking, UserPermissions.RosterCockpitWritePlanning]);\n } else {\n rosterWritePermissions.push([UserPermissions.RosterCockpitWritePlanning]);\n }\n }\n if ((rosterFunctionGroupId === FunctionGroupIds.Cabin || rosterFunctionGroupId === FunctionGroupIds.Fcm)\n && (personFunction.functionGroupId === FunctionGroupIds.Cabin || personFunction.planningFunctionGroupId === FunctionGroupIds.Cabin)) {\n if (isDateReleased) {\n rosterWritePermissions.push([UserPermissions.RosterCabinWriteTracking, UserPermissions.RosterCabinWritePlanning]);\n } else {\n rosterWritePermissions.push([UserPermissions.RosterCabinWritePlanning]);\n }\n }\n if (rosterFunctionGroupId === FunctionGroupIds.Ground\n && (personFunction.functionGroupId === FunctionGroupIds.Ground || personFunction.planningFunctionGroupId === FunctionGroupIds.Ground)) {\n if (isDateReleased) {\n rosterWritePermissions.push([UserPermissions.RosterGroundWriteTracking, UserPermissions.RosterGroundWritePlanning]);\n } else {\n rosterWritePermissions.push([UserPermissions.RosterGroundWritePlanning]);\n }\n }\n if (rosterFunctionGroupId === FunctionGroupIds.Fse\n && (personFunction.functionGroupId === FunctionGroupIds.Fse || personFunction.planningFunctionGroupId === FunctionGroupIds.Fse)) {\n rosterWritePermissions.push([UserPermissions.RosterFseWrite]);\n }\n if (rosterFunctionGroupId === FunctionGroupIds.Marshals\n && (personFunction.functionGroupId === FunctionGroupIds.Marshals || personFunction.planningFunctionGroupId === FunctionGroupIds.Marshals)) {\n rosterWritePermissions.push([UserPermissions.RosterMarshalWrite]);\n }\n\n if (options?.ignorePermissions && options.ignorePermissions.length > 0)\n rosterWritePermissions = rosterWritePermissions.map(permissions => permissions.filter(permission => options?.ignorePermissions?.findIndex(x => x === permission) === -1));\n\n if (!rosterWritePermissions.length) {\n return false;\n }\n\n for (const permissionId of rosterWritePermissions) {\n if (!AzureAuth.hasAccess(permissionId)) {\n return false;\n }\n }\n\n if (!AzureAuth.isAllowChangeForDate(new Date(cell.date)) && !ignorePastCheck) {\n return false;\n }\n }\n\n return true;\n }\n\n}\n\nexport enum UserPermissions {\n AdminToolsWrite = 1,\n AdminToolsRead = 2,\n AdminToolsSafe = 3,\n FullPermissionImpersonate = 5,\n LimitedPermissionImpersonate = 6,\n ChangeLogRead = 8,\n ChangeLogWrite = 9,\n RosterCabinRead = 10,\n RosterCabinWritePlanning = 11,\n RosterCabinWriteTracking = 12,\n RosterCabinRelease = 13,\n RosterCockpitRead = 15,\n RosterCockpitWritePlanning = 16,\n RosterCockpitWriteTracking = 17,\n RosterCockpitRelease = 18,\n RosterGroundRead = 20,\n RosterGroundWritePlanning = 21,\n RosterGroundWriteTracking = 22,\n RosterGroundRelease = 23,\n RosterGroundReport = 24,\n RosterMarshalRead = 25,\n RosterMarshalWrite = 26,\n RosterFseRead = 27,\n RosterFseWrite = 28,\n RosterWriteDuringPaymentCycle = 29,\n JCRImportRead = 30,\n JCRImportWrite = 31,\n RosterFseRelease = 33,\n RosterMarshalsRelease = 34,\n HidePlanningPeriod = 35,\n RosterReleasedPlanMinorChanges = 36,\n RosterGroundLimitedWrite = 37,\n RosterGroundTimeReportOtherWrite = 38,\n RosterGroundFlightOtherWrite = 39,\n ToolHotelManagement = 40,\n RosterGroundDutyTimeOtherWrite = 41,\n ToolEfaRead = 43,\n ToolEfaWrite = 44,\n ToolAeroPersRead = 45,\n ToolAeroPersWrite = 46,\n RotationToolRead = 47,\n RotationToolWrite = 48,\n EmailsRead = 49,\n LicenseManagementRead = 53,\n LicenseManagementWrite = 54,\n RequestCapacityTool = 55,\n HideDutyRead = 57,\n HideDutyWrite = 58,\n BlockingDaysFlightsRead = 60,\n BlockingDaysFlightsWrite = 61,\n CrewApiRead = 62,\n CrewApiWrite = 63,\n GenDecRead = 67,\n GenDecWrite = 68,\n GenDecManage = 69,\n DutyRelatedReportsRead = 70,\n ReportAreaRouteCompetenceManage = 71,\n ExperienceCorrection = 72,\n CateringReportRead = 73,\n CateringReportWrite = 74,\n TzvYearOverviewComment = 75,\n CrewPortalAccess = 80,\n ReadFDRCockpit = 81,\n ReadFDRCabin = 82,\n ReadFDRGround = 83,\n ReadFDRCockpitExtended = 84,\n ReadFDRCabinExtended = 85,\n ReadFDRGroundExtended = 86,\n ReadFDRCockpitAeropers = 87,\n ReadFDRCabinEFA = 88,\n FlightCrewRead = 90,\n FlightCrewUpdate = 91,\n FlightCommentRead = 93,\n FlightCommentWrite = 94,\n ContactWithPerson = 97,\n ReadPersonDetails = 100,\n ReadPersonDetailsAeropers = 101,\n ReadPersonDetailsCockpit = 102,\n ReadPersonDetailsInactive = 103,\n ReadPersonDetailsCabin = 104,\n MarshalsInfoRead = 105,\n MarshalsInfoWrite = 106,\n ReadPersonDetailsGround = 107,\n ReadPersonDetailsFse = 108,\n ReadPersonDetailsMarshal = 109,\n VacManagementCockpitAdmin = 110,\n VacManagementCabinAdmin = 111,\n VacManagementGroundAdmin = 112,\n VacManagementRead = 113,\n TemplateManagementRead = 115,\n TemplateManagementWrite = 116,\n ReadPersonDetailsEFA = 117,\n ReserveManagementRead = 118,\n ReserveManagementWrite = 119,\n CrewPortalCockpitReadOthers = 120,\n CrewPortalCabinReadOthers = 121,\n CrewPortalGroundReadOthers = 122,\n CrewPortalCockpitWriteOthers = 125,\n CrewPortalCabinWriteOthers = 126,\n CrewPortalGroundWriteOthers = 127,\n CrewPortalCockpitAeropersReadOthers = 128,\n CrewPortalCabinEFAReadOthers = 129,\n RosterCockpitReadWish = 130,\n RosterCabinReadWish = 131,\n RosterGroundReadWish = 132,\n SeeRosterHistoryCockpit = 135,\n SeeRosterHistoryCabin = 136,\n SeeRosterHistoryGround = 137,\n SeeRosterHistoryFse = 138,\n SeeRosterHistoryMarshal = 139,\n CrewPortalCockpitCanControlNbu = 140,\n CrewPortalCabinCanControlNbu = 141,\n RosterCockpitReadPP = 145,\n RosterCabinReadPP = 146,\n RosterGroundReadPP = 147,\n RosterMarshalReadPP = 148,\n RosterFseReadPP = 149,\n CommentEmployeeCockpitRead = 150,\n CommentEmployeeCabinRead = 151,\n CommentEmployeeGroundRead = 152,\n FseInfoRead = 155,\n FseInfoWrite = 156,\n SeniorityReportRead = 160,\n SeniorityReportWrite = 161,\n ReleaseNotesRead = 162,\n ReleaseNotesWrite = 163,\n CourseManagementRead = 164,\n CourseManagementWrite = 165,\n QualityLoopExportWrite = 170,\n QualityLoopExportReadPlan = 171,\n QualityLoopExportReadIdMapping = 172,\n QualityLoopExportOverride = 173,\n AzureAiExplainValidation = 175\n}","/* eslint-disable max-classes-per-file */\nimport * as React from 'react';\nimport { action } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { Button, FormFeedback } from 'reactstrap';\nimport DateTimeField from '@1stquad/react-bootstrap-datetimepicker';\n\nimport { appStore } from '@app/AppStore';\n\nimport { DateTime } from '@app/AppConstants/DateTime';\nimport DateTimeService from '@app/Services/DateTimeService';\n\nimport { Icon } from '@app/Components/Icon';\nimport { BaseFormModel } from '../Services/BaseFormModel';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\nconst CONTAINER_ID = 'datetimepicker-container';\nexport class DateTimePickerContainer extends React.Component {\n render() {\n return
;\n }\n}\n\ntype ITimePickerControlProps = {\n value: Date | string;\n widgetContainerId?: string;\n disabled?: boolean;\n defaultValue?: Date;\n showReset?: boolean;\n onControlClick?: Function;\n onChange?: (time: Date, timeString: string) => void;\n hideControls?: boolean;\n className?: string;\n};\n\n@observer\nexport class TimePickerControl extends React.Component {\n \n constructor (props:ITimePickerControlProps) {\n super(props);\n applyDecorators(this);\n }\n \n render() {\n const { value, disabled, hideControls, defaultValue, onControlClick, onChange, showReset, widgetContainerId, className } = this.props;\n const step = 30;\n const smallStep = 5;\n const classNames = ['time-picker'];\n if (className) classNames.push(className);\n return (\n
\n
\n \n
\n \n
\n );\n }\n}\n\ntype DatePickerControlProps = {\n value: Date | string;\n disabled?: boolean;\n minDate?: Date;\n maxDate?: Date;\n pickerMode?: string;\n pickerSize?: string;\n widgetContainerId?: string;\n daysOfWeekDisabled?: number[];\n onChange?: (time: Date, timeString: string) => void;\n onBlur?: Function;\n onEnter?: Function;\n showInputIcon?: boolean;\n};\n\n@observer\nexport class DatePickerControl extends React.Component {\n \n constructor (props:DatePickerControlProps) {\n super(props);\n applyDecorators(this);\n }\n \n render() {\n const { value, disabled, onChange, minDate, maxDate, onBlur, onEnter, pickerMode, pickerSize, daysOfWeekDisabled, showInputIcon, widgetContainerId } = this.props;\n const minimalDate = minDate && DateTimeService.isValidDate(minDate) ? minDate : DateTimeService.parse(DateTime.minDate, DateTime.viewDateFormat);\n const maximalDate = maxDate && DateTimeService.isValidDate(maxDate) ? maxDate : undefined;\n return (\n \n );\n }\n\n private _getPickerFormat(mode?: string): string {\n if (mode === 'datetime') {\n return DateTime.viewFullFormat;\n }\n if (mode === 'time') {\n return DateTime.timeFormat;\n }\n return DateTime.viewDateFormat;\n }\n}\n\ntype TimePickerValidatedControlProps = {\n disabled?: boolean;\n defaultValue: string;\n widgetContainerId?: string;\n showReset?: boolean;\n formModel: T;\n name: keyof T;\n onChange?: Function;\n};\n\n@observer\nexport class TimePickerValidatedControl extends React.Component> {\n \n constructor (props:TimePickerValidatedControlProps) {\n super(props);\n applyDecorators(this);\n }\n \n render() {\n const { disabled, defaultValue, showReset, formModel, name, widgetContainerId } = this.props;\n const { [name]: fieldValueRaw } = formModel;\n const step = 30;\n const smallStep = 5;\n let pickerClass = 'time-picker' + (!formModel.validated ? ' not-validated' : ' validated');\n if (!formModel.isValid(name)) {\n pickerClass += ' is-invalid';\n }\n\n if (typeof fieldValueRaw !== 'string') throw new Error(`Field ${name as string} is not string but ${typeof fieldValueRaw}`);\n const fieldValue = fieldValueRaw;\n\n return (\n <>\n
\n
\n \n
\n \n
\n \n {formModel.errorFor(name).map((error: string) => (\n
{error}
\n ))}\n
\n \n );\n }\n\n @action.bound\n private _onBlur() {\n const { formModel, name } = this.props;\n const dateTime = DateTimeService.today();\n const value = formModel.getValue(name) as unknown as string;\n const currentDateTime = DateTimeService.parse(value, DateTime.timeFormat);\n\n if (!DateTimeService.isValidDate(currentDateTime)) {\n DateTimeHelper.changeTimeByTemplate(dateTime, value as string);\n this._onTimeChanged(dateTime, value as string);\n }\n }\n\n @action.bound\n private _onTimeChanged(time: Date, value: string) {\n const { formModel, name, onChange } = this.props;\n formModel.setValue(name, DateTimeService.isValidDate(time) ? DateTimeService.toUiTime(time) : value);\n if (onChange && formModel.isValid(name)) {\n onChange(time);\n }\n }\n\n @action.bound\n private _onTimeControlsClick(time: string, minutes: number) {\n const { formModel, name, onChange } = this.props;\n const newTimeValue = DateTimeService.parseUiTime(DateTimeService.today(), time);\n const newTime = DateTimeService.isValidDate(newTimeValue) ? DateTimeService.addTime(newTimeValue, 0, minutes) : '';\n formModel.setValue(name, newTime ? DateTimeService.toUiTime(newTime) : '');\n if (onChange && formModel.isValid(name)) {\n onChange(newTime);\n }\n }\n}\n\ntype DatePickerValidatedControlProps = {\n disabled?: boolean;\n minDate?: Date;\n maxDate?: Date;\n pickerMode?: string;\n pickerSize?: string;\n daysOfWeekDisabled?: number[];\n formModel: T;\n name: keyof T;\n viewMode?: string;\n availableDates?: Date[];\n onChange?: Function;\n onBlur?: Function;\n onEnter?: Function;\n autoFocus?: boolean;\n className?: string;\n widgetContainerId?: string;\n clearable?: boolean;\n format?: DateTime;\n showInputIcon?: boolean;\n isInvalid?: boolean;\n};\n\n@observer\nexport class DatePickerValidatedControl extends React.Component, {}> {\n private _isManualEditing = false;\n private _currentDate: Date | null = null;\n\n constructor(props: DatePickerValidatedControlProps) {\n super(props);\n applyDecorators(this);\n this._updateProps();\n }\n\n componentDidUpdate() {\n this._updateProps();\n }\n\n private _updateProps() {\n const { pickerMode, formModel, name } = this.props;\n\n const { [name]: fieldValueRaw } = formModel;\n if (typeof fieldValueRaw !== 'string') throw new Error(`Field ${name as string} is not string but ${typeof fieldValueRaw}`);\n\n const dateTimeValue = DateTimeService.parse(fieldValueRaw, this._getPickerFormat(pickerMode));\n\n if (DateTimeService.isValidDate(dateTimeValue)) {\n this._currentDate = dateTimeValue;\n }\n }\n\n render() {\n const { disabled, minDate, maxDate, onBlur, onEnter, pickerMode, pickerSize, daysOfWeekDisabled, formModel, name, viewMode, availableDates, className, clearable, format, showInputIcon, autoFocus, isInvalid, widgetContainerId } = this.props;\n const minimalDate = minDate && DateTimeService.isValidDate(minDate) ? minDate : DateTimeService.parse(DateTime.minDate, DateTime.viewDateFormat);\n const maximalDate = maxDate && DateTimeService.isValidDate(maxDate) ? maxDate : undefined;\n const { [name]: fieldValueRaw } = formModel;\n if (typeof fieldValueRaw !== 'string') throw new Error(`Field ${name as string} is not string but ${typeof fieldValueRaw}`);\n const fieldValue = fieldValueRaw;\n const dateTimeValue = DateTimeService.parse(fieldValue, this._getPickerFormat(pickerMode));\n const dateTime = DateTimeService.isValidDate(dateTimeValue) ? dateTimeValue : fieldValue;\n const validationClass = formModel.invalidFields.includes(name as string) || (!DateTimeService.isValidDate(dateTimeValue) && !!fieldValue) || isInvalid? 'is-invalid' : '';\n const cls = className ? [formModel.formValidatedClass, className] : [formModel.formValidatedClass];\n return (\n
\n \n {clearable && fieldValue && (\n \n \n \n )}\n \n {formModel.errorFor(name).map((error: string) => (\n
{error}
\n ))}\n
\n
\n );\n }\n\n @action.bound\n private _onFocus() {\n this._isManualEditing = true;\n }\n\n @action.bound\n private _onBlur() {\n const { pickerMode, formModel, format, name } = this.props;\n\n if (this._isManualEditing && pickerMode === \"datetime\" && format === DateTime.timeFormat && this._currentDate) {\n const dateTime = this._currentDate;\n const value = formModel.getValue(name) as unknown as string;\n\n const dateFormat = format ?? this._getPickerFormat(pickerMode);\n const timeIndex = (dateFormat as string).indexOf(DateTime.timeFormat);\n let timeValue = '';\n if (timeIndex > -1) {\n timeValue = value.slice(timeIndex, timeIndex + 4);\n }\n\n DateTimeHelper.changeTimeByTemplate(dateTime, timeValue);\n this._setDateValue(dateTime, timeValue);\n }\n\n this._isManualEditing = false;\n }\n\n @action.bound\n private _onClearDate() {\n const { formModel, name, onChange } = this.props;\n formModel.setValue(name, '');\n if (onChange) {\n onChange();\n }\n }\n\n @action.bound\n private _onDateChanged(dateTime: Date, value: string) {\n const { format, pickerMode } = this.props;\n let date = dateTime;\n if (this._isManualEditing && pickerMode === \"datetime\" && format === DateTime.timeFormat && this._currentDate) {\n if (DateTimeService.isValidDate(date)) {\n date = DateTimeService.withTime(this._currentDate, date.getUTCHours(), date.getUTCMinutes());\n }\n }\n\n this._setDateValue(date, value);\n }\n\n @action\n private _setDateValue(dateTime: Date, value: string) {\n const { pickerMode, formModel, name, onChange } = this.props;\n\n formModel.setValue(name, DateTimeService.isValidDate(dateTime) ? DateTimeService.toCustomUiFormat(dateTime, this._getPickerFormat(pickerMode)) : value);\n const isValidField = formModel.isValid(name);\n const isValidDate = DateTimeService.isValidDate(dateTime);\n if (onChange && (isValidField || isValidDate)) {\n if (DateTimeService.isValidDate(dateTime)) {\n this._currentDate = dateTime;\n }\n onChange(dateTime, this._isManualEditing);\n }\n }\n\n private _getPickerFormat(mode?: string): string {\n if (mode === 'datetime') {\n return DateTime.viewFullFormat;\n }\n if (mode === 'time') {\n return DateTime.timeFormat;\n }\n return DateTime.viewDateFormat;\n }\n}\n\nclass DateTimeHelper {\n public static changeTimeByTemplate(date: Date, value: string) {\n if (value.length === 4 && new RegExp('[0-9]{4}').test(value)) { // 0600 => 06:00\n const hours = +value.substring(0, 2);\n const min = +value.substring(2, 4);\n if (hours >= 0 && hours < 24 && min >= 0 && min < 60) {\n date.setUTCHours(hours, min, 0, 0);\n }\n } else if (value.length === 4 && new RegExp('[0-9]{1}:[0-9]{2}').test(value)) { // 6:00 => 06:00\n const hours = +value.substring(0, 1);\n const min = +value.substring(2, 4);\n if (hours >= 0 && hours <= 9 && min >= 0 && min < 60) {\n date.setUTCHours(hours, min, 0, 0);\n }\n }\n }\n}","import React, { PropsWithChildren } from 'react';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { PersonLookupModel } from '@app/Models/WebApiModels';\n\nimport ApiService from '@app/Services/ApiService';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { permissionStore } from '@app/Stores/PermissionStore';\nimport { applyDecorators } from '@app/Helpers/Decorator';\nimport { devInfoStore } from '@app/Stores/DevInfoStore';\nimport { appStore } from '@app/AppStore';\n\nimport AircraftPlaceholder from './AircraftPlaceholder';\n\ntype ErrorBoundaryState = {\n hasError: boolean;\n error: Error | null;\n componentStack: string | null;\n timestamp: Date | null;\n impersonatePersonName?: string | null;\n};\n\ntype ErrorBoundaryProps = PropsWithChildren & {\n className?: string;\n};\n\n@observer\nexport default class ErrorBoundary extends React.Component {\n @observable errorState: ErrorBoundaryState = {\n hasError: false,\n error: null,\n componentStack: null,\n timestamp: null,\n impersonatePersonName: null\n };\n\n constructor(props: ErrorBoundaryProps) {\n super(props);\n applyDecorators(this);\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n this.errorState = {\n hasError: true,\n error: error,\n componentStack: errorInfo.componentStack || null,\n timestamp: DateTimeService.now()\n };\n void this._getImpersonatePersonName();\n }\n\n render() {\n if (this.errorState.hasError) {\n const { error, componentStack, timestamp } = this.errorState;\n const message: string = error ? error.message : 'Error';\n\n const realUserRoles = permissionStore.getRolesMatchFromEncodedRoles(appStore.currentUser?.roles || []);\n const impersonatedUserRoles = permissionStore.getRolesMatchFromEncodedRoles(appStore.impersonatedUser?.roles || []);\n\n return (\n \n

Client rendering error

\n

Please contact support.

\n

{message}

\n {error && error.stack &&

{error.stack}

}\n {componentStack &&

\n The above error occurred in:\n {componentStack}\n

}\n

Technical details

\n {devInfoStore.appVersion && (\n

\n \n Version: {devInfoStore.appEnvironment} - {devInfoStore.appVersion}\n \n

\n )}\n {appStore.currentUser && (\n

\n \n Principal claims: {realUserRoles}\n \n

\n )}\n {appStore.impersonatedUser && appStore.impersonatedUser.personId && (\n

\n \n Impersonate person: {this.errorState.impersonatePersonName}\n {appStore.impersonatedUser.impersonateAsPrincipal ? ' (as principal)' : ''}\n \n

\n )}\n {appStore.impersonatedUser && appStore.impersonatedUser.roles && (\n

\n \n Impersonate claims: {impersonatedUserRoles}\n \n

\n )}\n {timestamp && (\n

\n \n Timestamp: {DateTimeService.format(timestamp, 'YYYY-MM-DD HH:mm:ss')}\n \n

\n )}\n
\n );\n }\n\n return this.props.children;\n }\n\n private async _getImpersonatePersonName() {\n if (!appStore.impersonatedUser || !appStore.impersonatedUser.personId) return;\n\n const { data: persons } = await ApiService.postTypedData(ApiUrls.PersonLookupUrl, {\n ids: [appStore.impersonatedUser.personId]\n });\n\n if (persons.length) {\n this._setPersonName(persons[0].firstName, persons[0].lastName);\n }\n }\n\n private _setPersonName(firstName?: string, lastName?: string) {\n if (appStore.impersonatedUser && appStore.impersonatedUser.personId) {\n const personName = `${firstName || ''} ${lastName || ''} (${this._trimStartEndZero(appStore.impersonatedUser.personId)})`;\n \n this.errorState = {\n ...this.errorState,\n impersonatePersonName: personName\n };\n }\n }\n\n private _trimStartEndZero(personId: string) {\n return personId.replace(new RegExp('^[0, -]+'), '').replace(new RegExp('[0, -]+$'), '');\n }\n}","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action, observable, when } from 'mobx';\nimport { Button, Input } from 'reactstrap';\n\nimport { SignalREvents, SignalRMethods } from '@app/AppConstants/SignalR';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\nimport { DutyValidationErrorModel } from '@app/Models/WebApiModels';\nimport { signalRService } from '@app/Services/SignalRService';\nimport { navigationStore } from '@app/Stores/NavigationStore';\n\nimport { Icon } from '@app/Components';\nimport \"./_explain-error-chat.scss\";\n\ntype Message = {\n role: \"user\" | \"bot\";\n content: string;\n isError?: boolean;\n};\n\ntype ExplainErrorChatProps = {\n error: DutyValidationErrorModel;\n onClose: () => void;\n};\n\n@observer\nexport default class ExplainErrorChat extends React.Component {\n @observable private _messages: Message[] = [];\n @observable private _input: string = \"\";\n private _chatId: string | null = null;\n @observable private _isLoading: boolean = false;\n\n constructor(props: ExplainErrorChatProps) {\n super(props);\n applyDecorators(this);\n this._input = props.error.message;\n }\n\n componentDidMount() {\n signalRService.subscribeToGroup(SignalREvents.aiExplainValidationMessageReply, this._getReply);\n void this._sendMessage();\n\n when(\n () => !navigationStore.isHomePage,\n () => this.props.onClose()\n );\n }\n\n componentWillUnmount() {\n this._cancelExplanation();\n signalRService.unsubscribeFromGroup(SignalREvents.aiExplainValidationMessageReply, this._getReply);\n }\n\n parseTable = (lines: string[]) => {\n const headers = lines[0].split(\"|\").map((h) => h.trim()).filter(Boolean);\n const rows = lines.slice(2).map((row) =>\n row.split(\"|\").map((cell) => cell.trim()).filter(Boolean)\n );\n\n return (\n \n \n \n {headers.map((header, i) => (\n \n ))}\n \n \n \n {rows.map((row, i) => (\n \n {row.map((cell, j) => (\n \n ))}\n \n ))}\n \n
{header}
{cell}
\n );\n };\n\n processText = (text: string) => {\n const lines = text.split(\"\\n\");\n let result = [];\n let tableBuffer: string[] = [];\n\n lines.forEach((line, index) => {\n if (line.startsWith(\"|\")) {\n tableBuffer.push(line);\n } else {\n if (tableBuffer.length > 0) {\n result.push(
{this.parseTable(tableBuffer)}
);\n tableBuffer = [];\n }\n\n if (line.startsWith(\"### \")) {\n result.push(

{line.substring(4)}

);\n } else if (line.startsWith(\"## \")) {\n result.push(

{line.substring(3)}

);\n } else if (line.startsWith(\"# \")) {\n result.push(

{line.substring(2)}

);\n } else if (/\\*\\*(.*?)\\*\\*/.test(line)) {\n const parts = line.split(/\\*\\*(.*?)\\*\\*/g);\n result.push(\n

\n {parts.map((part, i) => (i % 2 === 1 ? {part} : part))}\n

\n );\n } else if (/\\*(.*?)\\*/.test(line)) {\n const parts = line.split(/\\*(.*?)\\*/g);\n result.push(\n

\n {parts.map((part, i) => (i % 2 === 1 ? {part} : part))}\n

\n );\n } else if (/__(.*?)__/.test(line)) {\n const parts = line.split(/__(.*?)__/g);\n result.push(\n

\n {parts.map((part, i) => (i % 2 === 1 ? {part} : part))}\n

\n );\n } else if (/~~(.*?)~~/.test(line)) {\n const parts = line.split(/~~(.*?)~~/g);\n result.push(\n

\n {parts.map((part, i) => (i % 2 === 1 ? {part} : part))}\n

\n );\n } else {\n result.push(

{line}

);\n }\n }\n });\n\n if (tableBuffer.length > 0) {\n result.push(
{this.parseTable(tableBuffer)}
);\n }\n\n return result;\n };\n \n render() {\n const { onClose } = this.props;\n return (\n
\n
\n \n
\n
\n {this._messages.map((msg, i) => (\n
\n
\n {msg.role === 'user' ? 'Message To Explain' : 'Crew Page'}\n {this.processText(msg.content)}\n
\n
\n ))}\n {this._isLoading &&
}\n
\n {/*
\n {\n this._input = e.target.value;\n }}\n onKeyDown={this._onKeyDown}\n />\n \n
*/}\n\n {this._isLoading && (\n
\n \n
\n )}\n
AI can make mistakes. Check important info.
\n
\n );\n }\n\n @action.bound\n private async _sendMessage() {\n if (!this._input.trim()) return;\n\n const userMessage: Message = { role: \"user\", content: this._input };\n this._messages.push(userMessage);\n\n this._input = \"\";\n this._isLoading = true;\n this._chatId = await signalRService.sendNotification(SignalRMethods.explainValidationError, userMessage.content) as string;\n }\n\n @action.bound\n private _cancelExplanation() {\n signalRService.sendNotification(SignalRMethods.stopExplanation, this._chatId);\n this._isLoading = false;\n }\n\n @action.bound\n private _getReply(_: string, msg: { type: 'Chunk' | 'Error' | 'End', content: string | null }) {\n if (!this._chatId) return;\n\n let message: Message | null = null;\n for (let i = this._messages.length - 1; i >= 0; i--) {\n if (this._messages[i].role === 'bot') {\n message = this._messages[i];\n break;\n }\n }\n\n if (!message) {\n if (!msg.content) return;\n message = { role: \"bot\", content: msg.content, isError: msg.type === 'Error' };\n this._messages.push(message);\n }\n\n if (msg.type === 'Chunk') {\n message.content += msg.content;\n }\n\n if (msg.type === 'Error') {\n message.content = msg.content || '';\n message.isError = true;\n this._isLoading = false;\n }\n\n if (msg.type === 'End') {\n this._isLoading = false;\n }\n }\n\n @action.bound\n private _onKeyDown(e: React.KeyboardEvent) {\n if (e.key === 'Enter') {\n e.preventDefault();\n this._sendMessage();\n }\n }\n}\n\nexport const CONTAINER_ID = 'chat-container';\n\nexport class ChatContainer extends React.Component {\n render() {\n return
;\n }\n}","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action } from 'mobx';\n\nimport { SelectHandler } from '@app/Components/SelectFilter';\nimport { ReactSelectSize } from '@app/Components/ReactSelect';\nimport FilterContainer from '@app/Components/Filters/FilterContainer';\nimport ContractPicker from '@app/Components/Pickers/ContractPicker';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype ContractFilterProps = {\n clearable?: boolean;\n value: string | null;\n size?: string;\n multi?: boolean;\n onSelect?: SelectHandler;\n className?: string;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class ContractFilter extends React.Component {\n\n constructor (props: ContractFilterProps) {\n super(props);\n applyDecorators(this);\n }\n \n render () {\n const { clearable, value, size, className, selectSize, multi } = this.props;\n return (\n \n \n \n );\n }\n\n @action.bound\n private _onChangeHandler (selected: string | null) {\n this.props.onSelect && this.props.onSelect({ value: selected });\n }\n}\n","import * as React from 'react';\nimport { action, observable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport DateTimeService from '@app/Services/DateTimeService';\n\nimport { DatePickerControl } from '@app/Components/DateTimeControls';\nimport FilterContainer from '@app/Components/Filters/FilterContainer';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype DatePickerFilterProps = {\n className?: string;\n title: string;\n date: Date | null;\n disabled?: boolean;\n canBeEmpty?: boolean;\n minDate?: Date;\n maxDate?: Date;\n onDateChange?: (value: Date | null) => void;\n};\n\n@observer\nexport default class DatePickerFilter extends React.Component {\n private _store: DatePickerFilterStore;\n\n constructor(props: DatePickerFilterProps) {\n super(props);\n applyDecorators(this);\n this._store = new DatePickerFilterStore(this.props.date);\n }\n\n componentDidUpdate(prevProps: DatePickerFilterProps) {\n if (!DateTimeService.isSameDate(prevProps.date, this.props.date)) {\n if (!!this.props.date) {\n const newDate = DateTimeService.startOfDate(this.props.date);\n const dateIsValid = this._validate(newDate);\n\n if (dateIsValid) {\n this._store.setDate(newDate);\n }\n } else {\n this._store.setDate(null);\n }\n }\n }\n\n @action.bound\n private _handleChange(time: Date, originalEventType: string) {\n const newDate = DateTimeService.startOfDate(time);\n const dateIsValid = this._validate(newDate);\n\n this._store.setDate(dateIsValid ? newDate : originalEventType);\n\n if (originalEventType === 'click' && dateIsValid) {\n this.props.onDateChange?.(newDate);\n }\n }\n\n @action.bound\n private _handleBlur(time: Date, value: string) {\n const { onDateChange, date, canBeEmpty } = this.props;\n const isSelectedValid = this._validate(time);\n let triggerChange: boolean = false;\n const newValue = isSelectedValid ? time : date || null;\n if (canBeEmpty) {\n this._store.currentValue = value ? newValue : null;\n triggerChange = (isSelectedValid && ((date && !DateTimeService.isSameDate(date, time)) || !date)) || (!value && !!date);\n } else {\n this._store.currentValue = newValue;\n triggerChange = isSelectedValid && !!date && !DateTimeService.isSameDate(date, time);\n }\n\n if (triggerChange) {\n onDateChange && onDateChange(this._store.currentValue);\n }\n }\n\n @action\n private _validate(time: Date) {\n const { minDate, maxDate } = this.props;\n let isValid = DateTimeService.isValidDate(time);\n if (isValid && (minDate || maxDate)) {\n if (minDate && maxDate) isValid = DateTimeService.getDateIndexInRange(time, minDate, maxDate) > -1;\n else if (minDate) isValid = DateTimeService.isAfterDate(time, minDate);\n else if (maxDate) isValid = DateTimeService.isBeforeDate(time, maxDate);\n }\n return isValid;\n }\n\n render() {\n const { disabled, className, title } = this.props;\n const { currentValue } = this._store;\n return (\n \n
\n \n
\n
\n );\n }\n}\n\nclass DatePickerFilterStore {\n @observable currentValue: Date | string | null = null;\n\n constructor(value?: Date | string | null) {\n applyDecorators(this);\n this.setDate(value);\n }\n\n setDate(value?: Date | string | null) {\n this.currentValue = value || null;\n }\n}\n","import React, { PropsWithChildren } from 'react';\n\ntype PartialLoadFilterProps = PropsWithChildren & {\n title: string;\n size?: string;\n className?: string;\n};\n\nexport default class FilterContainer extends React.Component {\n render() {\n const { size, className, children, title } = this.props;\n let itemClass = 'filters-list-item';\n if (size === 'sm') {\n itemClass += ' size-sm';\n }\n if (className) {\n itemClass += ' ' + className;\n }\n return (\n
\n
{title}
\n
{children}
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action } from 'mobx';\n\nimport { SelectHandler } from '@app/Components/SelectFilter';\nimport CrewFunctionPicker, { CrewFunctionPickerMode } from '@app/Components/Pickers/CrewFunctionPicker';\nimport { ReactSelectSize } from '@app/Components/ReactSelect';\nimport FilterContainer from '@app/Components/Filters/FilterContainer';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype FunctionFilterProps = {\n clearable?: boolean;\n value: string | null;\n size?: string;\n placeholder?: string;\n onSelect?: SelectHandler;\n className?: string;\n viewMode?: CrewFunctionPickerMode;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class FunctionFilter extends React.Component {\n \n constructor (props: FunctionFilterProps) {\n super(props);\n applyDecorators(this);\n }\n\n render () {\n const { clearable, value, size, className, viewMode, selectSize, placeholder } = this.props;\n return (\n \n \n \n );\n }\n\n @action.bound\n private _onChangeHandler (selected: string | null) {\n this.props.onSelect && this.props.onSelect({ value: selected });\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action } from 'mobx';\n\nimport { SelectHandler } from '@app/Components/SelectFilter';\nimport { ReactSelectSize } from '@app/Components/ReactSelect';\nimport FilterContainer from '@app/Components/Filters/FilterContainer';\nimport InstructorPicker from '@app/Components/Pickers/InstructorPicker';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype TypeRatingFilterProps = {\n clearable?: boolean;\n multi?: boolean;\n value: string | null;\n size?: string;\n selectedCrewFunction?: string | null;\n onSelect?: SelectHandler;\n className?: string;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class InstructorFilter extends React.Component {\n \n constructor (props: TypeRatingFilterProps) {\n super(props);\n applyDecorators(this);\n }\n\n render () {\n const { clearable, value, size, className, selectSize, selectedCrewFunction, multi } = this.props;\n return (\n \n \n \n );\n }\n\n @action.bound\n private _onChangeHandler (selected: string | null) {\n this.props.onSelect && this.props.onSelect({ value: selected });\n }\n}\n","import * as React from 'react';\nimport { Input, InputProps, Label, FormFeedback } from 'reactstrap';\n\nimport { observer } from 'mobx-react';\nimport { BaseFormModel } from '../Services/BaseFormModel';\nimport { SelectFilterItem } from '@app/Models/SelectFilterItem';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\nexport type FormInputType = Omit & ({\n name?: string;\n formModel?: undefined;\n} | {\n name: keyof T;\n formModel?: T;\n});\n\nexport type IFormCheckboxProps = FormInputType & {\n label?: string;\n checked: boolean;\n invalid?: boolean;\n disabled?: boolean;\n changeHandler?: Function | void;\n bsSize?: 'lg' | 'sm';\n className?: string;\n topAligned?: boolean;\n smallValidationError?: boolean;\n customLabel?: () => JSX.Element;\n};\n\n@observer\nexport class FormCheckbox extends React.Component> {\n\n constructor (props: IFormCheckboxProps) {\n super(props);\n applyDecorators(this);\n }\n \n public render () {\n const { label, name, formModel, checked, invalid, disabled, changeHandler, bsSize, className, topAligned, smallValidationError, title, customLabel, ...rest } = this.props;\n let isChecked: boolean = checked;\n let isInvalid: boolean | undefined = invalid;\n const classList: string[] = ['checkbox'];\n if (formModel && name) {\n const value = Boolean(formModel.getValue(name as keyof T));\n isChecked = value === true;\n isInvalid = formModel.validated ? !formModel.isValid(name as keyof T) : formModel.validated;\n }\n if (bsSize) classList.push(bsSize);\n if (className) classList.push(className);\n if (topAligned) classList.push('top');\n\n return (\n <>\n \n {formModel && (\n \n {formModel.errorFor(name as keyof T).map((error: string) => (\n
{error}
\n ))}\n
\n )}\n \n );\n }\n}\n\nexport interface IFormInputProps extends Omit {\n formModel: T;\n name: keyof T;\n invalid?: boolean;\n smallValidationError?: boolean;\n placeholder?: string;\n changeHandler?: Function;\n transformValueHandler?: (val: string) => string;\n style?: React.CSSProperties;\n className?: string;\n}\n\n@observer\nexport class FormInput extends React.Component> {\n \n constructor (props: IFormInputProps) {\n super(props);\n applyDecorators(this);\n }\n\n public render () {\n const { formModel, name, changeHandler, invalid, smallValidationError, transformValueHandler, formNamePrefix, style, className, ...rest } = this.props;\n const fieldValue = formModel.getValue(name);\n const isInvalid: boolean | undefined = invalid || (formModel.validated ? !formModel.isValid(name) : formModel.validated);\n return (\n <>\n {\n const value = transformValueHandler ? transformValueHandler(ev.target.value) : ev.target.value;\n formModel.setValue(name, value);\n changeHandler?.(ev);\n }}\n {...rest}\n />\n {formModel.invalidFields.includes(name as string) && (\n \n {formModel.errorFor(name).map((error: string) => (\n
{error}
\n ))}\n
\n )}\n \n );\n }\n}\n\nexport interface IFormSelectProps extends Omit {\n formModel: T;\n name: keyof T;\n options: (SelectFilterItem | string)[];\n hasEmpty?: boolean;\n placeholder?: string;\n customOptions?: JSX.Element[];\n changeHandler?: Function;\n customInputChangeHandler?: Function;\n customSelectChangeHandler?: Function;\n showField?: boolean;\n smallValidationError?: boolean;\n disabled?: boolean;\n}\n\n@observer\nexport class FormSelect extends React.Component> {\n \n constructor (props: IFormSelectProps) {\n super(props);\n applyDecorators(this);\n }\n\n public render () {\n const { formModel, name, placeholder, options, customOptions, hasEmpty, changeHandler, smallValidationError, showField, customInputChangeHandler, customSelectChangeHandler, changeYearPeriodHandler, ...rest } = this.props;\n const fieldValue = formModel.getValue(name);\n const selectComponent = (\n <>\n ) => {\n if (showField && options) {\n const index = options.findIndex((opt) => {\n const val = typeof opt === 'string' ? opt : opt.value;\n return val.toLowerCase() === String(fieldValue).toLowerCase();\n });\n const select = event.target as HTMLSelectElement;\n select.selectedIndex = index;\n }\n }}\n onChange={(event: React.ChangeEvent) => {\n formModel.setValue(name, event.target.value);\n if (changeYearPeriodHandler) changeYearPeriodHandler();\n if (customSelectChangeHandler) {\n customSelectChangeHandler();\n } else if (changeHandler) {\n changeHandler();\n }\n }}\n placeholder={placeholder}\n type=\"select\"\n {...rest}\n >\n {hasEmpty && \n );\n })}\n {customOptions}\n \n {formModel.invalidFields.includes(name as string) && (\n \n {formModel.errorFor(name).map((error: string) => (\n
{error}
\n ))}\n
\n )}\n \n );\n if (showField) {\n return (\n
\n ) => {\n formModel.setValue(name, event.target.value);\n if (customInputChangeHandler) {\n customInputChangeHandler();\n } else if (changeHandler) {\n changeHandler();\n }\n }}\n autoComplete=\"off\"\n {...rest}\n />\n {selectComponent}\n
\n );\n } else {\n return selectComponent;\n }\n }\n}\n\n@observer\nexport class FormSwitcher extends React.Component> {\n\n constructor (props: IFormCheckboxProps) {\n super(props);\n applyDecorators(this);\n }\n\n public render () {\n const { name, formModel, changeHandler } = this.props;\n if (formModel) {\n const value = formModel.getValue(name as keyof T);\n return (\n <>\n \n {formModel.errorFor(name as keyof T)}\n \n );\n }\n }\n}\n","import React, { PropsWithChildren } from 'react';\nimport { observable, action } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype ContextMenuItemProps = PropsWithChildren & {\n title: string | JSX.Element;\n className?: string;\n style?: React.CSSProperties;\n hoveredCssClass?: string;\n showDelay?: number;\n hideDelay?: number;\n onShow?: () => void;\n onHide?: () => void;\n onClick?: (e: React.MouseEvent) => void;\n};\n\n@observer\nexport class HoverContainer extends React.Component {\n @observable isHovered: boolean = false;\n private _timer: number | null = null;\n private _delay: number = 300;\n\n constructor (props:ContextMenuItemProps) {\n super(props);\n applyDecorators(this);\n }\n\n render() {\n const { children, className, title, style, hoveredCssClass, onClick } = this.props;\n\n return (\n
\n {title}\n {this.isHovered && children}\n
\n );\n }\n\n @action.bound\n private _onMouseOver() {\n this._stopTimer();\n if (!this.isHovered) {\n const delay = this.props.showDelay !== undefined ? this.props.showDelay : this._delay;\n this._timer = window.setTimeout(() => {\n this.isHovered = true;\n this.props.onShow?.();\n }, delay);\n }\n }\n\n @action.bound\n private _onMouseOut() {\n this._stopTimer();\n if (this.isHovered) {\n const delay = this.props.hideDelay !== undefined ? this.props.hideDelay : this._delay;\n this._timer = window.setTimeout(() => {\n this.isHovered = false;\n this.props.onHide?.();\n }, delay);\n }\n }\n\n @action.bound\n private _stopTimer() {\n if (this._timer) {\n window.clearTimeout(this._timer);\n this._timer = null;\n }\n }\n}\n","import * as React from 'react';\nimport { IconName } from '@fortawesome/fontawesome-svg-core';\n\ninterface IIconProps extends React.HTMLAttributes {\n name: IconName;\n title?: string;\n className?: string;\n noSolid?: boolean;\n solid?: boolean;\n isBrand?: boolean;\n}\n\nexport class Icon extends React.PureComponent {\n render() {\n const { name, className, noSolid, isBrand, solid, ...other } = this.props;\n const classList: string[] = [];\n if (noSolid) classList.push('far');\n if (isBrand) classList.push('fab');\n if (solid) classList.push('fas');\n if (!classList.length) classList.push('fa');\n classList.push('fa-' + name);\n if (className) classList.push(className);\n return ;\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { CardBody, Progress } from 'reactstrap';\n\nimport { GlobalProgressData, loaderStore } from '@app/Stores/LoaderStore';\nimport { Icon } from '@app/Components/Icon';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype LoadingProps = {\n fullpage?: boolean;\n loading?: boolean;\n isSuspense?: boolean;\n small?: boolean;\n className?: string;\n iconStyle?: React.CSSProperties;\n progress?: GlobalProgressData | null;\n};\n\n@observer\nexport class Loading extends React.Component {\n \n constructor (props: LoadingProps) {\n super(props);\n applyDecorators(this);\n }\n\n render() {\n const { fullpage, loading, className, iconStyle, isSuspense, small } = this.props;\n const visible = loading || loaderStore.globalLoader.isPending || isSuspense;\n const classStr = className ? [className] : ['loader'];\n let style: React.CSSProperties = fullpage ? { position: 'fixed' } : { position: 'absolute' };\n if (isSuspense) {\n style = {};\n classStr.push('loader-suspense');\n }\n if (small) {\n classStr.push('loader-small');\n }\n return (\n \n );\n }\n\n private get _renderProgress() {\n const { progress } = this.props;\n if (!progress) return null;\n return (\n
\n

{progress?.title}

\n \n
\n \n {progress?.current} / {progress?.total}\n \n
\n
\n );\n }\n}\n\ntype CardBodyLoadingProps = {\n className?: string;\n loading: boolean;\n};\n\n@observer\nexport class CardBodyLoading extends React.Component {\n constructor (props: CardBodyLoadingProps) {\n super(props);\n applyDecorators(this);\n }\n\n render() {\n const { loading, className } = this.props;\n return (\n \n \n \n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action, computed } from 'mobx';\n\nimport { permissionStore } from '@app/Stores/PermissionStore';\nimport { ClipboardService } from '@app/Services/ClipboardService';\n\nimport { appStore } from '@app/AppStore';\n\nimport { Icon } from '@app/Components/Icon';\nimport { modalService } from './Modal';\nimport { ToolTipItem } from './ToolTipItem';\nimport { AzureAuth, UserPermissions } from './AzureAuth';\nimport { NotificationHandler } from './ToastNotification';\nimport { applyDecorators, EmptyProps } from \"@app/Helpers/Decorator\";\nconst ImpersonationDialog = React.lazy(() => import('@app/Components/Dialogs/ImpersonationDialog'));\n\n@observer\nexport class LoginSection extends React.Component {\n\n constructor (props:EmptyProps) {\n super(props);\n applyDecorators(this);\n }\n\n componentDidMount() {\n void permissionStore.loadRoles();\n window.addEventListener('storage', this._logOutEventHandler);\n }\n\n componentWillUnmount() {\n window.removeEventListener('storage', this._logOutEventHandler);\n }\n\n render() {\n const id = `user_${appStore.currentUserName}`;\n const userName = appStore.impersonatedUser?.name ? appStore.impersonatedUser.name : appStore.currentUserName;\n const copyTitle = `Copy${appStore.impersonatedUser ? ' impersonated user' : ''} permissions`;\n return (\n
\n \n Hello, {userName}\n \n \n
\n
{this._tooltipRolesStr}
\n \n
\n \n\n {this._renderImpersonation()}\n AzureAuth.logOut(true)} />\n
\n );\n }\n\n @action.bound\n _logOutEventHandler(event: StorageEvent) {\n if (event.key === 'logout-event') {\n AzureAuth.logOut();\n }\n }\n\n @action.bound\n private _copyToClipboard() {\n const bytes = permissionStore.convertPermissionIdsToBytes(permissionStore.currentUserPermissions);\n const encodedString = permissionStore.encodeBytesToBase64(bytes);\n\n try {\n ClipboardService.copyToClipboard(encodedString);\n NotificationHandler.showSuccess(`Your permissions string ${encodedString} copied!`, 'Copy user permissions');\n } catch (err) {\n NotificationHandler.showError(`Oops, unable to copy: ${err}`);\n }\n }\n\n private _renderImpersonation() {\n if (!AzureAuth.hasAccess([UserPermissions.FullPermissionImpersonate, UserPermissions.LimitedPermissionImpersonate]) && !appStore.impersonatedUser) return null;\n\n if (appStore.impersonatedUser) {\n const impersonatedUserTooltipId = `impersonatedUser_tooltip`;\n const exitImpersonationTooltipId = `exitImpersonation_tooltip`;\n const exitImpersonateTooltip = `Exit from ${appStore.impersonatedUser.name ?? 'impersonated user'}`;\n return (\n <>\n \n \n \n \n \n );\n }\n return ;\n }\n\n @action.bound\n private async _openImpersonationTool() {\n await modalService.show(ImpersonationDialog);\n }\n\n @computed\n private get _tooltipRolesStr() {\n const realRoles = permissionStore.getRolesMatchFromEncodedRoles(appStore.realUserRoles);\n const impersonatedRoles = permissionStore.getRolesMatchFromEncodedRoles(appStore.impersonatedUserRoles);\n\n const realUserName = appStore.impersonatedUser?.personId ? `Real name: ${appStore.currentUserName}.\\n` : '';\n const realRolesString = realRoles ? `Real user: ${realRoles}.\\n` : '';\n const impersonatedRolesString = appStore.impersonatedUser ? `Impersonated user: ${impersonatedRoles}.\\n` : '';\n\n return `${realUserName}${realRolesString}${impersonatedRolesString}`;\n }\n}","import * as React from 'react';\nimport { AxiosError } from 'axios';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { ModalWindow, ModalDialogOptions, IModalDialogContent, ModalButtonType } from '../Modal';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { appStore } from '@app/AppStore';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype ErrorDialogProps = {\n error?: string[] | string | AxiosError | JSX.Element;\n};\n\n@observer\nexport class ErrorDialog extends React.Component implements IModalDialogContent {\n @observable private _errorData: string | null = null;\n\n constructor (props:ErrorDialogProps) {\n super(props);\n applyDecorators(this);\n }\n\n public getModalOptions(window: ModalWindow): ModalDialogOptions {\n const axiosError = this.props.error as AxiosError;\n const codeString = axiosError.response ? Code: {axiosError.response.status}/ {axiosError.response.statusText}
: '';\n const personString = Person: {appStore.impersonatedUser ? appStore.impersonatedUser.personId : appStore.currentUser?.unique_name}
;\n return {\n title: this.props.error ? `Request can\\'t be completed` : `Error`,\n buttons: [\n {\n type: ModalButtonType.Ok,\n color:'light',\n onClick: () => {\n window.close();\n }\n }\n ],\n width: '500px',\n footerPrefix: \n {codeString}\n {personString}\n {DateTimeService.format(DateTimeService.now(), 'YYYY-MM-DD HH:mm:ss')}\n \n };\n }\n\n async componentDidMount(){\n const { error } = this.props;\n\n if (!error) return null;\n if (typeof error !== 'object') return null;\n if (Array.isArray(error)) return null;\n if (React.isValidElement(error)) return null;\n\n const axiosError = error as AxiosError;\n if (!axiosError.response) {\n return null;\n }\n\n const data = axiosError.response.data;\n if (data instanceof Blob){\n this._errorData = await new Response(data).text();\n } else if (typeof data === 'object' && 'error' in data){\n this._errorData = data.error;\n } else {\n this._errorData = data;\n }\n }\n\n render() {\n return (\n <>\n {this._renderMessage()}\n {this._renderRequestMessage()}\n \n );\n }\n\n _renderMessage() {\n const { error } = this.props;\n\n if (typeof error === 'string') {\n return

{error}

;\n }\n\n if (Array.isArray(error)) {\n return (\n <>\n {error.map((mess, index) => (\n

{mess}

\n ))}\n \n );\n }\n\n if (!React.isValidElement(error)) return null;\n if(typeof error === 'object') return

{JSON.stringify(error)}

;\n return error;\n }\n\n _renderRequestMessage() {\n const { error } = this.props;\n\n const axiosError = error as AxiosError;\n if (!axiosError.isAxiosError || !axiosError.response) {\n return null;\n }\n\n const errorData = this._errorData;\n\n return (\n <>\n {errorData &&
{Array.isArray(errorData) ? errorData.join(' ') : typeof errorData === 'object' ? JSON.stringify(errorData) : errorData?.toString()}
}\n
URL: {axiosError.config && axiosError.config.method + ' ' + axiosError.config.url}
\n \n );\n }\n}\n","import * as React from 'react';\n\nimport { ModalButtonType, ModalWindow, ModalDialogOptions, IModalDialogContent, ButtonColor } from '../Modal';\n\ntype ConfirmationDialogProps = {\n title?: string;\n message?: string | string[] | JSX.Element;\n color?: ButtonColor;\n onConfirm?: () => void | Promise;\n};\n\nexport class ConfirmationDialog extends React.PureComponent implements IModalDialogContent {\n public getModalOptions(window: ModalWindow): ModalDialogOptions {\n const { title, color, onConfirm } = this.props;\n return {\n title: title ?? 'Confirmation',\n buttons: [\n {\n type: ModalButtonType.Cancel,\n onClick: () => {\n window.close();\n }\n },\n {\n color: color ?? 'secondary',\n type: ModalButtonType.Confirm,\n onClick: async () => {\n if (onConfirm) {\n await onConfirm();\n }\n window.close(ModalButtonType.Confirm);\n }\n }\n ],\n width: '640px'\n };\n }\n\n render() {\n const { message } = this.props;\n\n if (typeof message === 'string' || Array.isArray(message)) {\n const messages = typeof message === 'string' ? [message] : message;\n\n return (\n <>\n {messages && messages.length > 0 && (\n
    \n {messages.map((m, i) => (\n
  • {m}
  • \n ))}\n
\n )}\n \n );\n }\n\n return message;\n }\n}\n","import * as React from 'react';\nimport { IModalDialogContent, ModalButtonType, ModalDialogOptions, ModalWindow } from '../Modal';\n\ntype InformationDialogProps = {\n message?: string | string[] | JSX.Element;\n title?: string;\n className?: string;\n};\n\nexport class InformationDialog extends React.PureComponent implements IModalDialogContent {\n public getModalOptions(window: ModalWindow): ModalDialogOptions {\n return {\n title: this.props.title ?? 'Information',\n buttons: [\n {\n type: ModalButtonType.Ok,\n onClick: () => {\n window.close();\n }\n }\n ],\n width: '600px',\n bodyClassName: this.props.className\n };\n }\n\n render() {\n const { message } = this.props;\n\n if (Array.isArray(message)) {\n return (\n <>\n {message && message.length > 0 && (\n
    \n {message.map((m) => (\n
  • {m}
  • \n ))}\n
\n )}\n \n );\n }\n\n return message;\n }\n}\n","import * as React from 'react';\n\nimport { ModalButtonType, ModalWindow, ModalDialogOptions, IModalDialogContent, ButtonColor } from '@app/Components/Modal';\n\ntype YesNoDialogProps = {\n title?: string;\n message?: string | string[] | JSX.Element;\n color?: ButtonColor;\n onConfirm?: () => void | Promise;\n};\n\nexport class YesNoDialog extends React.PureComponent implements IModalDialogContent {\n public getModalOptions(window: ModalWindow): ModalDialogOptions {\n const { title, color, onConfirm } = this.props;\n return {\n title: title ?? 'Confirmation',\n buttons: [\n {\n color: 'warning',\n type: ModalButtonType.No,\n onClick: () => {\n window.close();\n }\n },\n {\n color: color ?? 'secondary',\n type: ModalButtonType.Yes,\n onClick: async () => {\n if (onConfirm) {\n await onConfirm();\n }\n window.close(ModalButtonType.Yes);\n }\n }\n ],\n width: '640px'\n };\n }\n\n render() {\n const { message } = this.props;\n\n if (typeof message === 'string' || Array.isArray(message)) {\n const messages = typeof message === 'string' ? [message] : message;\n\n return (\n <>\n {messages && messages.length > 0 && (\n
    \n {messages.map((m, i) => (\n
  • {m}
  • \n ))}\n
\n )}\n \n );\n }\n\n return message;\n }\n}\n","import * as React from 'react';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { ModalBody, ModalBodyProps } from 'reactstrap';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\ntype ErrorBoundaryState = {\n hasError: boolean;\n error: Error | null;\n componentStack: string | null;\n};\n\n@observer\nclass ModalBodyWithBoundary extends React.Component {\n @observable errorState: ErrorBoundaryState = {\n hasError: false,\n error: null,\n componentStack: null\n };\n\n constructor(props: ModalBodyProps) {\n super(props);\n applyDecorators(this);\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n this.errorState = {\n hasError: true,\n error: error,\n componentStack: errorInfo.componentStack || null\n };\n }\n\n render() {\n if (this.errorState.hasError) {\n const error = this.errorState.error;\n const message: string = error ? error.message : 'Error';\n return (\n
\n

Something went wrong

\n

Please contact support.

\n
\n

{message}

\n The above error occurred in:\n {this.errorState.componentStack}\n
\n
\n );\n }\n return {this.props.children};\n }\n}\n\nexport default ModalBodyWithBoundary;\n","import React, { ClassType, FunctionComponent } from 'react';\nimport { observable, action, computed } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { Modal, ModalHeader, ModalFooter, Button, ButtonDropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\nimport Draggable from 'react-draggable';\nimport { AxiosError } from 'axios';\n\nimport { KeyboardCodes } from '@app/AppConstants/KeyboardKeys';\nimport { PromiseCompletion } from '@app/Classes/PromiseCompletion';\n\nimport { ErrorDialog } from './Dialogs/ErrorDialog';\nimport { ConfirmationDialog } from './Dialogs/ConfirmationDialog';\nimport { InformationDialog } from './Dialogs/InformationDialog';\nimport { YesNoDialog } from './Dialogs/YesNoDialog';\nimport ModalBodyWithBoundary from './ModalBodyWithBoundary';\nimport { Loading } from './Loading';\nimport './Modal/modal.scss';\nimport { applyDecorators, EmptyProps } from \"@app/Helpers/Decorator\";\n\nexport type ButtonColor = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark' | 'link';\n\ntype ClickHandler = (window: ModalWindow) => void | Promise;\n\nexport type ModalButtonOptions = {\n type: ModalAction;\n color?: ButtonColor;\n title?: string;\n outline?: boolean;\n isDisabled?: boolean;\n setFocus?: boolean;\n alignLeft?: boolean;\n children?: ModalButtonOptions[];\n onClick: ClickHandler;\n};\n\nexport type ModalOptions = {\n title?: string;\n width?: number | string;\n closeByEscape?: boolean;\n dialog: (window: ModalWindow) => JSX.Element;\n buttons?: (window: ModalWindow) => ModalButtonOptions[];\n onAppear?: (window: ModalWindow) => void;\n onHide?: (window: ModalWindow) => void;\n};\n\nexport enum ModalButtonType {\n Ok = 'Ok',\n Cancel = 'Cancel',\n Close = 'Close',\n Save = 'Save',\n Update = 'Update',\n Remove = 'Remove',\n Confirm = 'Confirm',\n Reset = 'Reset',\n Add = 'Add',\n CreateNew = 'CreateNew',\n Send = 'Send',\n Delete = 'Delete',\n Yes = 'Yes',\n No = 'No',\n Submit = 'Submit',\n Apply = 'Apply',\n Download = 'Download',\n RunNow = 'RunNow',\n SaveAndRunNow = 'SaveAndRunNow'\n}\n\ntype ConfirmationOptions = {\n title?: string;\n color?: ButtonColor;\n onConfirm?: () => void | Promise;\n};\n\ntype ModalAction = ModalButtonType | string;\n\nexport type ModalResult = {\n button: ModalAction;\n result: T | null;\n};\n\ntype ModalWindowProps = ModalOptions & {\n onClose: (action: ModalAction, result?: T) => void;\n};\n\ntype ModalPromise = Promise> & {\n close: (action?: ModalAction, result?: T) => void;\n};\n\nexport type ModalDialogOptions = {\n buttons?: ModalButtonOptions[];\n loader?: PromiseCompletion;\n title?: string | JSX.Element;\n width?: number | string;\n bodyClassName?: string;\n disableAutoFocus?: boolean;\n footerPrefix?: JSX.Element;\n confirmClose?: () => Promise;\n};\n\nexport interface IModalDialogContent {\n getModalOptions: (window: ModalWindow) => ModalDialogOptions;\n}\n\n@observer\nexport class Modals extends React.Component {\n \n constructor (props:EmptyProps) {\n super(props);\n applyDecorators(this);\n }\n \n componentDidMount () {\n document.addEventListener('keydown', this._onDocumentKeyDown);\n }\n\n componentWillUnmount () {\n document.removeEventListener('keydown', this._onDocumentKeyDown);\n }\n\n @action.bound\n private _onDocumentKeyDown (event: KeyboardEvent) {\n const modal = modalService.getUpperModal();\n if (modal && event.code === KeyboardCodes.ESCAPE && modal.closeByEscape !== false) {\n event.stopImmediatePropagation();\n modal.onClose(ModalButtonType.Cancel, undefined);\n }\n }\n\n render () {\n return <>{modalService.renderModals()};\n }\n}\n\ntype ModalButtonProps = ModalButtonOptions & {\n window: ModalWindow;\n innerRef?: React.Ref;\n};\n\n@observer\nclass ModalButton extends React.Component> {\n @observable private _isWorking: boolean = false;\n @observable private _isDropdownOpen: boolean = false;\n\n constructor (props:ModalButtonProps) {\n super(props);\n applyDecorators(this);\n }\n\n render () {\n const { innerRef, title, isDisabled, type, color, outline, children, onClick } = this.props;\n\n let buttonColor: ButtonColor = 'secondary';\n if (type === ModalButtonType.Cancel) {\n buttonColor = 'light';\n }\n if (type === ModalButtonType.Add || type === ModalButtonType.Save || type === ModalButtonType.Update || type === ModalButtonType.Download) {\n buttonColor = 'success';\n }\n if (type === ModalButtonType.Yes || type === ModalButtonType.Apply) {\n buttonColor = 'primary';\n }\n if (type === ModalButtonType.Remove || type === ModalButtonType.No || type === ModalButtonType.Reset) {\n buttonColor = 'danger';\n }\n if (color) {\n buttonColor = color;\n }\n\n const disabled = isDisabled || this._isWorking;\n\n if (children?.length) {\n return (\n \n \n \n \n {children.map((c) => (\n this._onClick(c.onClick)} color={buttonColor} outline={outline} disabled={c.isDisabled}>\n {c.title ?? c.type}\n \n ))}\n \n \n );\n }\n\n return (\n \n );\n }\n\n @action.bound\n private async _onToggleDropdown () {\n this._isDropdownOpen = !this._isDropdownOpen;\n }\n\n private async _onClick (onClick: ClickHandler) {\n const { window } = this.props;\n const result = onClick(window);\n if (result) {\n this._isWorking = true;\n try {\n await result;\n } finally {\n this._isWorking = false;\n }\n }\n }\n}\n\n@observer\nexport class ModalWindow extends React.Component> {\n private _payload: T | null = null;\n private _focusButton: React.RefObject = React.createRef();\n @observable public contentRef: React.RefObject> = React.createRef();\n \n constructor (props:ModalWindowProps) {\n super(props);\n applyDecorators(this);\n }\n \n componentDidMount () {\n this.props.onAppear?.(this);\n window.setTimeout(() => this._focusButton.current && this._focusButton.current.focus(), 0);\n }\n\n componentWillUnmount () {\n this.props.onHide?.(this);\n }\n\n render () {\n const { title, dialog, buttons, width } = this.props;\n const content = this.contentRef.current as IModalDialogContent;\n\n const modalOptions = content?.getModalOptions?.call(content, this);\n\n const titleToRender = title ?? modalOptions?.title;\n const maxWidth = width ?? modalOptions?.width;\n const widthToRender = typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth;\n const contentButtons = modalOptions?.buttons ?? [];\n const loader = modalOptions?.loader;\n const buttonsToRender = (buttons?.(this) ?? []).concat(contentButtons);\n const leftButtons = buttonsToRender.filter((b) => !!b.alignLeft);\n const normalButtons = buttonsToRender.filter((b) => !b.alignLeft);\n const footerPrefix = modalOptions?.footerPrefix;\n\n return (\n \n this._onCloseClick(modalOptions)} keyboard={false} style={{ maxWidth: widthToRender }}>\n this._onCloseClick(modalOptions)}>{titleToRender}\n \n }>{dialog(this)}\n \n \n {buttonsToRender.length || footerPrefix ? (\n \n {footerPrefix}\n {leftButtons.length ?
{this._renderButtons(leftButtons, modalOptions)}
: null}\n {this._renderButtons(normalButtons, modalOptions)}\n
\n ) : null}\n
\n
\n );\n }\n\n private _renderButtons (buttons: ModalButtonOptions[], options?: ModalDialogOptions) {\n return buttons.map((b, index) => {\n let isFocused = buttons.length === 1 && !options?.disableAutoFocus;\n if (typeof b.setFocus === 'boolean') {\n isFocused = b.setFocus;\n } else if (!isFocused && !options?.disableAutoFocus) {\n const activeButtons = buttons.filter((b) => b.type !== ModalButtonType.Cancel && b.type !== ModalButtonType.Close);\n if (activeButtons.length === 1) {\n isFocused = activeButtons[0].type === b.type;\n }\n }\n return innerRef={isFocused ? this._focusButton : void 0} key={`${b.type}${index}`} {...b} window={this}/>;\n });\n }\n\n @action.bound\n private async _onCloseClick (options?: ModalDialogOptions) {\n if (!options?.confirmClose || (await options?.confirmClose()))\n this.props.onClose(ModalButtonType.Cancel, undefined);\n }\n\n public close (button: ModalAction = ModalButtonType.Close, result?: T) {\n this.props.onClose(button, result || this._payload || void 0);\n }\n\n public getPayload (): T | null {\n return this._payload;\n }\n\n public setPayload (payload: T | null) {\n this._payload = payload;\n }\n}\n\nclass ModalService {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @observable private _modalData: ModalWindowProps[] = [];\n \n constructor () {\n applyDecorators(this);\n }\n \n @computed\n public get hasActiveModal () {\n return !!this._modalData.length;\n }\n\n public renderModals () {\n return this._modalData.map((m, index) => );\n }\n\n public show

(dialog: ClassType, React.ComponentClass

> | FunctionComponent

, props?: P, options?: Omit, 'dialog'>): ModalPromise {\n return this.showModal(\n Object.assign(\n {},\n {\n dialog: (window: ModalWindow) => {\n const content = React.createElement(dialog, Object.assign({}, props, { ref: window.contentRef }));\n return content;\n }\n },\n options\n ) as ModalOptions\n );\n }\n\n public showModal (options: ModalOptions): ModalPromise {\n let data: ModalWindowProps | null = null;\n const result = new Promise>((resolve) => {\n data = Object.assign(options, {\n onClose: (button: ModalAction, result?: T) => {\n resolve({\n button: button,\n result: result || null\n });\n\n const modalIndex = this._modalData.findIndex((d) => d === data);\n if (modalIndex !== -1) {\n this._modalData.splice(modalIndex, 1);\n }\n if (!this._modalData.length) {\n document.body.classList.remove('modal-open');\n }\n }\n });\n if (!this._modalData.length) {\n document.body.classList.add('modal-open');\n }\n this._modalData.push(data);\n data = this._modalData[this._modalData.length - 1];\n });\n\n return Object.assign(result, {\n close: (action?: ModalAction, result?: T) => data?.onClose(action || ModalButtonType.Ok, result)\n });\n }\n\n public async showConfirmation (message: string | string[] | JSX.Element, titleOrOptions?: string | ConfirmationOptions, options?: ConfirmationOptions) {\n const confirmationOptions = typeof titleOrOptions === 'object' ? titleOrOptions : options;\n const result = await this.show(ConfirmationDialog, {\n message: message,\n title: typeof titleOrOptions === 'string' ? titleOrOptions : titleOrOptions?.title,\n color: confirmationOptions?.color || 'primary',\n onConfirm: confirmationOptions?.onConfirm\n });\n\n return result.button === ModalButtonType.Confirm;\n }\n\n public async showYesNo (message: string | string[] | JSX.Element, titleOrOptions?: string | ConfirmationOptions, options?: ConfirmationOptions) {\n const yesNoOptions = typeof titleOrOptions === 'object' ? titleOrOptions : options;\n const result = await this.show(YesNoDialog, {\n message: message,\n title: typeof titleOrOptions === 'string' ? titleOrOptions : titleOrOptions?.title,\n color: yesNoOptions?.color || 'primary',\n onConfirm: yesNoOptions?.onConfirm\n });\n\n return result.button === ModalButtonType.Yes;\n }\n\n public async showInformation (message: string | string[] | JSX.Element, title?: string, options?: { className?: string }) {\n await this.show(InformationDialog, {\n message: message,\n title: title,\n className: options?.className\n });\n }\n\n public showError = async (errorContent: string | string[] | JSX.Element | AxiosError) => {\n await this.show(ErrorDialog, {\n error: errorContent\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getUpperModal (): ModalWindowProps {\n return this._modalData[this._modalData.length - 1];\n }\n}\n\nexport const modalService = new ModalService();\n","import * as React from 'react';\nimport { Icon } from '@app/Components/Icon';\nimport { observer } from 'mobx-react';\nimport { observable, action, computed } from 'mobx';\n\nimport { Configurations } from '@app/AppConstants/Configurations';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { applyDecorators, EmptyProps } from \"@app/Helpers/Decorator\";\nimport { ReleaseNoteDtoShort } from '@app/Models/WebApiModels';\nimport ApiService from '@app/Services/ApiService';\nimport { configurationStore } from '@app/Stores/ConfigurationStore';\n\nimport { modalService } from './Modal';\nimport { AzureAuth, UserPermissions } from './AzureAuth';\nconst ReleaseNotesDialog = React.lazy(() => import('@app/Components/Dialogs/ReleaseNotesDialog'));\n\n@observer\nexport class HelpLink extends React.Component {\n @observable private _helpLink: string = '';\n @observable private _releaseNotes: ReleaseNoteDtoShort[] = [];\n @observable private _isPopupVisible: boolean = false;\n private _timer: number | null = null;\n\n constructor (props:EmptyProps) {\n super(props);\n applyDecorators(this);\n void configurationStore.get(Configurations.globalGroup, Configurations.helpLinkKey).then((response) => (this._helpLink = response || ''));\n }\n\n componentDidMount(): void {\n void this._initData();\n }\n\n public render() {\n const hasReleaseNotesPermissions = AzureAuth.hasAccess(UserPermissions.ReleaseNotesRead);\n if (!hasReleaseNotesPermissions) {\n return (\n

\n \n \n \n
\n );\n }\n\n return (\n
\n \n {this._unreadNotesCount > 0 && (\n <>\n
\n {this._isPopupVisible && (\n
\n \n {this._unreadNotesCount} unread release notes\n
\n )}\n \n )}\n
\n );\n }\n\n @action.bound\n private async _openReleaseNotes() {\n await modalService.show(ReleaseNotesDialog, {\n helpLink: this._helpLink,\n refreshNotesCounter: this._loadReleaseNotes\n });\n }\n\n private async _initData() {\n const hasReleaseNotesPermissions = AzureAuth.hasAccess(UserPermissions.ReleaseNotesRead);\n if (!hasReleaseNotesPermissions) return;\n\n await this._loadReleaseNotes();\n this._initPopupTimeout();\n }\n\n @action.bound\n private async _loadReleaseNotes() {\n const { data } = await ApiService.get(ApiUrls.ReleaseNotesUrl, null);\n this._releaseNotes = data;\n }\n\n @action.bound\n private _onMouseOverHandler() {\n this._stopTimer();\n this._showPopup();\n }\n\n private _initPopupTimeout() {\n if (!this._unreadNotesCount) return;\n\n this._timer = window.setTimeout(() => {\n this._showPopup();\n setTimeout(this._hidePopup, 8000);\n }, 5000);\n }\n\n private _stopTimer() {\n if (this._timer) {\n window.clearTimeout(this._timer);\n this._timer = null;\n }\n }\n\n @action.bound\n private _showPopup() {\n this._isPopupVisible = true;\n }\n\n @action.bound\n private _hidePopup() {\n this._isPopupVisible = false;\n }\n\n @computed\n private get _unreadNotesCount() {\n return this._releaseNotes.filter(n => !n.isDraft && n.isNew).length;\n }\n}\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { action, observable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { devInfoStore } from '@app/Stores/DevInfoStore';\nimport { navigationStore } from '@app/Stores/NavigationStore';\nimport { appStore } from '@app/AppStore';\nimport { configurationStore } from '../Stores/ConfigurationStore';\nimport { Configurations } from '../AppConstants/Configurations';\nimport { AzureAuth, UserPermissions } from './AzureAuth';\nimport { LoginSection } from '@app/Components/LoginSection';\nimport { HelpLink } from '@app/Components/HelpLink';\nimport { HoverContainer } from '@app/Components/HoverContainer';\nimport ThemeSwitcher from './ThemeSwitcher';\nimport { applyDecorators, EmptyProps } from \"@app/Helpers/Decorator\";\nimport { getEncodedToken } from '@app/Helpers/JWTHelper';\nimport { modalService } from '@app/Components/Modal';\n\nconst CreateStandByReportEmailDialog = React.lazy(() => import('@app/Components/Dialogs/CreateStandByReportEmailDialog'));\nconst QualityLoopExportDialog = React.lazy(() => import('@app/Components/Dialogs/QualityLoopExportDialog'));\n\ntype ClickHandler = () => void;\ntype GetStateHandler = () => boolean;\n\nexport enum MenuSection {\n View,\n Tools\n}\n\nexport type MenuItem = {\n id: string;\n title: string;\n section: MenuSection;\n onClick?: ClickHandler;\n onGetState?: GetStateHandler;\n order: number;\n isHidden?: boolean | (() => boolean);\n};\n\nexport type ExtensionItem = {\n id: string;\n itemRender: JSX.Element;\n className?: string;\n isHidden?: boolean;\n};\n\n@observer\nexport class NavMenu extends React.Component {\n @observable private _helpLink: string = '';\n @observable private _enableExperienceReport: boolean = false;\n @observable private _enableEfaUi: boolean = false;\n @observable private _isAnyMenuItemVisible: boolean = false;\n @observable private _featureEnableCabinAttestation: boolean = false;\n @observable private _featureEnableSimCourseOverview: boolean;\n @observable private _enableReserveTool: boolean = false;\n\n constructor(props: EmptyProps) {\n super(props);\n applyDecorators(this);\n }\n\n componentDidMount() {\n setTimeout(() => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = '/js/ads.js';\n script.onerror = () => {\n navMenuStore.hasRenderBlocker = true;\n };\n script.onload = () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(window as any).canRunAds) {\n navMenuStore.hasRenderBlocker = true;\n }\n };\n document.head && document.head.appendChild(script);\n\n const adsDiv = document.createElement('div') as HTMLDivElement;\n adsDiv.className = 'ad ads adsbox doubleclick ad-placement ad-placeholder adbadge BannerAd';\n adsDiv.style.position = 'fixed;';\n adsDiv.style.bottom = '0';\n adsDiv.style.left = '0';\n adsDiv.style.width = '100%';\n adsDiv.style.height = '1px;';\n document.body.appendChild(adsDiv);\n\n setTimeout(() => {\n if (window.getComputedStyle(adsDiv).getPropertyValue('display') == 'none') {\n navMenuStore.hasRenderBlocker = true;\n }\n adsDiv.remove();\n }, 1000);\n\n }, 2000);\n\n void configurationStore.get(Configurations.globalGroup, Configurations.helpLinkKey).then((response) => {\n this._helpLink = response || '';\n });\n void configurationStore.get(Configurations.featureGroup, Configurations.featureEnableExperienceReport).then((response) => {\n this._enableExperienceReport = response?.toLowerCase() === 'true';\n });\n void configurationStore.get(Configurations.featureGroup, Configurations.featureEnableCabinAttestation).then((response) => {\n this._featureEnableCabinAttestation = response?.toLowerCase() === 'true';\n });\n void configurationStore.get(Configurations.featureGroup, Configurations.featureEnableSimCourseOverview).then((response) => {\n this._featureEnableSimCourseOverview = response?.toLowerCase() === 'true';\n });\n void configurationStore.get(Configurations.featureGroup, Configurations.featureEnableEfaUi).then((response) => {\n this._enableEfaUi = response?.toLowerCase() === 'true';\n });\n void configurationStore.get(Configurations.featureGroup, Configurations.featureEnableReserveTool).then((response) => {\n this._enableReserveTool = response?.toLowerCase() === 'true';\n });\n }\n\n render() {\n const className = appStore.isPrintMode ? 'main-nav-hidden' : 'main-nav';\n const hoverMenuItemDelay = this._isAnyMenuItemVisible ? undefined : 0;\n const isCrewPortalConfigured = !!(window as { crewPortalUrl?: string }).crewPortalUrl;\n\n const hasAccessToCockpit = AzureAuth.hasAccess(UserPermissions.RosterCockpitRead);\n const hasAccessToCabin = AzureAuth.hasAccess(UserPermissions.RosterCabinRead);\n const hasAccessToVacManagement = AzureAuth.hasAccess(UserPermissions.VacManagementRead);\n const hasAccessToReserveManagement = AzureAuth.hasAccess(UserPermissions.ReserveManagementRead);\n const hasAccessToDutyRelatedReport = AzureAuth.hasAccess(UserPermissions.DutyRelatedReportsRead);\n const hasAccessToGroundStaffStatisticReport = AzureAuth.hasAccess(UserPermissions.RosterGroundRead);\n const hasAccessToPersonReport = hasAccessToDutyRelatedReport && AzureAuth.hasAccess([\n UserPermissions.ReadPersonDetails,\n UserPermissions.ReadPersonDetailsCockpit,\n UserPermissions.ReadPersonDetailsCabin,\n UserPermissions.ReadPersonDetailsGround\n ]);\n const hasAccessToSeniorityReport = AzureAuth.hasAccess(UserPermissions.SeniorityReportRead);\n const hasAccessToCateringReport = AzureAuth.hasAccess(UserPermissions.CateringReportRead);\n const hasAccessToJCR = AzureAuth.hasAccess(UserPermissions.JCRImportRead);\n const hasAccessToLicenseManagement = AzureAuth.hasAccess(UserPermissions.LicenseManagementRead);\n const hasAccessToGenDec = AzureAuth.hasAccess(UserPermissions.GenDecRead);\n const hasAccessToRotationTool = AzureAuth.hasAccess(UserPermissions.RotationToolRead);\n const hasAccessToAeropers = AzureAuth.hasAccess(UserPermissions.ToolAeroPersRead);\n const hasAccessToEfa = this._enableEfaUi && AzureAuth.hasAccess(UserPermissions.ToolEfaRead);\n const hasAccessToHotelTools = AzureAuth.hasAccess(UserPermissions.ToolHotelManagement);\n const hasAccessToCapacityTool = AzureAuth.hasAccess(UserPermissions.RequestCapacityTool);\n const hasAccessToBlockDaysManagement = AzureAuth.hasAccess(UserPermissions.BlockingDaysFlightsRead);\n const hasAccessToCrewApiGenDecConfig = AzureAuth.hasAccess([UserPermissions.CrewApiRead, UserPermissions.GenDecRead]);\n const hasAccessToCustomPersonManagement = AzureAuth.hasAccess([UserPermissions.MarshalsInfoRead, UserPermissions.FseInfoRead]);\n const hasAccessToTemplatesManagement = AzureAuth.hasAccess(UserPermissions.TemplateManagementRead);\n const hasAccessToAdminTools = AzureAuth.hasAccess(UserPermissions.AdminToolsRead);\n const hasAccessToRequestTool = AzureAuth.hasCrewPortalAccess();\n const hasAccessToHomeStudy = AzureAuth.hasAccess([\n UserPermissions.RosterCabinWritePlanning,\n UserPermissions.RosterCabinWriteTracking,\n UserPermissions.RosterCockpitWritePlanning,\n UserPermissions.RosterCockpitWriteTracking,\n UserPermissions.RosterGroundWritePlanning,\n UserPermissions.RosterGroundWriteTracking\n ]);\n const hasAccessToAreaRouteCompetenceReport = AzureAuth.hasAccess(UserPermissions.RosterCockpitRead);\n const hasAccessToEmailViewer = AzureAuth.hasAccess(UserPermissions.EmailsRead);\n const hasAccessToOutageReport = AzureAuth.hasAccess(UserPermissions.RosterCockpitWritePlanning)\n && AzureAuth.hasAccess(UserPermissions.RosterCabinWritePlanning)\n && AzureAuth.hasAccess(UserPermissions.RosterGroundWritePlanning)\n && AzureAuth.hasAccess(UserPermissions.RosterFseRead)\n && AzureAuth.hasAccess(UserPermissions.RosterMarshalRead);\n const hasAccessToCaCoReport = hasAccessToCockpit || hasAccessToCabin;\n const hasAccessToDosimetryReport = (hasAccessToCockpit || hasAccessToCabin) && hasAccessToDutyRelatedReport;\n const hasAccessToCourseManagement = AzureAuth.hasAccess(UserPermissions.CourseManagementRead);\n const hasAccessToStandbyReportEmailCreation = hasAccessToCockpit && hasAccessToCabin;\n const hasAccessToQualityExport = AzureAuth.hasAccess(UserPermissions.QualityLoopExportReadPlan);\n\n const accessToReports = hasAccessToPersonReport || hasAccessToDutyRelatedReport || hasAccessToCateringReport || hasAccessToAreaRouteCompetenceReport || hasAccessToSeniorityReport || hasAccessToGroundStaffStatisticReport;\n const accessToTools = hasAccessToRequestTool || hasAccessToHotelTools || hasAccessToHomeStudy || hasAccessToJCR || hasAccessToAeropers || hasAccessToEfa ||\n hasAccessToRotationTool || hasAccessToLicenseManagement || hasAccessToCustomPersonManagement || hasAccessToCapacityTool || hasAccessToBlockDaysManagement ||\n hasAccessToCrewApiGenDecConfig || hasAccessToAdminTools || hasAccessToDosimetryReport || hasAccessToVacManagement || hasAccessToCourseManagement || hasAccessToStandbyReportEmailCreation || hasAccessToQualityExport;\n\n const adminTools: { link: string, title: string }[] = [];\n hasAccessToAdminTools && adminTools.push({ link: '/health-board', title: 'Health Board' });\n hasAccessToAdminTools && adminTools.push({ link: '/job-list', title: 'Job List' });\n hasAccessToAdminTools && adminTools.push({ link: '/maintenance', title: 'Maintenance' });\n hasAccessToAdminTools && adminTools.push({ link: '/permissions-tool', title: 'Permissions Tool' });\n hasAccessToEmailViewer && adminTools.push({ link: '/email-viewer', title: 'Email Viewer' });\n hasAccessToTemplatesManagement && adminTools.push({ link: '/templates-management', title: 'Templates Management' });\n hasAccessToAdminTools && adminTools.push({ link: '/configs', title: 'Configs' });\n\n return (\n
\n
\n
\n
\n {this.renderLink('/', '')}\n
\n
\n {this.renderLink('/', 'Home')}\n
\n {accessToTools && (\n Tools}\n showDelay={hoverMenuItemDelay}\n onShow={this._onShowMenuItem}\n onHide={this._onHideMenuItem}\n >\n
\n {this._renderDynamicItems(MenuSection.Tools)}\n {hasAccessToRequestTool && this.renderLink({ pathname: appStore.crewPortalUrl }, 'Crew Portal', !!isCrewPortalConfigured)}\n {hasAccessToVacManagement && this.renderLink('/vacation-request-management', 'Vacation Request Management', navigationStore.isHomePage)}\n {this._enableReserveTool && hasAccessToReserveManagement && this.renderLink('/reserve-request-management', 'Reserve Request Management', navigationStore.isHomePage)}\n {hasAccessToHotelTools && this.renderLink('/hotel-management-monthly', 'Hotel Management Monthly')}\n {hasAccessToHotelTools && this.renderLink('/hotel-management-daily', 'Hotel Management Daily')}\n\n {hasAccessToHomeStudy && this.renderLink('/home-study', 'Home Study', navigationStore.isHomePage)}\n\n {hasAccessToJCR && this.renderLink('/jeppesen-tool', 'Jeppesen Tool')}\n {hasAccessToAeropers && this.renderLink('/aeropers-interface', 'AeroPers Interface')}\n {hasAccessToEfa && this.renderLink('/efa-interface', 'Efa Interface')}\n\n {hasAccessToRotationTool && this.renderLink('/rotation-tool', 'Rotation Tool')}\n {hasAccessToLicenseManagement && this.renderLink('/license-management', 'License Management')}\n {hasAccessToCustomPersonManagement\n && this.renderLink('/custom-person-management', [AzureAuth.hasAccess(UserPermissions.MarshalsInfoRead) ? 'Marshals' : '', AzureAuth.hasAccess(UserPermissions.FseInfoRead) ? 'FSE' : ''].filter(x => !!x).join('/') + ' Management')}\n {hasAccessToCapacityTool && this.renderLink('/request-capacity-tool', 'Request Capacity Tool')}\n {hasAccessToBlockDaysManagement && this.renderLink('/request-tool-configuration', 'Request Tool Configuration')}\n {hasAccessToCrewApiGenDecConfig\n && this.renderLink('/crewapi-gendec-configuration', [AzureAuth.hasAccess([UserPermissions.CrewApiRead]) ? 'Crew API' : '', AzureAuth.hasAccess([UserPermissions.GenDecRead]) ? 'GenDec' : ''].filter(x => !!x).join('/') + ' Configuration')}\n {this._featureEnableCabinAttestation && hasAccessToCourseManagement && this.renderLink('/course-management', 'Course Management', navigationStore.isHomePage)}\n {hasAccessToStandbyReportEmailCreation && this.renderItem(\n 'Create Crewlage Report Email',\n 'standByReportEmailCreationDialog',\n () => void modalService.show(CreateStandByReportEmailDialog),\n )}\n {hasAccessToQualityExport && this.renderItem(\n 'Quality Loop Export',\n 'qualityLoopExportDialog',\n () => void modalService.show(QualityLoopExportDialog),\n )}\n {!!adminTools.length && (\n <>\n
\n {adminTools.map(l => this.renderLink(l.link, l.title))}\n \n )}\n
\n \n )}\n {accessToReports && (\n Reports}\n showDelay={hoverMenuItemDelay}\n onShow={this._onShowMenuItem}\n onHide={this._onHideMenuItem}\n >\n
\n {hasAccessToPersonReport && this.renderLink('/reports/person', 'Person', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/recurrent-training', 'Recurrent Training', navigationStore.isHomePage)}\n {hasAccessToCaCoReport && this.renderLink('/reports/standby', 'Standby', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/planned-trainings', 'Trainings Report', navigationStore.isHomePage)}\n {hasAccessToCockpit && this.renderLink('/reports/airport-recency', 'Airport Recency Report', navigationStore.isHomePage)}\n {hasAccessToAreaRouteCompetenceReport && this.renderLink('/reports/area-route-competency-recency', 'Area Route Competency Report', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/sectors', 'Sectors', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/crew-duty-list', 'Crew Duty List', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/roster', 'Roster Report', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/comment', 'Comments Report', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/off-days', 'OFF Days Report', navigationStore.isHomePage)}\n {hasAccessToCockpit && this.renderLink('/reports/aircraft-type-recency-cockpit', 'Aircraft Type Recency - Cockpit', navigationStore.isHomePage)}\n {hasAccessToCabin && this.renderLink('/reports/aircraft-type-recency-cabin', 'Aircraft Type Recency - Cabin', navigationStore.isHomePage)}\n {hasAccessToCaCoReport && this.renderLink('/reports/doox', 'DOOX Report', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/experience', 'Experience Report', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/simulator-license-status', 'Simulator/License Status', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/errors', 'Errors Report', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/person-vy-details', 'Person VY Details ', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/tzv', 'TZV Year Overview ', navigationStore.isHomePage)}\n {hasAccessToDutyRelatedReport && this.renderLink('/reports/xstar-monitoring', 'X* Monitoring Report', navigationStore.isHomePage)}\n {hasAccessToCateringReport && this.renderLink('/reports/catering', 'Catering Report', navigationStore.isHomePage)}\n {(hasAccessToDutyRelatedReport || hasAccessToGroundStaffStatisticReport) && this.renderLink('/reports/ground-staff', 'GroundStaff Statistics Report', navigationStore.isHomePage)}\n {hasAccessToDosimetryReport && this.renderLink('/reports/dosimetry', 'Dosimetry Report', navigationStore.isHomePage)}\n {hasAccessToSeniorityReport && this._enableExperienceReport && this.renderLink('/reports/seniority', 'Seniority Report', navigationStore.isHomePage)}\n {hasAccessToOutageReport && appStore.isCtrlKey && this.renderDownloadLink('/api/tempfile/outage-roster-report', 'Outage Report')}\n {this._featureEnableCabinAttestation && hasAccessToCourseManagement && this.renderLink('/reports/cca-report', 'Cabin Crew Attestation Report', navigationStore.isHomePage)}\n {this._featureEnableSimCourseOverview && hasAccessToDutyRelatedReport && this.renderLink('/reports/simulator', 'Simulator Report', navigationStore.isHomePage)}\n
\n \n )}\n {hasAccessToGenDec && (\n
\n {this.renderLink('/gen-dec', 'GenDec')}\n
\n )}\n {!!navMenuStore.dynamicMenuItems.length && (\n VIEW}\n showDelay={hoverMenuItemDelay}\n onShow={this._onShowMenuItem}\n onHide={this._onHideMenuItem}\n >\n
\n {this._renderDynamicItems(MenuSection.View)}\n
\n \n )}\n
\n
\n
\n {navMenuStore.menuTitle ? {navMenuStore.menuTitle} : null}\n \n CrewPage:{devInfoStore.appEnvironment}\n - Version:{devInfoStore.appVersion}\n \n {navMenuStore.hasRenderBlocker && }\n \n
\n \n
\n {this._helpLink && (\n
\n \n
\n )}\n
\n \n
\n {this._renderDynamicExtensions()}\n
\n
\n );\n }\n\n static _viewClass(isActive?: boolean) {\n return 'nav-link' + (isActive ? ' active-view' : '');\n }\n\n renderDownloadLink = (toUrl: string, title: string) => {\n return (\n {\n const encodedToken = getEncodedToken(appStore.currentToken);\n window.location.href = toUrl + '?token=' + encodeURIComponent(encodedToken);\n }} className=\"nav-link\">\n {title}\n \n );\n };\n\n renderLink = (toUrl: string | { pathname: string }, title: string, openInNewTab?: boolean, id?: string) => {\n const currentLocation = navigationStore.currentLocation.pathname.split('?')[0];\n const currentLocationParts = currentLocation.split('/').filter(x => !!x);\n const toUrlParts = toUrl.toString().split('/').filter(x => !!x);\n const isActive = currentLocationParts.length && currentLocationParts.every(x => toUrlParts.includes(x));\n\n return (\n \n {title}\n \n );\n };\n\n renderItem = (title: string, id: string, onClick: ClickHandler) => {\n return (\n \n {title}\n \n );\n };\n\n private _renderDynamicItems(section: MenuSection) {\n const sectionItems = navMenuStore.dynamicMenuItems.filter((i) => i.section === section);\n sectionItems.sort((a, b) => a.order - b.order);\n return sectionItems.map((i) => {\n if (typeof i.isHidden == 'boolean' && i.isHidden) return null;\n if (typeof i.isHidden == 'function' && i.isHidden()) return null;\n if (i.title === '-') {\n return
;\n }\n return (\n \n {i.title}\n \n );\n });\n }\n\n private _renderDynamicExtensions() {\n return navMenuStore.dynamicExtensionItems.map((item) => {\n if (item.isHidden) return ;\n return (\n
\n {item.itemRender}\n
\n );\n });\n }\n\n @action.bound\n private _onShowMenuItem() {\n this._isAnyMenuItemVisible = true;\n }\n\n @action.bound\n private _onHideMenuItem() {\n if (this._isAnyMenuItemVisible) {\n this._isAnyMenuItemVisible = false;\n }\n }\n}\n\nclass NavMenuStore {\n @observable public hasRenderBlocker: boolean = false;\n @observable public dynamicMenuItems: MenuItem[] = [];\n @observable public dynamicExtensionItems: ExtensionItem[] = [];\n @observable menuTitle: string | null = null;\n\n constructor() {\n applyDecorators(this);\n }\n\n public registerMenuItem(item: MenuItem, ignoreSecondRegistration?: boolean) {\n if (this.dynamicMenuItems.find((i) => i.id === item.id)) {\n if (ignoreSecondRegistration) return;\n throw new Error(`Menu item with id = ${item.id} is already registered!`);\n }\n this.dynamicMenuItems.push(item);\n }\n\n public unregisterMenuItem(itemId: string) {\n const itemIndex = this.dynamicMenuItems.findIndex((i) => i.id === itemId);\n if (itemIndex === -1) {\n throw new Error(`Menu item with id = ${itemId} is not registered!`);\n }\n this.dynamicMenuItems.splice(itemIndex, 1);\n }\n\n public registerExtensionItem(item: ExtensionItem, ignoreSecondRegistration?: boolean) {\n if (this.dynamicExtensionItems.find((i) => i.id === item.id)) {\n if (ignoreSecondRegistration) return;\n throw new Error(`Extension item with id = ${item.id} is already registered!`);\n }\n this.dynamicExtensionItems.push(item);\n }\n\n public unregisteExtensionItem(itemId: string) {\n const itemIndex = this.dynamicExtensionItems.findIndex((i) => i.id === itemId);\n if (itemIndex === -1) {\n throw new Error(`Extension item with id = ${itemId} is not registered!`);\n }\n this.dynamicExtensionItems.splice(itemIndex, 1);\n }\n}\n\nexport const navMenuStore = new NavMenuStore();\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, action, computed } from 'mobx';\nimport { ActionMeta, components, GroupBase, MultiValue, MultiValueGenericProps, OptionProps, OptionsOrGroups, SingleValue } from 'react-select';\nimport { AsyncPaginate } from 'react-select-async-paginate';\nimport { FormFeedback } from 'reactstrap';\nimport { shallowEqual } from 'shallow-equal-object';\n\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { KeyboardKeys } from '@app/AppConstants/KeyboardKeys';\nimport { FunctionGroupIds } from '@app/AppConstants/PersonFunctions';\nimport { PersonFilterModel } from '@app/Models';\nimport { PersonLookupModel, PersonModel, PersonSortOrder } from '@app/Models/WebApiModels';\n\nimport Extensions from '@app/Services/Extensions';\nimport ApiService from '@app/Services/ApiService';\nimport { MatchComparer, stringSearchService } from '@app/Services/StringSearchService';\nimport { IPersonStore } from './VirtualizedRoster';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype PersonFilterProps = {\n className?: string;\n title?: string;\n placeholder?: string;\n value: string;\n size?: string;\n validationErrors?: string[];\n isMulti?: boolean;\n filters?: PersonFilterModel;\n canClear?: boolean;\n includeInactive?: boolean;\n includeWithoutEmail?: boolean;\n personStore?: IPersonStore;\n personSortOrder?: PersonSortOrder;\n isPersonDisabled?: (person: PersonLookupModel | PersonModel) => boolean;\n onChangePersons?: (persons: PersonSelectDTO | PersonSelectDTO[]) => void;\n onSelect?: (personIds: string, persons: PersonSelectDTO[]) => void;\n renderCustomOption?: (props: OptionProps, highlightedSearchText: JSX.Element) => JSX.Element;\n};\n\n@observer\nexport default class PersonFilter extends React.Component {\n @observable private _needToReloadOptions: boolean = false;\n private _store: PersonFilterStore;\n\n constructor(props: PersonFilterProps) {\n super(props);\n applyDecorators(this);\n this._store = new PersonFilterStore(props);\n }\n\n componentDidMount() {\n void this._store.loadPersonById();\n }\n\n componentDidUpdate(prevProps: PersonFilterProps) {\n this._store.updateProps(this.props);\n this._needToReloadOptions = false;\n\n if (!shallowEqual(prevProps.filters, this.props.filters) || prevProps.value !== this.props.value) {\n this._needToReloadOptions = true;\n if (this.props.value) {\n Extensions.executeTimeout(this._store.loadPersonById, 50);\n } else {\n this._store.selectedPersons = [];\n }\n }\n }\n\n render() {\n const { title, className, placeholder, canClear, isMulti, validationErrors, size } = this.props;\n const itemClass = ['filters-list-item'];\n if (size === 'sm') itemClass.push('size-sm');\n if (validationErrors?.length) itemClass.push('is-invalid');\n if (className) itemClass.push(className);\n\n return (\n
\n {title &&
{title}
}\n
\n `(${option.code}) ${option.name}`}\n getOptionValue={(option) => option.code}\n tabSelectsValue={true}\n escapeClearsValue={true}\n className=\"select-filter-container select-filter-single\"\n classNamePrefix=\"person select-filter\"\n isClearable={canClear ?? true}\n value={this._store.selectedPersons}\n inputValue={this._store.search}\n isOptionDisabled={(option) => option.disabled}\n components={{ Option: this.renderOption, MultiValueLabel: this.renderMultiValueLabel }}\n />\n {validationErrors && !!validationErrors.length && (\n \n {validationErrors && validationErrors.map((error: string) => (\n
{error}
\n ))}\n
\n )}\n
\n
\n );\n }\n\n renderOption = (props: OptionProps) => {\n const highlightedSearchText = this._renderText(props.label, props.data.isInactive && !this.props.renderCustomOption);\n\n if (this.props.renderCustomOption) {\n return this.props.renderCustomOption(props, highlightedSearchText);\n }\n\n return (\n \n {props.isSelected ? props.label : highlightedSearchText}\n \n );\n };\n\n renderMultiValueLabel = (props: MultiValueGenericProps) => {\n return {props.data.code};\n };\n\n @action.bound\n private _onLoadOptions(search: string, options: OptionsOrGroups>) {\n return this._store.loadOptions(search, options, this.props);\n }\n\n @action.bound\n private _onMenuClose() {\n this._store.search = '';\n\n if (this.props.isMulti) {\n this._onSelectPersons();\n }\n }\n\n @action.bound\n private _onChangeHandler(selectedPersons: PersonSelectDTOValue, actionMeta?: ActionMeta) {\n const persons: PersonSelectDTO[] = Array.isArray(selectedPersons)\n ? selectedPersons\n : selectedPersons ? [selectedPersons] : [];\n\n this._store.selectedPersons = persons;\n this.props.onChangePersons?.(persons);\n\n if (!this.props.isMulti || actionMeta?.action === 'clear') {\n this._onSelectPersons();\n }\n }\n\n @action\n private _onSelectPersons() {\n const personIds = this._store.selectedPersons.map((p) => p.id).join(',');\n this.props.onSelect?.(personIds, this._store.selectedPersons);\n }\n\n @action.bound\n private _onKeyDownHandler(event: React.KeyboardEvent) {\n const { isMulti } = this.props;\n\n if (event.keyCode === KeyboardKeys.COMMA) {\n const searchValue = (event.target as HTMLInputElement).value;\n const result = this._store.saveFromSearch(searchValue, isMulti || false);\n this._store.search = '';\n this._onChangeHandler(result);\n }\n }\n\n @action.bound\n private _onInputChangeHandler(search: string) {\n const modifiedInput = search.charAt(search.length - 1) === ',' ? '' : search;\n this._store.search = modifiedInput;\n }\n\n @computed\n private get _searchTerms() {\n const searchStr = this._store.search;\n return searchStr.split(/[ ,]+/).filter((x) => !!x);\n }\n\n @action\n private _renderText(text: string | undefined, decorate?: boolean) {\n const comparator: MatchComparer = (v, t, s) => {\n return stringSearchService.prepareString(v)?.indexOf(stringSearchService.prepareString(t) ?? '', s) ?? -1;\n };\n const parts = stringSearchService.markMatches(text, this._searchTerms, comparator);\n return (\n \n {parts.map((p, index) =>\n p.isMatch ? (\n \n {`${p.text}`}\n \n ) : (\n p.text\n )\n )}\n \n );\n }\n}\n\nclass PersonFilterStore {\n @observable.ref private _options: PersonSelectDTO[] = [];\n @observable.ref public selectedPersons: PersonSelectDTO[] = [];\n @observable public search: string = '';\n private _props: PersonFilterProps;\n\n constructor(props: PersonFilterProps) {\n applyDecorators(this);\n this.updateProps(props);\n }\n\n public updateProps(props: PersonFilterProps) {\n this._props = props;\n }\n\n @action\n public async loadOptions(search: string, prevOptions: OptionsOrGroups>, props: PersonFilterProps) {\n const pageSize = 30;\n const page = prevOptions.length % pageSize === 0 ? (prevOptions.length + pageSize) / pageSize : 1;\n\n const sendData: PersonFilterModel = props.filters ? Object.assign({}, props.filters) : ({} as PersonFilterModel);\n if (search) {\n sendData.search = search;\n sendData.searchByFullName = true;\n }\n if (sendData.functionId === FunctionGroupIds.Fcm) {\n sendData.functionId = null;\n sendData.functionIds = [FunctionGroupIds.Cabin, FunctionGroupIds.Cockpit];\n }\n\n const params = {\n ids: this._props.personStore ? this._props.personStore.filteredPersons.map(p => p.id) : sendData.ids?.trim() ? sendData.ids.split(',') : [],\n functionId: sendData.functionId,\n functionIds: sendData.functionIds,\n referenceDate: sendData.referenceDate,\n qualificationIds: sendData.qualificationIds?.trim() ? sendData.qualificationIds.split(',') : [],\n contractTypes: sendData.contractTypes?.trim() ? sendData.contractTypes.split(',').map(x => +x) : [],\n partialLoadType: sendData.partialLoadType,\n dutyFilter: sendData.dutyFilter,\n monthlyTypes: sendData.monthlyTypes?.trim() ? sendData.monthlyTypes.split(',').map(x => +x) : [],\n releaseFilterTypes: sendData.releaseFilterTypes?.trim() ? sendData.releaseFilterTypes.split(',').map(x => +x) : [],\n functionFromDate: sendData.functionFromDate,\n search: sendData.search,\n searchByFullName: sendData.searchByFullName,\n pageSize: pageSize,\n page: page,\n includeInactive: props.includeInactive ?? sendData.includeInactive,\n includeWithoutEmail: props.includeWithoutEmail ?? sendData.includeWithoutEmail,\n sort: props.personSortOrder ?? sendData.sort ?? undefined,\n order: sendData.order ?? undefined\n };\n\n \n const { data } = await ApiService.postTypedData(ApiUrls.PersonLookupUrl, params);\n const persons = data.map((item) => {\n const isDisabled = props.isPersonDisabled ? props.isPersonDisabled(item) : false;\n return new PersonSelectDTO(item, isDisabled);\n });\n\n this._options = persons;\n\n return {\n options: persons,\n hasMore: persons.length === pageSize\n };\n }\n\n @action.bound\n public async loadPersonById() {\n const { value, includeInactive, includeWithoutEmail, isPersonDisabled, filters } = this._props;\n\n if (!value) return;\n\n const params = {\n ids: value,\n includeInactive: includeInactive,\n includeWithoutEmail: includeWithoutEmail,\n functionFromDate: filters?.functionFromDate,\n referenceDate: filters?.referenceDate\n };\n const { data } = await ApiService.getTypedData(ApiUrls.PersonUrl, params);\n this.selectedPersons = data.map(item => {\n const isDisabled = isPersonDisabled ? isPersonDisabled(item) : false;\n return new PersonSelectDTO(item, isDisabled);\n });\n\n this._props.onChangePersons?.(this.selectedPersons);\n }\n\n @action\n saveFromSearch(searchValue: string, isMulti: boolean) {\n let selectedPersons = this.selectedPersons;\n if (searchValue.replace(',', '').trim().length === 0) return selectedPersons;\n\n const persons = this._options;\n const codes = searchValue.split(',').map((code: string) => code.trim().toUpperCase());\n const matchedList = persons.filter((item: PersonSelectDTO) => codes.indexOf(item.code.toUpperCase()) !== -1);\n\n if (!matchedList || matchedList.length === 0) return selectedPersons;\n\n if (isMulti) {\n matchedList.forEach((person) => {\n if (selectedPersons.findIndex(p => person.id === p.id) < 0) {\n selectedPersons.push(person);\n }\n });\n } else {\n selectedPersons = matchedList;\n }\n\n return selectedPersons;\n }\n}\n\ntype PersonSelectDTOValue = SingleValue | MultiValue;\nexport class PersonSelectDTO {\n name: string;\n id: string;\n disabled: boolean;\n code: string;\n email: string;\n isInactive: boolean;\n\n constructor(item: Partial, isDisabled?: boolean) {\n this.name = `${item.firstName} ${item.lastName}`;\n this.id = item.id || '';\n this.disabled = !!isDisabled;\n this.code = item.code || '';\n this.email = item.email || '';\n this.isInactive = !(item.isActive ?? true);\n }\n}\n","import * as React from 'react';\n\nimport { LicenseModel, FunctionModel } from '@app/Models/WebApiModels';\n\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { ToolTipItem } from '@app/Components';\n\ntype LicenseProps = {\n licenses: LicenseModel[];\n currentFunction: FunctionModel;\n targetId?: string;\n selectedDate?: Date | null;\n};\n\ninterface ILicenseModel {\n id: string;\n name: string;\n isExpired: boolean;\n}\n\nexport class License extends React.Component {\n render() {\n const { licenses, currentFunction, targetId, selectedDate } = this.props;\n\n const sortedLicenses = licenses.filter((item) => item.visibleInRoster).sort((a, b) => a.sortOrder - b.sortOrder);\n\n const isNewcomer = currentFunction && currentFunction.isNewcomer;\n\n const expirationArray =\n (selectedDate &&\n licenses\n .filter((item) => item.visibleInRoster && item.licenseExpirationDate && selectedDate.getUTCFullYear() === item.licenseExpirationDate.getUTCFullYear() && selectedDate.getUTCMonth() === item.licenseExpirationDate.getUTCMonth())\n .sort((a, b) => a.sortOrder - b.sortOrder)\n .map((item) => item.shortName)) ||\n [];\n\n const isNewcomerExperienced = (selectedDate && currentFunction && currentFunction.newcomerExperienceDate && DateTimeService.isAfterDate(selectedDate, currentFunction.newcomerExperienceDate)) || false;\n\n const typeRatingsLicenses: string[][] = [['A32', 'A33', 'A34', 'A33/4', 'A35', 'A34/5']];\n\n const cockpitQualificationLicenses: string[][] = [\n ['A32TRI', 'A33TRI', 'A34TRI', 'A35TRI'],\n ['A32TRIr', 'A33TRIr', 'A34TRIr', 'A35TRIr'],\n ['A32TRE', 'A33TRE', 'A34TRE', 'A35TRE'],\n ['A32TRE3', 'A33TRE3', 'A34TRE3', 'A35TRE3'],\n ['A32SFI', 'A33SFI', 'A34SFI', 'A35SFI'],\n ['A32SFE3', 'A33SFE3', 'A34SFE3', 'A35SFE3']\n ];\n\n const cabinCClassLicenses: string[] = ['A32C', 'A33/4C', 'A34/5C'];\n\n const typeRatingElements: ILicenseModel[] = this.combineLicensesToGroup(typeRatingsLicenses, sortedLicenses, selectedDate ? selectedDate : DateTimeService.today());\n const cockpitQualificationsElements: ILicenseModel[] = this.combineLicensesToGroup(cockpitQualificationLicenses, sortedLicenses, selectedDate ? selectedDate : DateTimeService.today());\n const bussinesClassQualificationsElements: ILicenseModel[] = this.combineBussinessClassLicenses(cabinCClassLicenses, sortedLicenses, selectedDate ? selectedDate : DateTimeService.today());\n\n const frontLicensesMaxSortOrder = 1000;\n const otherLicenses = sortedLicenses.filter((lic) => !Array.prototype.concat.apply([], typeRatingsLicenses).includes(lic.shortName) && !Array.prototype.concat.apply([], cockpitQualificationLicenses).includes(lic.shortName) && !cabinCClassLicenses.includes(lic.shortName));\n\n const otherLicensesFront = otherLicenses.filter((lic) => lic.sortOrder < frontLicensesMaxSortOrder);\n const otherLicensesEnd = otherLicenses.filter((lic) => lic.sortOrder >= frontLicensesMaxSortOrder);\n\n const otherLicensesFrontElements: ILicenseModel[] = otherLicensesFront.map((lic) => this.getLicenseModel(lic, (x: LicenseModel) => x.shortName, selectedDate ? selectedDate : DateTimeService.today()));\n const otherLicensesEndElements: ILicenseModel[] = otherLicensesEnd.map((lic) => this.getLicenseModel(lic, (x: LicenseModel) => x.shortName, selectedDate ? selectedDate : DateTimeService.today()));\n\n const traineeLicenses = this._getTraineeLicenses(sortedLicenses, typeRatingsLicenses);\n const isTraineeElements: ILicenseModel[] = [];\n if (traineeLicenses.length > 0) {\n traineeLicenses.forEach((l) => {\n isTraineeElements.push({\n id: 'trainee_' + l.licenseId,\n name: 'Trainee',\n isExpired: (selectedDate && l.licenseExpirationDate && DateTimeService.isBeforeDate(l.licenseExpirationDate, selectedDate)) || false\n });\n });\n }\n if (isNewcomer && !isNewcomerExperienced) {\n isTraineeElements.push({\n id: 'newcomer_' + Date.now,\n name: 'Newcomer',\n isExpired: false\n });\n }\n\n const expired: string[] = [];\n if (selectedDate && expirationArray.length !== 0) {\n expired.push(`Expired in ${DateTimeService.toCustomUiFormat(selectedDate, 'MMMM YYYY')}`);\n expirationArray.map((item) => {\n expired.push(item);\n });\n }\n\n const hasAnyLicense = typeRatingElements.length > 0 || bussinesClassQualificationsElements.length > 0 || cockpitQualificationsElements.length > 0 || otherLicensesFrontElements.length > 0 || otherLicensesEndElements.length > 0;\n\n if (!hasAnyLicense) return null;\n else {\n const qualElements = bussinesClassQualificationsElements\n .concat(cockpitQualificationsElements)\n .concat(otherLicensesFrontElements)\n .filter((elem, index, self) => {\n return self.map((mapObj) => mapObj['id']).indexOf(elem['id']) === index;\n });\n\n return (\n
\n {this.renderLicenseBlock(typeRatingElements, true)}\n {qualElements.length > 0 ? ' - ' : ''}\n {this.renderLicenseBlock(qualElements, true)}\n {otherLicensesEndElements.length > 0 ? ' ' : ''}\n {this.renderLicenseBlock(otherLicensesEndElements, true)}\n {isTraineeElements.length > 0 ? ' - ' : ''}\n {this.renderLicenseBlock(isTraineeElements, true)}\n {targetId && (\n \n {this.renderLicenseBlock(typeRatingElements, false)}\n {qualElements.length > 0 ? '\\r\\n' : ''}\n {this.renderLicenseBlock(qualElements, false)}\n {otherLicensesEndElements.length > 0 ? ' ' : ''}\n {this.renderLicenseBlock(otherLicensesEndElements, false)}\n {isTraineeElements.length > 0 ? '\\r\\n' : ''}\n {this.renderLicenseBlock(isTraineeElements, false)}\n
\n {expired.length > 0 && expired.join('\\r\\n')}\n
\n )}\n
\n );\n }\n }\n\n renderLicenseBlock(arr: ILicenseModel[], isSetClass: boolean, ignoreExpiration: boolean = false): JSX.Element | null {\n if (arr.length === 0) return null;\n\n return (\n <>\n {arr.map((el, i) => {\n const className = isSetClass && !ignoreExpiration && el.isExpired ? 'person-grid-license-expired-soon' : '';\n return (\n \n {el.name}\n {el.name.endsWith('/') ? '' : ' '}\n \n );\n })}\n \n );\n }\n\n getLicenseModel(lic: LicenseModel, getNameFunc: Function, selectedDate: Date | null): ILicenseModel {\n const isExpired = (selectedDate && lic.licenseExpirationDate && DateTimeService.isBeforeDate(lic.licenseExpirationDate, selectedDate)) || false;\n const licName = getNameFunc(lic);\n\n return {\n id: lic.id,\n name: licName,\n isExpired: isExpired\n };\n }\n\n combineLicensesToGroup(licenseGroups: string[][], sortedLicenses: LicenseModel[], selectedDate: Date | null): ILicenseModel[] {\n let elements: ILicenseModel[] = [];\n\n licenseGroups.forEach(\n (value) =>\n (elements = elements.concat(\n sortedLicenses\n .filter((lic) => value.indexOf(lic.shortName) >= 0)\n .sort((a, b) => +a - +b)\n .map((lic, index, array) => {\n let element: ILicenseModel;\n\n if (array.length === 1) element = this.getLicenseModel(lic, (x: LicenseModel) => x.shortName, selectedDate);\n //only one item\n else if (index === 0) element = this.getLicenseModel(lic, (x: LicenseModel) => x.shortName.substr(0, 3) + '/', selectedDate);\n //first of multiple items\n else if (array.length === index + 1) element = this.getLicenseModel(lic, (x: LicenseModel) => x.shortName.substr(2), selectedDate);\n //last of multiple items\n else element = this.getLicenseModel(lic, (x: LicenseModel) => x.shortName.substr(2, 1) + '/', selectedDate); //any other items\n\n return element;\n })\n ))\n );\n\n return elements;\n }\n\n combineBussinessClassLicenses(licenseGroups: string[], sortedLicenses: LicenseModel[], selectedDate: Date | null): ILicenseModel[] {\n const elements: ILicenseModel[] = [];\n\n let applicableLicenses = [...sortedLicenses];\n const has345c = !!applicableLicenses.filter((lic) => 'A34/5C' === lic.shortName).length;\n if (has345c){\n applicableLicenses = applicableLicenses.filter((lic) => 'A33/4C' !== lic.shortName);\n }\n \n const toBeCombined = applicableLicenses.filter((lic) => licenseGroups.indexOf(lic.shortName) >= 0);\n if (toBeCombined.length === 2) elements.push(this.getLicenseModel(toBeCombined[0], () => 'C', selectedDate));\n else if (toBeCombined.length !== 0 && toBeCombined[0] && toBeCombined[0].shortName.trim()) elements.push(this.getLicenseModel(toBeCombined[0], (x: LicenseModel) => `C${x.shortName.substring(2, 3)}`, selectedDate));\n\n return elements;\n }\n\n private _getTraineeLicenses(sortedLicenses: LicenseModel[], licenseGroups: string[][]): LicenseModel[] {\n const licenseGroupsArray = licenseGroups.reduce((acc, val) => acc.concat(val), []);\n return sortedLicenses.filter((item) => item.isTrainee && licenseGroupsArray.includes(item.shortName));\n }\n}\n","import * as React from 'react';\nimport { observable, computed, action, transaction, runInAction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { Button, ButtonGroup } from 'reactstrap';\n\nimport { KeyboardKeys } from '@app/AppConstants/KeyboardKeys';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { ApiClient, PersonCommentCreateDto, PersonCommentReadDto, PersonCommentUpdateDto } from '@app/Models/WebApiModels';\n\nimport ApiService from '@app/Services/ApiService';\nimport { BaseFormModel } from '@app/Services/BaseFormModel';\nimport { displayName, isDate, isDateAfter, isDateBefore, isRequired } from '@app/Services/Validation';\n\nimport { Icon } from '@app/Components/Icon';\nimport { FormCheckbox, FormInput } from '@app/Components/FormControls';\nimport { DatePickerValidatedControl } from '@app/Components/DateTimeControls';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { modalService, ModalDialogOptions, ModalWindow, IModalDialogContent, ModalButtonType } from '../Modal';\nimport { PromiseCompletion } from '@app/Classes/PromiseCompletion';\nimport HistorizationStore from '@app/Stores/HistorizationStore';\nimport { FunctionGroupIds } from '@app/AppConstants/PersonFunctions';\nimport { IPersonStore } from '../VirtualizedRoster';\nimport { AzureAuth, UserPermissions, WritePermissionOptions } from '../AzureAuth';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype PersonCommentDialogProps = {\n personId: string;\n date: Date;\n personStore: IPersonStore;\n historizationStore?: HistorizationStore;\n};\n\ntype PersonCommentDto = Omit;\n\n@observer\nexport default class PersonCommentDialog extends React.Component implements IModalDialogContent {\n _store: PersonCommentDialogStore;\n\n constructor(props: PersonCommentDialogProps) {\n super(props);\n applyDecorators(this);\n this._store = new PersonCommentDialogStore(props);\n }\n\n public getModalOptions(window: ModalWindow): ModalDialogOptions {\n return {\n buttons: [\n {\n type: ModalButtonType.Close,\n onClick: () => {\n window.close();\n }\n }\n ],\n loader: this._store.loader,\n width: '1000px',\n bodyClassName: this._store.currentComment ? 'inline-comment-fade' : '',\n footerPrefix: \n };\n }\n\n async componentDidMount() {\n await this._store.loadCurrentPerson();\n await this._store.loadItems();\n }\n\n render() {\n const hasAccessToAddNew = this._store.hasWritePermission(this.props.date);\n return (\n <>\n {this._store.comments.map((comment) => this.renderCommentItem(comment))}\n \n {this._store.currentComment && !this._store.currentComment.commentId && }\n \n );\n }\n\n @action\n renderCommentItem(comment: PersonCommentReadDto) {\n const canEdit = this._store.hasWritePermission(comment.validFromDate);\n if (this._store.currentComment && this._store.currentComment.commentId === comment.commentId && canEdit) {\n return ;\n } else if (comment.commentId) {\n let className = \"inline-comment-item\";\n let title = '';\n if (!canEdit) {\n className += \" disabled\";\n title = \"This date is disabled for editing\";\n }\n return (\n
\n
{comment.text}
\n {canEdit && (\n \n )}\n
\n
\n From {DateTimeService.toUiDate(comment.validFromDate)}\n {comment.validToDate ? ' till ' + DateTimeService.toUiDate(comment.validToDate) : ''}\n
\n
\n
\n {comment.isVisibleByCrewMember &&
Visible for Employee
}\n {comment.isVisibleToAllUsers &&
Public
}\n {comment.isStandby &&
Standby
}\n
\n {comment.modifiedBy}\n
\n
\n
\n );\n }\n\n return null;\n }\n}\ntype PersonCommentFormProps = {\n store: PersonCommentDialogStore\n}\n@observer\nclass PersonCommentForm extends React.Component {\n commentRef: React.RefObject = React.createRef();\n \n constructor (props:PersonCommentFormProps) {\n super(props);\n applyDecorators(this);\n }\n\n componentDidMount() {\n const comment = this.commentRef.current;\n if (comment) window.setTimeout(() => comment.focus(), 0);\n document.addEventListener('click', this._handleClick, { capture: true });\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this._handleClick, { capture: true });\n }\n\n private _handleClick = (event: MouseEvent) => {\n const { store } = this.props;\n const target = event.target as HTMLDivElement;\n if (!target || target.closest('.inline-comment') || target.closest('#datetimepicker-container') || !target.parentNode) return;\n if (store.currentComment) {\n const parent = target.parentElement;\n if (store.currentComment.text && !parent?.closest('.modal-footer') && !parent?.closest('.close')) {\n void store.saveData();\n } else {\n store.resetForm();\n }\n }\n };\n\n handleKeyUp = (event: React.KeyboardEvent) => {\n const { store } = this.props;\n if (event.keyCode === KeyboardKeys.ENTER) {\n void store.saveData();\n }\n if (event.keyCode === KeyboardKeys.ESCAPE) {\n event.stopPropagation();\n store.resetForm();\n }\n };\n\n render() {\n const { store } = this.props;\n\n if (!store.currentComment) return null;\n\n const startOfMonth = DateTimeService.toFirstDayOfMonth(store.currentComment.validFromDate);\n const canSave = store.hasWritePermission(store.currentComment.validFromDate);\n return (\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n {store.isFcm && }\n \n {store.isGround && }\n \n
\n
\n \n \n
\n
\n
\n );\n }\n}\n\nclass PersonCommentDialogStore {\n private _apiClient: ApiClient = new ApiClient();\n @observable comments: PersonCommentReadDto[] = [];\n @observable currentComment: FormModel | null = null;\n @observable showHistoryComment: boolean = false;\n @observable currentPersonId: string | undefined;\n public loader: PromiseCompletion = new PromiseCompletion();\n\n private readonly _personId: string;\n private readonly _date: Date;\n private readonly _historizationStore?: HistorizationStore;\n private readonly _personStore: IPersonStore;\n\n constructor(props: PersonCommentDialogProps) {\n applyDecorators(this);\n this._personId = props.personId;\n this._date = props.date;\n this._historizationStore = props.historizationStore;\n this._personStore = props.personStore;\n this.resetForm();\n }\n\n @computed\n public get isFcm() {\n const personDetails = this._personStore?.getDetails(this._personId);\n const isFcm = personDetails?.function?.functionGroupId === FunctionGroupIds.Cockpit || personDetails?.function?.planningFunctionGroupId === FunctionGroupIds.Cockpit\n || personDetails?.function?.functionGroupId === FunctionGroupIds.Cabin || personDetails?.function?.planningFunctionGroupId === FunctionGroupIds.Cabin;\n\n return isFcm;\n }\n\n @computed\n public get isGround() {\n const personDetails = this._personStore?.getDetails(this._personId);\n const isGround = personDetails?.function?.functionGroupId === FunctionGroupIds.Ground || personDetails?.function?.planningFunctionGroupId === FunctionGroupIds.Ground;\n\n return isGround;\n }\n\n @computed\n public get canReadEmployeeComments() {\n const personDetails = this._personStore?.getDetails(this._personId);\n const isCockpit = personDetails?.function?.functionGroupId === FunctionGroupIds.Cockpit || personDetails?.function?.planningFunctionGroupId === FunctionGroupIds.Cockpit;\n const isCabin = personDetails?.function?.functionGroupId === FunctionGroupIds.Cabin || personDetails?.function?.planningFunctionGroupId === FunctionGroupIds.Cabin;\n const isGround = personDetails?.function?.functionGroupId === FunctionGroupIds.Ground || personDetails?.function?.planningFunctionGroupId === FunctionGroupIds.Ground;\n\n if (isCockpit && AzureAuth.hasAccess(UserPermissions.CommentEmployeeCockpitRead))\n return true;\n\n if (isCabin && AzureAuth.hasAccess(UserPermissions.CommentEmployeeCabinRead))\n return true;\n\n if (isGround && AzureAuth.hasAccess(UserPermissions.CommentEmployeeGroundRead))\n return true;\n\n return false;\n }\n\n @action\n async loadItems() {\n const params = {\n personId: this._personId,\n date: this._date,\n showAllComments: this.showHistoryComment\n };\n const { data } = await ApiService.getTypedData(ApiUrls.PersonCommentUrl, params, { completion: this.loader });\n\n runInAction(() => {\n this.comments = data;\n });\n }\n\n @action\n async loadCurrentPerson() {\n const { data } = await this._apiClient.personRelatedPersonGet({ completion: this.loader });\n runInAction(() => {\n this.currentPersonId = data.currentPerson?.id;\n });\n }\n\n @action\n showForm = () => {\n this.currentComment = new FormModel();\n if (!this.canReadEmployeeComments){\n this.currentComment.isVisibleByCrewMember = true;\n }\n };\n\n private reloadPersonInfo() {\n this._personStore.loadPersonInfo(this._personId);\n }\n\n async createComment(comment: PersonCommentDto) {\n const params = new PersonCommentCreateDto({\n personId: this._personId,\n text: comment.text,\n validFromDate: comment.validFromDate,\n validToDate: comment.validToDate,\n isStandby: comment.isStandby,\n isVisibleByCrewMember: comment.isVisibleByCrewMember,\n isVisibleToAllUsers: comment.isVisibleToAllUsers\n });\n\n await ApiService.postTypedData(ApiUrls.PersonCommentUrl, params, { completion: this.loader });\n await this.loadItems();\n\n this.reloadPersonInfo();\n this.resetForm();\n }\n\n async updateComment(comment: PersonCommentDto) {\n const params = new PersonCommentUpdateDto({\n personId: this._personId,\n commentId: comment.commentId || '',\n text: comment.text,\n validFromDate: comment.validFromDate,\n validToDate: comment.validToDate,\n isStandby: comment.isStandby,\n isVisibleByCrewMember: comment.isVisibleByCrewMember,\n isVisibleToAllUsers: comment.isVisibleToAllUsers\n });\n const originalComment = this.comments.find((el) => el.commentId === comment.commentId);\n if (originalComment && (originalComment.text !== comment.text || originalComment.validFromDate !== comment.validFromDate || originalComment.validToDate !== comment.validToDate || originalComment.isStandby !== comment.isStandby || originalComment.isVisibleByCrewMember !== comment.isVisibleByCrewMember)) {\n await ApiService.putTypedData(ApiUrls.PersonCommentUrl, params, { completion: this.loader });\n await this.loadItems();\n }\n this.reloadPersonInfo();\n this.resetForm();\n }\n\n @action.bound\n async saveData() {\n const isValidComment = this.currentComment?.validate();\n if (this.currentComment && isValidComment) {\n if (!this.currentComment.commentId) {\n await this.createComment(this.currentComment);\n } else {\n await this.updateComment(this.currentComment);\n }\n }\n }\n\n @action\n deleteComment = (commentId: string) => async (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n if (!(await modalService.showConfirmation('Are you sure you want to delete this comment?', 'Warning', { color: 'warning' }))) {\n return;\n }\n\n await ApiService.deleteData(ApiUrls.CommentUrl + '?id=' + commentId, { completion: this.loader });\n await this.loadItems();\n this.reloadPersonInfo();\n };\n\n @action\n editComment = (commentId: string) => () => {\n const comment = this.comments.find((item: PersonCommentReadDto) => item.commentId === commentId);\n\n if (comment && !this.hasWritePermission(comment.validFromDate)) return;\n\n comment &&\n transaction(() => {\n this.currentComment = new FormModel(comment);\n });\n };\n\n @action\n toggleHistory = () => {\n this.showHistoryComment = !this.showHistoryComment;\n void this.loadItems();\n };\n\n @action\n toggleStandby = () => {\n if (this.currentComment) {\n this.currentComment.isStandby = !this.currentComment.isStandby;\n }\n };\n\n @action\n toggleVisibleByCrewMember = () => {\n if (this.currentComment) {\n if (this.currentComment.isVisibleByCrewMember && !this.canReadEmployeeComments){\n return;\n }\n this.currentComment.isVisibleByCrewMember = !this.currentComment.isVisibleByCrewMember;\n if (this.currentComment.isVisibleByCrewMember){\n this.currentComment.isVisibleToAllUsers = false;\n }\n }\n };\n\n @action\n toggleVisibleToAllUsers = () => {\n if (this.currentComment) {\n if (this.currentComment.isVisibleToAllUsers && !this.canReadEmployeeComments){\n return;\n }\n this.currentComment.isVisibleToAllUsers = !this.currentComment.isVisibleToAllUsers;\n if (this.currentComment.isVisibleToAllUsers){\n this.currentComment.isVisibleByCrewMember = false;\n }\n }\n };\n\n @action\n resetForm = () => {\n this.currentComment = null;\n };\n\n @computed\n get isNewComment() {\n return this.currentComment && !this.currentComment.commentId;\n }\n\n hasWritePermission(date: Date) {\n const data = [{ date, person: { id: this._personId, code: '' } }];\n\n const personFunction = this._personStore.getDetails(this._personId)?.function;\n const options: WritePermissionOptions = {\n type: 'WritePermissionOptions',\n ignorePermissions: [UserPermissions.RosterGroundWriteTracking],\n personStore: this._personStore\n };\n\n const hasWritePermission = this._historizationStore?.hasWritePermission(data, options, personFunction?.functionGroupId || null, true)\n || this._historizationStore?.hasWritePermission(data, options, personFunction?.planningFunctionGroupId || null, true);\n \n return hasWritePermission || (this._personId === this.currentPersonId);\n }\n}\n\nclass FormModel extends BaseFormModel implements PersonCommentDto {\n @observable\n @displayName('Text')\n @isRequired()\n text: string = '';\n\n @observable\n @displayName('Date From')\n @isRequired()\n @isDate()\n @isDateBefore('dateTo')\n dateFrom: string = '';\n\n @observable\n @displayName('Date To')\n @isDate()\n @isDateAfter('dateFrom')\n dateTo: string = '';\n\n @observable isStandby: boolean = false;\n @observable isVisibleByCrewMember: boolean = false;\n @observable isVisibleToAllUsers: boolean = false;\n\n @observable commentId?: string;\n @observable modifiedAtDateUtc?: Date;\n @observable modifiedBy: string;\n @observable createdAtDateUtc?: Date;\n @observable createdBy: string;\n\n @computed\n get validFromDate() {\n return DateTimeService.parseUiDate(this.dateFrom);\n }\n @computed\n get validToDate() {\n return this.dateTo ? DateTimeService.parseUiDate(this.dateTo) : undefined;\n }\n\n constructor(comment?: PersonCommentReadDto) {\n super();\n applyDecorators(this);\n if (comment) {\n this.text = comment.text;\n this.dateFrom = DateTimeService.toUiDate(comment.validFromDate);\n this.dateTo = comment.validToDate ? DateTimeService.toUiDate(comment.validToDate) : '';\n this.isStandby = comment.isStandby;\n this.isVisibleByCrewMember = comment.isVisibleByCrewMember;\n this.isVisibleToAllUsers = comment.isVisibleToAllUsers;\n this.commentId = comment.commentId;\n this.modifiedAtDateUtc = comment.modifiedAtDateUtc;\n this.modifiedBy = comment.modifiedBy;\n this.createdAtDateUtc = comment.createdAtDateUtc;\n this.createdBy = comment.createdBy;\n } else {\n const today = DateTimeService.today();\n this.dateFrom = DateTimeService.toUiDate(today);\n }\n }\n}","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport { PersonInfoModel, PersonModel } from '@app/Models/WebApiModels';\nimport { PersonInfo } from '@app/AppConstants/AppConstants';\n\nimport { Icon } from '@app/Components/Icon';\nimport { License } from '@app/Components/License';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport PersonCommentDialog from './Dialogs/PersonCommentDialog';\nimport { IPersonStore } from './VirtualizedRoster';\nimport { modalService } from './Modal';\nimport { ToolTipItem } from './ToolTipItem';\nimport Comments from '@app/Pages/Home/Components/Comments';\nimport HistorizationStore from '@app/Stores/HistorizationStore';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype PersonModelDto = Omit;\n\nexport type PersonListRenderExtraFiguresCallback = (person: PersonModelDto, personInfo: PersonInfoModel | null) => JSX.Element | null;\nexport type PersonListRenderExtraDataCallback = (person: PersonModelDto, personInfo: PersonInfoModel | null) => JSX.Element | null;\nexport type LicensesClickHandler = (person: PersonModelDto) => void;\n\ntype PersonsListItemProps = {\n personStore?: IPersonStore;\n person: PersonModelDto | null;\n personInfo?: PersonInfoModel | null;\n className?: string;\n referenceDate?: Date | null;\n historizationStore?: HistorizationStore;\n renderExtraFiguresCallback?: PersonListRenderExtraFiguresCallback;\n renderExtraDataCallback?: PersonListRenderExtraDataCallback;\n onLicensesClick?: LicensesClickHandler;\n};\n\n@observer\nexport class PersonsListItem extends React.Component {\n \n constructor (props:PersonsListItemProps) {\n super(props);\n applyDecorators(this);\n }\n \n public render () {\n const { className, personInfo, referenceDate, renderExtraFiguresCallback, renderExtraDataCallback, onLicensesClick } = this.props;\n let person = this.props.person;\n\n if (!person && personInfo) {\n person = new PersonModel({\n id: personInfo.id,\n code: personInfo.code,\n firstName: personInfo.firstName || '',\n lastName: personInfo.lastName || '',\n email: '',\n phoneNumber: '',\n isActive: true\n });\n }\n\n if (!person) {\n throw new Error('person property is required if personInfo is not defined');\n }\n\n let contract = '';\n let personFunction = '';\n let personPlanningGroup = '';\n let experienceDisplayName = '';\n let experienceCodeName = '';\n const tooltipTargetId = person.code + '_' + person.id.split('-')[0];\n const targetCommentId = tooltipTargetId + '_comment';\n\n const hasComments = personInfo && personInfo.hasComments; // todo: add value from model\n if (personInfo) {\n if (personInfo.function) {\n personFunction = personInfo.function.name;\n }\n personPlanningGroup = personInfo.function?.planningGroup || '';\n if (personInfo.personContract) {\n contract = personInfo.personContract.actualContractPartTimePercentage ? Math.round(personInfo.personContract.actualContractPartTimePercentage * 100 * 100) / 100 + '%' : personInfo.personContract.actualContractType;\n\n if (personInfo.personContract.actualContractType === 'Freelance') {\n experienceCodeName = 'freelancer';\n }\n if (personInfo.personContract.actualContractPartTimePercentage && personInfo.personContract.actualContractPartTimePercentage < 1) {\n experienceCodeName = 'part-time';\n }\n }\n if (personInfo.experience) {\n experienceDisplayName = personInfo.experience.displayName;\n experienceCodeName = personInfo.experience.codeName.toLowerCase();\n }\n }\n\n let medicalRestrictionClassNames = '';\n if (referenceDate) {\n if (personInfo && personInfo.hasMedicalRestriction) medicalRestrictionClassNames += 'warningRed ';\n if (personInfo && personInfo.birthDate) {\n const age = DateTimeService.calculateAge(personInfo.birthDate, referenceDate);\n if (age >= PersonInfo.Age) medicalRestrictionClassNames += 'warningOrange ';\n }\n }\n\n const personName = `${person.firstName} ${person.lastName}`;\n\n const licenseBlock = () => {\n return personInfo && personInfo.personLicenses && personInfo.function && ;\n };\n return (\n <>\n
\n
\n \n {person.code}\n {experienceDisplayName || personPlanningGroup || personFunction}\n \n \n \n {hasComments && } className=\"tooltip-comments\" targetId={targetCommentId} placement=\"right\" />}\n \n {contract}\n
\n
{onLicensesClick && person ? person && onLicensesClick(person)}>{licenseBlock()} : licenseBlock()}
\n
{personName}
\n {className && className.indexOf('selected') > 0 && }\n {renderExtraDataCallback && renderExtraDataCallback(person, personInfo || null)}\n
\n {renderExtraFiguresCallback && renderExtraFiguresCallback(person, personInfo || null)}\n \n );\n }\n\n private _onCommentClick = () => {\n const { personStore, personInfo, referenceDate, historizationStore } = this.props;\n if (!personStore || !personInfo || !referenceDate) return;\n\n void modalService.show(\n PersonCommentDialog,\n {\n personId: personInfo.id,\n date: referenceDate,\n personStore: personStore,\n historizationStore: historizationStore\n },\n {\n title: `Comments / ${personInfo.code} - ${personInfo.firstName} ${personInfo.lastName}`\n }\n );\n };\n}","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, computed, action } from 'mobx';\n\nimport ApiService from '@app/Services/ApiService';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { ContractTypeModel } from '@app/Models/WebApiModels';\n\nimport ReactSelect, { ReactSelectValue, ReactSelectSize } from '@app/Components/ReactSelect';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype ContractPickerProps = {\n clearable?: boolean;\n multi?: boolean;\n value?: string | null;\n onSelect?: (value: string | null) => void;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class ContractPicker extends React.Component {\n private _store: ContractPickerStore;\n\n constructor(props: ContractPickerProps) {\n super(props);\n applyDecorators(this);\n this._store = new ContractPickerStore();\n }\n\n componentDidMount(): void {\n void this._store.loadContractTypes();\n }\n\n render() {\n const { clearable, selectSize, multi, value } = this.props;\n const { options } = this._store;\n return ;\n }\n\n @action.bound\n private _onChangeHandler(value: ReactSelectValue) {\n this.props.onSelect && this.props.onSelect(value);\n }\n}\n\nclass ContractPickerStore {\n @observable contractTypes: ContractTypeModel[] = [];\n\n constructor() {\n applyDecorators(this);\n }\n\n @action\n public async loadContractTypes() {\n const contractTypes = await ApiService.getData(ApiUrls.ContractTypeUrl);\n this.contractTypes = contractTypes.data || [];\n }\n\n @computed\n public get options() {\n return this.contractTypes.map((type) => {\n return { value: `${type.value}`, label: type.name || '' };\n });\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, action } from 'mobx';\n\nimport { FunctionGroupModel } from '@app/Models/WebApiModels';\nimport ApiService from '@app/Services/ApiService';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { FunctionGroupIds } from '@app/AppConstants/PersonFunctions';\n\nimport ReactSelect, { ReactSelectValue, ReactSelectSize } from '@app/Components/ReactSelect';\nimport { AzureAuth, UserPermissions } from '../AzureAuth';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\nexport enum CrewFunctionPickerMode {\n All,\n Group,\n Cabin,\n Cockpit,\n Ground,\n CabinCockpit,\n FcmRoster,\n MarshalFseManage\n}\n\ntype CrewFunctionPickerProps = {\n clearable?: boolean;\n multi?: boolean;\n value?: string | null;\n placeholder?: string;\n onSelect?: (value: string | null) => void;\n viewMode?: CrewFunctionPickerMode;\n selectSize?: ReactSelectSize;\n};\n\ntype PersonFunctionDTO = {\n id: string;\n name: string;\n parentId?: string;\n};\n\n@observer\nexport default class CrewFunctionPicker extends React.Component {\n private _store: CrewFunctionPickerStore;\n\n constructor(props: CrewFunctionPickerProps) {\n super(props);\n applyDecorators(this);\n this._store = new CrewFunctionPickerStore();\n }\n\n componentDidMount(): void {\n void this._store.loadFunctions(this.props.viewMode);\n }\n\n render() {\n const { clearable, selectSize, multi, value, placeholder } = this.props;\n return ;\n }\n\n @action.bound\n private _onChangeHandler(value: ReactSelectValue) {\n this.props.onSelect && this.props.onSelect(value);\n }\n\n private get _options() {\n return this._availableFunctions.map((func) => {\n return { value: func.id, label: func.name };\n });\n }\n\n private get _availableFunctions() {\n const { viewMode } = this.props;\n const { functions } = this._store;\n switch (viewMode) {\n case CrewFunctionPickerMode.Group:\n return functions.filter((el) => !el.parentId && el.id !== FunctionGroupIds.Ground || el.parentId === FunctionGroupIds.Ground);\n case CrewFunctionPickerMode.Cabin:\n return functions.filter((x) => FunctionGroupIds.cabinIdWithGroupsIds.includes(x.id));\n case CrewFunctionPickerMode.Cockpit:\n return functions.filter((x) => FunctionGroupIds.cockpitWithGroupIds.includes(x.id));\n case CrewFunctionPickerMode.CabinCockpit:\n return functions.filter((x) => FunctionGroupIds.cabinIdWithGroupsIds.includes(x.id) || FunctionGroupIds.cockpitWithGroupIds.includes(x.id));\n case CrewFunctionPickerMode.Ground:\n return functions.filter((x) => FunctionGroupIds.groundWithGroupsIds.includes(x.id));\n case CrewFunctionPickerMode.MarshalFseManage:\n return functions.filter((x) => FunctionGroupIds.marshalsWithGroupsIds.includes(x.id) || FunctionGroupIds.fseWithGroupsIds.includes(x.id));\n default:\n return functions;\n }\n }\n}\n\nclass CrewFunctionPickerStore {\n @observable functions: PersonFunctionDTO[] = [];\n\n constructor() {\n applyDecorators(this);\n }\n\n @action\n public async loadFunctions(mode?: CrewFunctionPickerMode) {\n const functionsGroups = await ApiService.getTypedData(ApiUrls.FunctionGroupUrl);\n const funcList: PersonFunctionDTO[] = [];\n functionsGroups.data.forEach((group) => {\n funcList.push({\n id: group.id,\n name: `-${group.name} group-`\n });\n if (group.functions.length > 1) {\n group.functions.map((f) => {\n funcList.push({\n id: f.id,\n name: f.name,\n parentId: group.id\n });\n });\n }\n });\n\n if (mode === CrewFunctionPickerMode.FcmRoster) {\n funcList.splice(6, 0, {\n id: FunctionGroupIds.Fcm,\n name: `-All (Cabin & Cockpit)-`\n });\n }\n\n this.functions = this.__hasAccessToReadFunction(funcList, mode);\n }\n\n private __hasAccessToReadFunction(functions: PersonFunctionDTO[], mode?: CrewFunctionPickerMode) {\n let funcList: PersonFunctionDTO[] = [...functions];\n\n if (mode === CrewFunctionPickerMode.MarshalFseManage){\n const hasAccessToFse = AzureAuth.hasAccess(UserPermissions.FseInfoRead);\n if (!hasAccessToFse) {\n funcList = funcList.filter((x) => x.id !== FunctionGroupIds.Fse);\n }\n const hasAccessToMarshals = AzureAuth.hasAccess(UserPermissions.MarshalsInfoRead);\n if (!hasAccessToMarshals) {\n funcList = funcList.filter((x) => x.id !== FunctionGroupIds.Marshals && x.parentId !== FunctionGroupIds.Marshals);\n }\n return funcList;\n }\n\n const hasAccessToCabin = AzureAuth.hasAccess(UserPermissions.RosterCabinRead);\n if (!hasAccessToCabin) {\n funcList = funcList.filter((x) => x.id !== FunctionGroupIds.Cabin && x.id !== FunctionGroupIds.Fcm && x.parentId !== FunctionGroupIds.Cabin);\n }\n const hasAccessToCockpit = AzureAuth.hasAccess(UserPermissions.RosterCockpitRead);\n if (!hasAccessToCockpit) {\n funcList = funcList.filter((x) => x.id !== FunctionGroupIds.Cockpit && x.id !== FunctionGroupIds.Fcm && x.parentId !== FunctionGroupIds.Cockpit);\n }\n const hasAccessToGround = AzureAuth.hasAccess(UserPermissions.RosterGroundRead);\n if (!hasAccessToGround) {\n funcList = funcList.filter((x) => x.id !== FunctionGroupIds.Ground && x.parentId !== FunctionGroupIds.Ground);\n }\n const hasAccessToFse = AzureAuth.hasAccess(UserPermissions.RosterFseRead);\n if (!hasAccessToFse) {\n funcList = funcList.filter((x) => x.id !== FunctionGroupIds.Fse);\n }\n const hasAccessToMarshals = AzureAuth.hasAccess(UserPermissions.RosterMarshalRead);\n if (!hasAccessToMarshals) {\n funcList = funcList.filter((x) => x.id !== FunctionGroupIds.Marshals && x.parentId !== FunctionGroupIds.Marshals);\n }\n\n return funcList;\n }\n}\n","import * as React from 'react';\nimport { observable, computed, action } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { FunctionGroupIds } from '@app/AppConstants/PersonFunctions';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { EnumModel, InstructorFilterModel } from '@app/Models/WebApiModels';\n\nimport ApiService from '@app/Services/ApiService';\n\nimport ReactSelect, { ReactSelectValue, ReactSelectSize, ReactSelectOption } from '@app/Components/ReactSelect';\nimport { shallowEqual } from 'shallow-equal-object';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype InstructorPickerProps = {\n clearable?: boolean;\n multi?: boolean;\n value?: string | null;\n selectedCrewFunction?: string | null;\n onSelect?: (value: string | null) => void;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class InstructorPicker extends React.Component {\n private _store: InstructorPickerStore;\n\n constructor(props: InstructorPickerProps) {\n super(props);\n applyDecorators(this);\n this._store = new InstructorPickerStore();\n }\n\n componentDidMount(): void {\n void this._store.loadData(this.props.selectedCrewFunction);\n }\n\n componentDidUpdate(prevProps: InstructorPickerProps): void {\n if (!shallowEqual(prevProps, this.props)) {\n this._store.loadData(this.props.selectedCrewFunction);\n }\n }\n\n render() {\n const { clearable, selectSize, multi, value } = this.props;\n return ;\n }\n\n @action.bound\n private _onChangeHandler(value: ReactSelectValue) {\n this.props.onSelect && this.props.onSelect(value ? value : null);\n }\n\n @computed\n private get _options () {\n const options = this._store.options;\n if (this.props.value) {\n this.props.value.split(',').forEach(v => {\n if (!options.find(e => e.value === v)) {\n options.push({ value: v, label: v.toUpperCase(), isDisabled: true });\n }\n });\n }\n return options;\n }\n}\n\nclass InstructorPickerStore {\n @observable instructorFilters: InstructorFilterModel[] = [];\n private _currentFunctionGroup: string | null = null;\n\n constructor() {\n applyDecorators(this);\n }\n\n @action\n loadData(selectedCrewFunction?: string | null) {\n if (this._currentFunctionGroup !== selectedCrewFunction) {\n this._currentFunctionGroup = selectedCrewFunction || null;\n void this.loadInstructorFilter();\n }\n }\n\n @action.bound\n public async loadInstructorFilter() {\n const isForCabin = !this._currentFunctionGroup || this._currentFunctionGroup === FunctionGroupIds.Cabin || this._currentFunctionGroup === FunctionGroupIds.Fcm;\n const isForCockpit = !this._currentFunctionGroup || this._currentFunctionGroup === FunctionGroupIds.Cockpit || this._currentFunctionGroup === FunctionGroupIds.Fcm;\n const instructorFilters = await ApiService.getTypedData(ApiUrls.InstructorFiltersUrl, { isForCabin, isForCockpit });\n this.instructorFilters = instructorFilters.data || [];\n }\n\n @computed\n public get options (): ReactSelectOption[] {\n return this.instructorFilters.map((type) => {\n return { value: type.code, label: type.name};\n });\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, action } from 'mobx';\nimport Select, { ActionMeta, components, InputActionMeta, MultiValue, OptionProps, SingleValue, StylesConfig } from 'react-select';\nimport { ReactNode } from \"react\";\nimport { FormatOptionLabelMeta } from \"react-select/dist/declarations/src/Select\";\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\nexport type ReactSelectOption = { value: string; label: string; hint?: string, isDisabled?: boolean, isHidden?: boolean, className?: string };\nexport type ReactSelectValue = string | null;\nexport type ReactSelectOptions = ReactSelectOption[] | null;\nexport type ReactSelectCallback = (value: ReactSelectValue, options: ReactSelectOptions) => void;\n\nexport enum ReactSelectSize {\n Regular,\n Small\n}\n\ntype ReactSelectProps = {\n placeholder?: string;\n value?: ReactSelectValue;\n multi?: boolean;\n isClearable?: boolean;\n closeOnSelect?: boolean;\n isSearchable?: boolean;\n isCreatable?: boolean;\n backspaceRemovesValue?: boolean;\n hideSelectedOptions?: boolean;\n tabSelectsValue?: boolean;\n selectMaxSpace?: boolean;\n options: T[];\n onSelect?: ReactSelectCallback;\n selectSize?: ReactSelectSize;\n styles?: StylesConfig;\n isDisabled?: boolean;\n isLoading?: boolean;\n isOptionDisabled?: (option: T) => boolean;\n className?: string;\n inputValue?: string;\n onMenuOpen?: () => void;\n onInputChange?: (value: string) => void;\n formatOptionLabel?: (data: T, formatOptionLabelMeta: FormatOptionLabelMeta) => ReactNode;\n};\n\n@observer\nexport default class ReactSelect extends React.Component, {}> {\n private _store: ReactSelectStore;\n\n constructor(props: ReactSelectProps) {\n super(props);\n applyDecorators(this);\n this._store = new ReactSelectStore(this.props.value);\n }\n\n componentDidUpdate(prevProps: ReactSelectProps) {\n if (prevProps.value !== this.props.value) {\n this._store.updateValue(this.props.value);\n }\n\n if (prevProps.inputValue !== this.props.inputValue) {\n this._store.updateInputValue(this.props.inputValue);\n }\n }\n\n render() {\n const { multi, isClearable, \n closeOnSelect, placeholder, \n selectSize, isSearchable, \n backspaceRemovesValue, hideSelectedOptions, \n styles, isDisabled,\n className, isOptionDisabled, \n isCreatable,\n isLoading, formatOptionLabel,\n tabSelectsValue, selectMaxSpace} = this.props;\n const classList = ['select-filter-container', 'select-filter-single'];\n if (className) classList.push(className);\n if (selectSize === ReactSelectSize.Regular) classList.push('select-regular');\n if (selectMaxSpace) classList.push('select-filter-full');\n\n const Option = (props: OptionProps) => {\n return (\n \n );\n };\n\n return (\n \n );\n }\n\n @action.bound\n private _inputChangeHandler(value: string, action: InputActionMeta) {\n const { isCreatable, onInputChange, onSelect } = this.props;\n const { updateValue } = this._store;\n\n this._store.updateInputValue(value);\n\n if (isCreatable) {\n if (action?.action === 'input-blur' || action?.action === 'menu-close') return;\n \n onSelect?.(value, this._selectedOption);\n updateValue(value);\n }\n\n onInputChange?.(value);\n }\n\n @action.bound\n private _selectHandler(selected: SingleValue | MultiValue, { action }: ActionMeta) {\n const { onSelect, multi } = this.props;\n const { updateValue } = this._store;\n let newValue: null | string = null;\n if (selected) {\n newValue = Array.isArray(selected) ? selected.map((el) => el.value).join(',') : (selected as T).value;\n }\n updateValue(newValue);\n const isClearAction = action === 'clear' || action === 'remove-value';\n if (!multi || isClearAction) {\n onSelect && onSelect(newValue, this._selectedOption);\n }\n }\n\n @action.bound\n private _closeHandler() {\n const { multi, onSelect } = this.props;\n const { currentValue, defaultValue, updateDefaultValue } = this._store;\n if (!multi) return;\n if (currentValue && currentValue !== defaultValue) {\n onSelect && onSelect(currentValue, this._selectedOption);\n } else if (!currentValue && defaultValue) {\n onSelect && onSelect(null, null);\n }\n updateDefaultValue(null);\n }\n\n @action.bound\n private _openHandler() {\n const { multi, value, isCreatable, onMenuOpen } = this.props;\n const { currentValue, updateInputValue, updateDefaultValue } = this._store;\n\n if (isCreatable && currentValue) {\n updateInputValue(currentValue);\n }\n\n if (multi) {\n updateDefaultValue(value);\n }\n onMenuOpen && onMenuOpen();\n }\n\n private get _options() {\n const options = [...this.props.options];\n\n if (this.props.isCreatable) {\n const { currentValue } = this._store;\n currentValue && options.push({ value: currentValue, label: currentValue } as T);\n }\n\n return options;\n }\n\n private get _selectedOption() {\n const { currentValue } = this._store;\n const values = (currentValue && currentValue.split(',')) || [];\n const options = this._options.filter((el) => values.includes(el.value));\n return options.length ? options : null;\n }\n\n public static GenerateOptionsFrom(obj: T[], valKey?: keyof T, labKey?: keyof T): ReactSelectOption[] {\n if (obj.length && typeof obj[0] === \"string\") {\n return obj.map(e => {\n const value = e as unknown as string;\n return { value, label: value };\n }\n );\n } else {\n if (!valKey || !labKey) return [];\n return obj.map(e => {\n const value = e[valKey] as unknown as string;\n const label = e[labKey] as unknown as string;\n return { value, label };\n });\n }\n }\n}\n\nclass ReactSelectStore {\n @observable currentValue: ReactSelectValue = null;\n @observable defaultValue: ReactSelectValue = null;\n @observable inputValue: string = '';\n\n constructor(value?: ReactSelectValue) {\n applyDecorators(this);\n this.updateValue(value);\n }\n\n @action.bound\n updateValue(value?: ReactSelectValue) {\n if (this.currentValue !== value) {\n this.currentValue = value || null;\n }\n }\n\n @action.bound\n updateDefaultValue(value?: ReactSelectValue) {\n this.defaultValue = value || null;\n }\n\n @action.bound\n updateInputValue(value?: string) {\n this.inputValue = value ?? '';\n }\n}\n","/* eslint-disable max-lines */\nimport * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable } from 'mobx';\nimport { Icon } from '@app/Components/Icon';\n\nimport { PersonRequestSummaryStatus, PersonRequestType } from '@app/AppConstants/PersonVacation';\nimport { DateTime } from '@app/AppConstants/DateTime';\nimport { Range, RangeReadyStatus } from './VirtualizedRoster/Stores/Range';\nimport { DayDuty, IDayDuty, DutyItemCache, targetConstructor } from '@app/Models';\nimport { CapacityLevel, DutyItem, FdpAmendmentType, RosterType } from '@app/Models/WebApiModels';\n\nimport { appStore } from '@app/AppStore';\n\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { navigationStore } from '@app/Stores/NavigationStore';\nimport { DragEffect, RosterElement } from '@app/Components/VirtualizedRoster';\nimport { IBaseDutyStore } from '@app/Components/VirtualizedRoster/Stores/DutyStore';\nimport { AzureAuth } from './AzureAuth';\nimport { ActivityCode } from '@app/AppConstants/ActivityCode';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\nexport type DoubleClickCallback = (date: Date, personId: string, dutyItem: IDayDuty, duty: DutyItem | null) => boolean;\n//TODO: simplity arguments\nexport type DutyLineRenderDetailsCallback = (date: Date, personId: string, dutyItem: IDayDuty | null, duty: DutyItem | null, focusedElement?: RosterElement | null) => JSX.Element | null;\nexport type DutyLineRenderExtrasCallback = (date: Date, personId: string, dutyItem: IDayDuty | null, duty: DutyItem | null, focusedElement?: RosterElement | null) => JSX.Element | null;\n\ntype RosterLineProps = {\n personId: string;\n dutyDays: Array;\n index: number;\n dutyStore?: IBaseDutyStore;\n focusedElement?: RosterElement | null;\n personDutyMap?: Map | null;\n isBeforeActivePerson?: boolean | null;\n rosterType?: string;\n markedDays?: Array;\n marker?: string;\n customSelectedDays?: Array;\n customSelectedClass?: string;\n allowedDateRange?: Array> | Range | null;\n showCapacityNumbers?: boolean;\n copiedDuties?: DutyItem[];\n selectedDuties?: RosterElement[];\n onDoubleClick?: DoubleClickCallback;\n onRenderCellDetails?: DutyLineRenderDetailsCallback;\n onRenderCellExtras?: DutyLineRenderExtrasCallback;\n isHistorizedRosterline?: boolean;\n historizeLastDate?: Date | null;\n showSwissTime?: boolean;\n onStartDragDuty?: (sourceElement: Element | null, isAllowCopying?: boolean) => boolean;\n onDragOverDuty?: (targetElement: Element, isCopy: boolean) => DragEffect;\n onDragEndDuty?: () => void;\n onDropDuty?: (targetElement: Element, isCopy: boolean) => void;\n showDutyAsFight?: boolean;\n};\n\ntype DutyRenderOptions = {\n beforeSelectedDutyDate: Date | null;\n dutyStore?: IBaseDutyStore;\n highlightDate: Date;\n};\n\n@observer\nclass RosterLine extends React.Component {\n @observable private _isDragStart: boolean = false;\n private static readonly newGavFtlSystemApplicableFrom = DateTimeService.date(2024, 5, 1); // Starting from 1 June 2024\n\n constructor(props: RosterLineProps) {\n super(props);\n applyDecorators(this);\n }\n\n\n private _getCssClasses(dutyItem: IDayDuty, dayDuty: DutyItem | null, isNotReleased: boolean, renderOptions: DutyRenderOptions): string[] {\n const { personId, markedDays, marker, customSelectedDays, customSelectedClass, rosterType, selectedDuties, focusedElement, copiedDuties, isHistorizedRosterline } = this.props;\n\n const dutyStore = renderOptions.dutyStore;\n const highlightDate = renderOptions.highlightDate;\n const beforeSelectedDutyDate = renderOptions.beforeSelectedDutyDate;\n\n const dutyDay = dutyItem.dutyDay;\n const itemClass: string[] = [];\n const hasMarkers = markedDays && markedDays.length;\n const isFullRosterType: boolean = rosterType === RosterType.Full && !hasMarkers;\n const isCopied = isFullRosterType && copiedDuties?.find(copiedDuty => copiedDuty.personId === personId && DateTimeService.isSameDate(copiedDuty.date, dutyDay));\n\n const focusedDate = focusedElement && new Date(focusedElement.dateUtc);\n const focusedPersonId = focusedElement && focusedElement.personId;\n if (focusedElement && focusedDate && dutyDay) {\n if (DateTimeService.isSameDate(focusedDate, dutyDay)) itemClass.push('active');\n if (beforeSelectedDutyDate && DateTimeService.isSameDate(beforeSelectedDutyDate, dutyDay)) itemClass.push('beforeActive');\n }\n if (selectedDuties?.length) {\n const selected = selectedDuties.findIndex((item) => {\n return item.personId === personId && item.dateUtc === dutyDay.getTime();\n });\n if (selected > -1) itemClass.push('selected');\n } else if (isFullRosterType && focusedDate) {\n if (DateTimeService.isSameDate(focusedDate, dutyDay) && focusedPersonId === personId) itemClass.push('selected');\n } else if (hasMarkers) {\n if (markedDays?.find((x) => x.getTime() === dutyDay.getTime())) {\n itemClass.push('marked');\n dutyItem.flightTitle = marker ? marker : dutyItem.flightTitle;\n }\n }\n if (isCopied && !this._isDragStart) {\n itemClass.push('buffered');\n }\n if (isFullRosterType && dayDuty && !dayDuty.isValid) itemClass.push('invalid');\n if (dayDuty?.isPlanningPeriodHidden) {\n itemClass.push('pp-hidden');\n }\n\n let isNotReady = false;\n if (dutyStore) {\n const dutyStatus = dutyStore.getDutyStatus(personId, dutyDay);\n if (dutyStatus === RangeReadyStatus.Loading || dutyStatus === RangeReadyStatus.None) {\n itemClass.push('loading');\n isNotReady = true;\n }\n if (dutyStatus === RangeReadyStatus.Error) {\n itemClass.push('loading-error');\n isNotReady = true;\n }\n }\n\n const hasCustomHighlighting = customSelectedDays && customSelectedDays.length > 0;\n if (hasCustomHighlighting && customSelectedDays) {\n const isDayToHighlite = customSelectedDays.find((x) => DateTimeService.isSameDate(x, dutyDay));\n if (customSelectedClass && isDayToHighlite) {\n itemClass.push(customSelectedClass);\n }\n if (!customSelectedClass && !isNotReady) {\n if (!isDayToHighlite) {\n itemClass.push('past');\n }\n }\n }\n\n if (!(hasCustomHighlighting && !customSelectedClass) && !isNotReady) {\n if (highlightDate.getTime() > dutyDay.getTime()) itemClass.push('past');\n }\n\n if (this._isDateAllowed(dutyDay)) {\n itemClass.push('date-allowed');\n }\n\n itemClass.push('activityCode_' + dutyItem.codeName);\n\n const hasNoDuties = !dutyItem?.hasDuties;\n if (dayDuty) {\n if (hasNoDuties && !dayDuty.shadowDutyType && dayDuty.planningNote && dayDuty.planningNote.length > 20) {\n itemClass.push('duty-note');\n }\n\n if (hasNoDuties && dayDuty.shadowDutyType) {\n if (dayDuty.shadowDutyType === 'Off') {\n if (!dayDuty.isShadowOffOptional || rosterType === RosterType.Full || rosterType === RosterType.Person) {\n itemClass.push('duty-shadow-type-off');\n }\n }\n if (dayDuty.shadowDutyType === 'Lay') {\n itemClass.push('duty-shadow-type-lay');\n }\n }\n\n if (!dayDuty.shadowDutyType && dayDuty.shadowOffType && !dayDuty.isFtl && !dayDuty.isGav) {\n itemClass.push('duty-shadow-off-type');\n }\n\n if (this._isShowCapacity(dutyItem, dayDuty)) {\n const capacityClass = this._getCapacityLevelClass(dayDuty, rosterType);\n if (capacityClass) {\n itemClass.push(capacityClass);\n }\n }\n\n if (dayDuty.isRsvHidden) {\n itemClass.push('rsv-hidden');\n }\n\n if (dayDuty.isCrewHidden) {\n itemClass.push('crew-hidden');\n }\n }\n\n itemClass.unshift(dutyItem.dutyClass);\n if (isNotReleased) {\n itemClass.length = 0;\n itemClass.push('not-released');\n }\n\n if (isHistorizedRosterline) {\n itemClass.push('selection-disabled', 'historized-rosterline');\n }\n\n return itemClass;\n }\n\n private _dutyDoubleClickHandler = (e: React.MouseEvent) => {\n const { personId, dutyStore } = this.props;\n const personDutyMap = this.props.personDutyMap || (dutyStore && dutyStore.dutyList.get(personId));\n\n const target = e.currentTarget;\n if (!target) return;\n\n const personDate = target.getAttribute('data-date');\n if (!personDate) return;\n const dutyDay = DateTimeService.parse(personDate, DateTime.jsonDateFormat);\n const dutyItemCache = (personDutyMap && personDutyMap.get(dutyDay.getTime())) || null;\n const dayDuty = dutyItemCache && dutyItemCache.dayDuty ? dutyItemCache.dayDuty : new DayDuty(dutyDay, dutyItemCache);\n\n let isDefaultAction = true;\n const hasAccessToCrewPage = AzureAuth.hasRosterAccess() || !!(window as { hasAccessToCrewPage?: boolean }).hasAccessToCrewPage;\n\n if (this.props.onDoubleClick) {\n isDefaultAction = this.props.onDoubleClick(dutyDay, personId, dayDuty, dutyItemCache);\n }\n if (isDefaultAction && hasAccessToCrewPage) {\n const baseUrl = appStore.isCrewPortalDns ? window.location.origin.replace('crewportal', 'crewpage') : '';\n navigationStore.redirect(`${baseUrl}/?personId=${personId}&date=${DateTimeService.toQueryParam(dutyDay)}`);\n }\n };\n\n public render() {\n const {\n personId,\n dutyDays,\n index,\n rosterType,\n markedDays,\n focusedElement,\n dutyStore,\n onRenderCellExtras,\n isHistorizedRosterline,\n historizeLastDate,\n showDutyAsFight,\n showSwissTime,\n showCapacityNumbers,\n } = this.props;\n const personDutyMap = this.props.personDutyMap || (dutyStore && dutyStore.dutyList.get(personId));\n const dutyItems: JSX.Element[] = [];\n const isFullRosterType: boolean = rosterType === RosterType.Full && !(markedDays && markedDays.length);\n const isRequestToolRosterType: boolean = rosterType === RosterType.RequestToolOff || rosterType === RosterType.RequestToolFlight || rosterType === RosterType.RequestToolVacCabin || rosterType === RosterType.RequestToolVacCockpit || rosterType === RosterType.RequestToolGeneral;\n const beforeSelectedDutyDate = focusedElement ? DateTimeService.addDays(new Date(focusedElement.dateUtc), -1) : null;\n\n let highlightDate: Date = new Date();\n let releasedLastDate: Date | null = null;\n const shouldGetHistorizedDates = isHistorizedRosterline ? !appStore.isHistorized : appStore.isHistorized;\n if (shouldGetHistorizedDates) {\n if (historizeLastDate) {\n releasedLastDate = historizeLastDate;\n highlightDate = DateTimeService.addDays(releasedLastDate, 1);\n }\n if (appStore.releasedDate && !isHistorizedRosterline) {\n highlightDate = appStore.releasedDate;\n\n releasedLastDate = DateTimeService.addDays(DateTimeService.addMonths(highlightDate, 1), -1);\n if (releasedLastDate.getUTCFullYear() >= 2022 && releasedLastDate.getUTCMonth() + 1 === 12) {\n releasedLastDate = DateTimeService.addDays(releasedLastDate, 1);\n }\n }\n }\n highlightDate.setUTCHours(0, 0, 0, 0);\n\n const renderOptions: DutyRenderOptions = {\n beforeSelectedDutyDate: beforeSelectedDutyDate,\n dutyStore: dutyStore,\n highlightDate: highlightDate,\n };\n\n dutyDays.forEach((dutyDay: Date) => {\n let dutyItemCache = (personDutyMap && personDutyMap.get(dutyDay.getTime())) || null;\n const isNotReleased = isFullRosterType && this._isNotReleased(dutyDay, dutyItemCache, releasedLastDate);\n if (isNotReleased) {\n dutyItemCache = null;\n }\n\n const dayDuty = dutyItemCache && dutyItemCache.dayDuty ? dutyItemCache.dayDuty : new DayDuty(dutyDay, dutyItemCache);\n if (dutyItemCache && !dutyItemCache.dayDuty) {\n dutyItemCache.dayDuty = dayDuty;\n }\n\n const itemClass = this._getCssClasses(dayDuty, dutyItemCache, !!isNotReleased, renderOptions);\n const isCopied: boolean = itemClass.indexOf('buffered') !== -1 && !this._isDragStart;\n const haveCapacityInfo = dutyItemCache && typeof dutyItemCache.haveCapacity === 'boolean';\n const capacityTotal = dutyItemCache?.capacityTotal || 0;\n const capacityUsed = dutyItemCache?.capacityUsed || 0;\n const capacityRequested = dutyItemCache?.capacityRequested || 0;\n const capacityAvailable = Math.max(0, capacityTotal - capacityUsed);\n const isImportant = dutyItemCache?.isImportant;\n const haveLockSign = dutyItemCache?.isShadowOffOptional === false;\n const hasOffActivity = dutyItemCache?.activities.find(a => a.activityCodeName === ActivityCode.OFF);\n const havePersistedLockSign = haveLockSign && (dutyItemCache?.shadowDutyType === 'None' || hasOffActivity);\n const convertedDateToJson = DateTimeService.toJsonFormat(dutyDay);\n\n const today = DateTimeService.today();\n const nowDate = DateTimeService.now();\n const now = showSwissTime ? DateTimeService.getSwissDate(nowDate) : nowDate;\n let currentLine: JSX.Element | null = null;\n if (showDutyAsFight && DateTimeService.isSameDate(today, dutyDay)) {\n currentLine = ;\n }\n let capacityNumberElement: JSX.Element | null = null;\n if (showCapacityNumbers && dutyItemCache && this._isShowCapacity(dayDuty, dutyItemCache) && this._isDateAllowed(dutyDay)) {\n capacityNumberElement = {capacityAvailable}/{capacityRequested};\n }\n\n if (haveCapacityInfo && rosterType === RosterType.RequestToolVacGround && !dayDuty.hasDuties) {\n capacityNumberElement = {capacityTotal - capacityUsed};\n }\n\n const id = personId + dutyDay.getTime();\n const extras = onRenderCellExtras?.(dutyDay, personId, dayDuty, dutyItemCache, focusedElement || null);\n if (extras) {\n itemClass.push('no-static');\n }\n dutyItems.push(\n
\n
\n {!isNotReleased ? this.renderCellInfo(dayDuty, dutyItemCache, dutyDay, personId) : null}\n {haveCapacityInfo ? : null}\n {!isRequestToolRosterType && haveLockSign ? : null}\n {capacityNumberElement}\n {currentLine}\n
\n {isCopied && }\n {extras}\n
,\n );\n });\n const classList: string[] = this._gridLineClass();\n if (focusedElement && focusedElement.personId === personId) {\n classList.push('active');\n }\n return (\n
\n {dutyItems}\n
\n );\n }\n\n renderCellInfo(dutyItem: IDayDuty | null, duty: DutyItem | null, date: Date, personId: string) {\n let ftlGav: string | null = null;\n let isFtlGavPersist: boolean = false;\n let isUserActionGavFtl: boolean = false;\n let wish: string | null = null;\n let priority: string | null = null;\n let important: string | null = null;\n let flex: string | null = null;\n let isChecker: boolean = false;\n let isTrainee: boolean = false;\n let isParty: boolean = false;\n let flightDateFrom: Date | null = null;\n let dateFrom: string | null = null;\n let flightDateTo: Date | null = null;\n let dateTo: string | null = null;\n let dateFromDiff: boolean | null = null;\n let dateToDiff: boolean | null = null;\n let hasPosition: boolean = false;\n let positionHasAbnd: boolean = false;\n let hasHomeStudy: boolean = false;\n let hasDutyPart: boolean = false;\n let hasLanding: boolean = false;\n let hasTakeoff: boolean = false;\n let hasFdpSplit: boolean = false;\n let hasFdpCombine: boolean = false;\n let hasDutySplit: boolean = false;\n let specialType: string = '';\n let overlayType: string = '';\n let requestType: JSX.Element | null = null;\n let flightViewDuties: JSX.Element | null = null;\n let isLongTermEvening: boolean = false;\n let isAfterLongTermEvening: boolean = false;\n let hasXStarFlight: boolean = false;\n let hasIntroFlight: boolean = false;\n let hasObserverFlight: boolean = false;\n let hasAllIntroFlights: boolean = false;\n let hasAllObserverFlights: boolean = false;\n const { showSwissTime, showDutyAsFight, rosterType } = this.props;\n const getDutyPoint = (diff: number) => `${((diff / (24 * 60)) * 100).toFixed(3)}%`;\n const isRequestToolRosterType: boolean = rosterType === RosterType.RequestToolOff || rosterType === RosterType.RequestToolFlight || rosterType === RosterType.RequestToolVacCabin || rosterType === RosterType.RequestToolVacCockpit || rosterType === RosterType.RequestToolGeneral;\n\n if (duty) {\n if (duty.isFtl || duty.isGav) {\n ftlGav = duty.isFtl ? 'F' : 'G';\n isFtlGavPersist = true;\n if (DateTimeService.isAfterDateOrEqual(date, RosterLine.newGavFtlSystemApplicableFrom)) {\n isUserActionGavFtl = true;\n }\n } else {\n if (duty.shadowOffType === 'Ftl') ftlGav = 'F';\n if (duty.shadowOffType === 'Gav') ftlGav = 'G';\n\n // Freelancers + Others with persisted duty\n if (ftlGav && duty.shadowDutyType === 'None') {\n isFtlGavPersist = true;\n }\n }\n if (duty.isPlanningPeriodHidden) {\n ftlGav = 'PP';\n }\n wish = duty.isWish ? 'W' : null;\n priority = duty.isPriority ? 'P' : null;\n important = duty.isImportant ? '!' : null;\n flex = duty.isFlex ? '-flex' : null;\n isChecker = duty.isChecker;\n isTrainee = duty.isTrainee;\n isParty = duty.isParty;\n hasLanding = duty.hasCustomLanding;\n hasTakeoff = duty.hasCustomTakeoff;\n if (duty.fdpAmendmentType === FdpAmendmentType.PreferFdpSplit) {\n hasFdpSplit = true;\n }\n if (duty.fdpAmendmentType === FdpAmendmentType.PreferFdpCombine) {\n hasFdpCombine = true;\n }\n if (duty.fdpAmendmentType === FdpAmendmentType.SplitDuty) {\n hasDutySplit = true;\n }\n specialType = duty.dooType && duty.dooType !== 'None' ? (duty.dooType === 'DOOO' ? 'O' : duty.dooType === 'DOOT' ? 'T' : duty.dooType === 'DOOV' ? 'V' : \"F\") : '';\n\n if (!duty.isAfterNightDuty && !duty.isBeforeNightDuty && duty.requestedItemStatus === PersonRequestSummaryStatus.InProgress && dutyItem && !dutyItem.hasDuties) {\n if (duty.requestedItemType === PersonRequestType.Flight) {\n if (duty.requestedActivity) {\n if (duty.requestedActivity.toUpperCase() === 'POS') {\n hasPosition = true;\n }\n }\n if (duty.checkinDateTimeUtc) {\n dateFrom = DateTimeService.toUiTime(this._getDate(duty.checkinDateTimeUtc), showSwissTime);\n dateFromDiff = !DateTimeService.isSameDate(duty.checkinDateTimeUtc, dutyItem.dutyDay);\n }\n\n if (duty.checkoutDateTimeUtc) {\n dateTo = DateTimeService.toUiTime(this._getDate(duty.checkoutDateTimeUtc), showSwissTime);\n dateToDiff = !DateTimeService.isSameDate(duty.checkoutDateTimeUtc, dutyItem.dutyDay);\n }\n requestType = ;\n }\n\n }\n\n if (duty.requestId) {\n specialType += 'R';\n }\n\n if (duty.flagDutyList && duty.flagDutyList.length > 0) {\n isLongTermEvening = duty.flagDutyList.findIndex(x => x.activityCodeName === ActivityCode.LTE) !== -1;\n overlayType += duty.flagDutyList.map(x => x.activityCodeName !== ActivityCode.LTE && x.activityCodeName.substring(0, 1) || '').join('');\n }\n isAfterLongTermEvening = duty.isAfterLongTermEvening;\n hasXStarFlight = !isRequestToolRosterType && duty.hasXStarFlight;\n hasIntroFlight = !isRequestToolRosterType && duty.activities?.some((a) => a.isIntroFlight);\n hasObserverFlight = !isRequestToolRosterType && duty.activities?.some((a) => a.isObserverFlight);\n hasAllIntroFlights = !isRequestToolRosterType && duty.activities?.filter((a) => !!a.flightId).every((a) => a.isIntroFlight);\n hasAllObserverFlights = !isRequestToolRosterType && duty.activities?.filter((a) => !!a.flightId).every((a) => a.isObserverFlight);\n }\n\n const dutyClass = ['flight-wrap'];\n\n const hasAbnd = duty && (duty.isAfterNightDuty || duty.isBeforeNightDuty);\n\n if (dutyItem) {\n if (dutyItem.flightDateFrom) {\n flightDateFrom = this._getDate(dutyItem.flightDateFrom);\n dateFrom = DateTimeService.toUiTime(flightDateFrom, showSwissTime);\n dateFromDiff = !DateTimeService.isSameDate(flightDateFrom, dutyItem.dutyDay);\n }\n\n if (dutyItem.flightDateTo) {\n flightDateTo = this._getDate(dutyItem.flightDateTo);\n dateTo = DateTimeService.toUiTime(flightDateTo, showSwissTime);\n dateToDiff = !DateTimeService.isSameDate(flightDateTo, dutyItem.dutyDay);\n }\n\n hasPosition = dutyItem.hasPosition || hasPosition;\n hasHomeStudy = dutyItem.hasHomeStudy;\n hasDutyPart = dutyItem.hasDutyPart;\n\n if (!dutyItem.hasDuties && !hasAbnd && !dateFrom && !dateTo && !isLongTermEvening && !isAfterLongTermEvening) dutyClass.push('breakWord');\n if (hasPosition && hasAbnd) {\n positionHasAbnd = true;\n }\n }\n\n if (showDutyAsFight) {\n if (duty?.activities.length) {\n const flightActivities = duty.activities.filter(e => e.dateStartUtc && e.dateEndUtc);\n flightViewDuties = (\n <>\n {flightActivities.map(d => {\n let title = d.activityCodeName;\n let dateStartUtc = d.dateStartUtc;\n let dateEndUtc = d.dateEndUtc;\n const isDutyPart = d.activityCodeName === ActivityCode.DUTY_PART;\n if (isDutyPart) {\n const mainActivity = flightActivities.find(a => ActivityCode.groundActivities.includes(a.activityCodeName));\n title = mainActivity?.activityCodeName || d.activityCodeName;\n }\n if (d.estimatedStartUtc && d.estimatedEndUtc) {\n dateStartUtc = d.estimatedStartUtc;\n dateEndUtc = d.estimatedEndUtc;\n }\n if (d.activityCodeName.startsWith('FSB') && duty.checkinDateTimeUtc) {\n dateEndUtc = duty.checkinDateTimeUtc;\n }\n if (dateStartUtc && dateEndUtc) {\n const flightInfo = d.flightId ? targetConstructor.getFlightInformationFromFlightId(d.flightId) : null;\n const from = this._getDate(dateStartUtc);\n const to = this._getDate(dateEndUtc);\n if (!DateTimeService.isValidDate(from) || !DateTimeService.isValidDate(to)) {\n return null;\n }\n\n const startDiff = DateTimeService.diffMinutes(from, DateTimeService.startOfDate(duty?.date));\n const toDiff = DateTimeService.diffMinutes(to, from);\n return (\n \n \n {flightInfo ? `${flightInfo.number}-${flightInfo.originRcd}-${flightInfo.destinationRcd}` : title}\n \n {isDutyPart && (\n \n \n {DateTimeService.toUiTime(from)}\n -\n {DateTimeService.toUiTime(to)}\n \n
\n )}\n
\n );\n } else {\n if (duty.isAfterNightDuty || duty.isBeforeNightDuty) {\n title = duty.isAfterNightDuty ? ActivityCode.AND : ActivityCode.BND;\n }\n return {title};\n }\n })}\n \n );\n }\n }\n\n let dutyTitle = (dutyItem && dutyItem.title) || '';\n if (duty?.isAfterNightDuty === true && !!duty.customTitle)\n dutyTitle += '-' + duty.customTitle;\n\n if (flex) dutyTitle += flex;\n if (dutyTitle.length > 5) dutyClass.push('flight-wrap-overflow');\n\n const hasCrewHidden = !!duty?.isCrewHidden;\n const needWrap = dutyItem && dutyItem.needWrapTitle;\n const hasFlags = flex || hasPosition || hasCrewHidden || hasHomeStudy || hasDutyPart || isParty || isLongTermEvening || isAfterLongTermEvening || hasXStarFlight || hasIntroFlight || hasObserverFlight;\n\n let title: JSX.Element | string | null = null;\n if (!dutyTitle.trim()) {\n title = <> ;\n } else {\n title = dutyTitle;\n }\n\n if (hasFlags) {\n title = {dutyTitle};\n }\n\n return (\n
\n {(dutyTitle || hasFlags) && (\n \n {title}\n {hasCrewHidden && }\n {hasPosition && }\n {hasHomeStudy && }\n {hasDutyPart && }\n {isParty && }\n {isLongTermEvening &&
}\n {isAfterLongTermEvening &&
}\n {hasXStarFlight &&
X*
}\n {hasIntroFlight && }\n {hasObserverFlight && }\n
\n )}\n {dutyItem && dutyItem.hasDuties && dutyItem.subTitle}\n {showDutyAsFight && flightViewDuties}\n {duty && showDutyAsFight && flightDateFrom && flightDateTo && DateTimeService.isValidDate(flightDateFrom) && DateTimeService.isValidDate(flightDateTo) &&\n \n {!hasDutyPart && \n {DateTimeService.toUiTime(flightDateFrom, this.props.showSwissTime)}\n -\n {DateTimeService.toUiTime(flightDateTo, this.props.showSwissTime)}\n }\n \n }\n {this.props.onRenderCellDetails?.(date, personId, dutyItem, duty)}\n {(hasTakeoff || hasLanding) && (\n \n {hasLanding && }\n {hasTakeoff && }\n \n )}\n {hasFdpSplit && }\n {hasFdpCombine && }\n {hasDutySplit && }\n {ftlGav && (!dateFrom && !dateTo) && {ftlGav}}\n {important && {important}}\n {isChecker && }\n {isTrainee && }\n {specialType && {specialType}}\n {overlayType && {overlayType}}\n {(wish || priority) && (\n \n {wish}\n {priority}\n \n )}\n {requestType}\n {!showDutyAsFight && dateFrom && !positionHasAbnd && {dateFrom}}\n {!showDutyAsFight && dateTo && !positionHasAbnd && {dateTo}}\n
\n );\n }\n\n private _onStartDragDuty = (e: React.DragEvent) => {\n const sourceElement = e.currentTarget;\n this._isDragStart = true;\n\n e.dataTransfer.effectAllowed = 'copyMove';\n this.props.onStartDragDuty?.(sourceElement, true);\n };\n\n private _onDragOverDuty = (e: React.DragEvent) => {\n e.preventDefault();\n const targetDutyElement = e.currentTarget;\n const isCopy = e.ctrlKey;\n\n const dropEffect = this.props.onDragOverDuty?.(targetDutyElement, isCopy);\n e.dataTransfer.dropEffect = dropEffect || 'none';\n\n if ((e.target as Element).classList.contains('person-grid-duty-info')) {\n e.currentTarget.firstElementChild?.classList.add('dragover');\n }\n };\n\n private _onDragLeaveDuty = (e: React.DragEvent) => {\n e.preventDefault();\n e.currentTarget.firstElementChild?.classList.remove('dragover');\n };\n\n private _onDragEnd = (e: React.DragEvent) => {\n this._isDragStart = false;\n e.currentTarget.removeAttribute('draggable');\n this.props.onDragEndDuty?.();\n };\n\n private _onDropDuty = (e: React.DragEvent) => {\n const targetDutyElement = e.currentTarget;\n const isCopy = e.ctrlKey;\n\n this.props.onDropDuty?.(targetDutyElement, isCopy);\n\n targetDutyElement.firstElementChild?.classList.remove('dragover');\n e.dataTransfer.clearData();\n };\n\n private _getDate(date: Date) {\n return this.props.showSwissTime ? DateTimeService.getSwissDate(date) : date;\n }\n\n private _getCapacityLevel(duty: DutyItem, rosterType?: string) {\n if (rosterType === RosterType.RequestToolVacCabin || rosterType === RosterType.RequestToolFreelance || rosterType === RosterType.RequestToolVacGround) {\n return duty.capacityLevel;\n } else if (rosterType === RosterType.RequestToolVacCockpit) {\n return duty.capacityLevelCockpit;\n }\n return null;\n }\n\n private _getCapacityLevelClass(duty: DutyItem, rosterType?: string) {\n const hasCapacity = duty.haveCapacity;\n const capacityLevel = this._getCapacityLevel(duty, rosterType);\n const hasHighCapacityLevel = !capacityLevel || capacityLevel === CapacityLevel.High;\n const hasNoneCapacityLevel = !capacityLevel || capacityLevel === CapacityLevel.None;\n const hasLowCapacityLevel = !capacityLevel || capacityLevel === CapacityLevel.Low;\n\n if (hasCapacity === true && hasHighCapacityLevel) {\n return 'duty-have-capacity-off';\n } else if (hasCapacity === false && hasNoneCapacityLevel) {\n return 'duty-have-no-capacity-off';\n } else if (hasCapacity === true && hasLowCapacityLevel) {\n return 'duty-have-low-capacity-off';\n }\n return null;\n }\n\n private _isShowCapacity(dutyItem: IDayDuty, dayDuty: DutyItem) {\n const hasNoDuties = !dutyItem?.hasDuties || ActivityCode.FreelancerActivities.indexOf(dutyItem.codeName) !== -1;\n const hasCheckinCheckout = dayDuty.checkinDateTimeUtc || dayDuty.checkoutDateTimeUtc;\n const hasAbnd = dayDuty.isAfterNightDuty || dayDuty.isBeforeNightDuty;\n return hasNoDuties && !hasCheckinCheckout && !hasAbnd && (!dayDuty.shadowDutyType || dayDuty.isShadowOffOptional) && dayDuty.haveCapacity !== undefined;\n }\n\n private _isDateAllowed(dutyDay: Date) {\n const { allowedDateRange } = this.props;\n if (Array.isArray(allowedDateRange)) {\n return allowedDateRange?.some(range => range.from <= dutyDay && range.to >= dutyDay);\n }\n\n return allowedDateRange && allowedDateRange.from <= dutyDay && allowedDateRange.to >= dutyDay;\n }\n\n private _gridLineClass(): string[] {\n const { isBeforeActivePerson, rosterType } = this.props;\n const classNames = ['person-grid-line'];\n const isFullRosterType: boolean = rosterType === RosterType.Full;\n if (!isFullRosterType) return classNames;\n if (isBeforeActivePerson) classNames.push('beforeActive');\n return classNames;\n }\n\n private _isNotReleased(dutyDay: Date, dutyItem: DutyItemCache | null, releasedLastDate: Date | null) {\n if (!releasedLastDate) return false;\n const date = releasedLastDate || this.props.historizeLastDate || null;\n if (!date) return false;\n\n const lastReleasedDateWithRotationTails = DateTimeService.addDays(date, 15);\n const isRotationTail = DateTimeService.isAfterDate(dutyDay, releasedLastDate) && DateTimeService.isBeforeDate(dutyDay, lastReleasedDateWithRotationTails);\n if (isRotationTail) {\n const hasActivities = !!dutyItem?.activities.length;\n return !hasActivities;\n }\n\n return DateTimeService.isAfterDate(dutyDay, releasedLastDate);\n }\n}\n\nexport default RosterLine;\n","import React from \"react\";\nimport { action, observable } from \"mobx\";\nimport { observer } from \"mobx-react\";\nimport { emitter } from \"@app/Services/EventEmitter\";\n\nimport { PrincipalConfig } from \"@app/AppConstants/PrincipalConfig\";\n\nimport { appStore } from \"@app/AppStore\";\nimport { configurationStore } from \"@app/Stores/ConfigurationStore\";\nimport { DXLinkId } from \"@app/Services/DevExtremeCssService\";\nimport { Icon } from \"./Icon\";\nimport { applyDecorators, EmptyProps } from \"@app/Helpers/Decorator\";\n\n@observer\nexport default class ThemeSwitcher extends React.Component {\n //take default value from local storage related logic\n @observable public enableDarkMode: boolean = document.body.classList.contains('dark');\n\n constructor (props:EmptyProps) {\n super(props);\n applyDecorators(this);\n }\n\n\n async componentDidMount() {\n const darkModeQuery = configurationStore.get(PrincipalConfig.ViewGroup, PrincipalConfig.DarkMode);\n const darkMode = await darkModeQuery;\n \n this.switchDarkMode(!!darkMode && !!JSON.parse(darkMode), false);\n emitter.on('theme', this.onThemeUpdate);\n }\n\n componentWillUnmount () {\n emitter.off('theme', this.onThemeUpdate);\n }\n\n render() {\n let className = 'main-nav-theme';\n\n if (this.enableDarkMode){\n className += ' dark';\n }\n return (
{\n this.switchDarkMode(!this.enableDarkMode, true);\n }}>\n {this.enableDarkMode ? : } \n
);\n }\n \n @action.bound\n onThemeUpdate (value?: string) {\n this.enableDarkMode = value === 'dark';\n }\n\n @action\n public switchDarkMode (value: boolean, saveToConfig: boolean) {\n this.enableDarkMode = value;\n if (value){\n document.body.classList.add('dark');\n appStore.bodyClassList.add('dark');\n localStorage.setItem('dark', 'true');\n } else {\n document.body.classList.remove('dark');\n appStore.bodyClassList.delete('dark');\n localStorage.removeItem('dark');\n }\n\n const link = document.getElementById(DXLinkId) as HTMLLinkElement;\n if (link){\n link.href = document.body.classList.contains('dark') ? '/css/devextreme_dark.css' : '/css/devextreme.css';\n }\n\n emitter.emit('theme', value ? 'dark' : '');\n saveToConfig && configurationStore.set(PrincipalConfig.ViewGroup, PrincipalConfig.DarkMode, JSON.stringify(this.enableDarkMode));\n }\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t\"number\"==typeof e&&!isNaN(e),d=e=>\"string\"==typeof e,u=e=>\"function\"==typeof e,p=e=>d(e)||u(e)?e:null,m=e=>t(e)||d(e)||u(e)||c(e);function f(e,t,n){void 0===n&&(n=300);const{scrollHeight:o,style:s}=e;requestAnimationFrame(()=>{s.minHeight=\"initial\",s.height=o+\"px\",s.transition=`all ${n}ms`,requestAnimationFrame(()=>{s.height=\"0\",s.padding=\"0\",s.margin=\"0\",setTimeout(t,n)})})}function g(t){let{enter:a,exit:r,appendPosition:i=!1,collapse:l=!0,collapseDuration:c=300}=t;return function(t){let{children:d,position:u,preventExitTransition:p,done:m,nodeRef:g,isIn:y,playToast:v}=t;const h=i?`${a}--${u}`:a,T=i?`${r}--${u}`:r,E=n(0);return o(()=>{const e=g.current,t=h.split(\" \"),n=o=>{o.target===g.current&&(v(),e.removeEventListener(\"animationend\",n),e.removeEventListener(\"animationcancel\",n),0===E.current&&\"animationcancel\"!==o.type&&e.classList.remove(...t))};e.classList.add(...t),e.addEventListener(\"animationend\",n),e.addEventListener(\"animationcancel\",n)},[]),s(()=>{const e=g.current,t=()=>{e.removeEventListener(\"animationend\",t),l?f(e,m,c):m()};y||(p?t():(E.current=1,e.className+=` ${T}`,e.addEventListener(\"animationend\",t)))},[y]),e.createElement(e.Fragment,null,d)}}function y(e,t){return null!=e?{content:e.content,containerId:e.props.containerId,id:e.props.toastId,theme:e.props.theme,type:e.props.type,data:e.props.data||{},isLoading:e.props.isLoading,icon:e.props.icon,status:t}:{}}const v=new Map;let h=[];const T=new Set,E=e=>T.forEach(t=>t(e)),b=()=>v.size>0;function I(e,t){var n;if(t)return!(null==(n=v.get(t))||!n.isToastActive(e));let o=!1;return v.forEach(t=>{t.isToastActive(e)&&(o=!0)}),o}function _(e,t){m(e)&&(b()||h.push({content:e,options:t}),v.forEach(n=>{n.buildToast(e,t)}))}function C(e,t){v.forEach(n=>{null!=t&&null!=t&&t.containerId?(null==t?void 0:t.containerId)===n.id&&n.toggle(e,null==t?void 0:t.id):n.toggle(e,null==t?void 0:t.id)})}function L(e){const{subscribe:o,getSnapshot:s,setProps:i}=n(function(e){const n=e.containerId||1;return{subscribe(o){const s=function(e,n,o){let s=1,r=0,i=[],l=[],f=[],g=n;const v=new Map,h=new Set,T=()=>{f=Array.from(v.values()),h.forEach(e=>e())},E=e=>{l=null==e?[]:l.filter(t=>t!==e),T()},b=e=>{const{toastId:n,onOpen:s,updateId:a,children:r}=e.props,i=null==a;e.staleId&&v.delete(e.staleId),v.set(n,e),l=[...l,e.props.toastId].filter(t=>t!==e.staleId),T(),o(y(e,i?\"added\":\"updated\")),i&&u(s)&&s(t(r)&&r.props)};return{id:e,props:g,observe:e=>(h.add(e),()=>h.delete(e)),toggle:(e,t)=>{v.forEach(n=>{null!=t&&t!==n.props.toastId||u(n.toggle)&&n.toggle(e)})},removeToast:E,toasts:v,clearQueue:()=>{r-=i.length,i=[]},buildToast:(n,l)=>{if((t=>{let{containerId:n,toastId:o,updateId:s}=t;const a=n?n!==e:1!==e,r=v.has(o)&&null==s;return a||r})(l))return;const{toastId:f,updateId:h,data:I,staleId:_,delay:C}=l,L=()=>{E(f)},N=null==h;N&&r++;const $={...g,style:g.toastStyle,key:s++,...Object.fromEntries(Object.entries(l).filter(e=>{let[t,n]=e;return null!=n})),toastId:f,updateId:h,data:I,closeToast:L,isIn:!1,className:p(l.className||g.toastClassName),bodyClassName:p(l.bodyClassName||g.bodyClassName),progressClassName:p(l.progressClassName||g.progressClassName),autoClose:!l.isLoading&&(w=l.autoClose,k=g.autoClose,!1===w||c(w)&&w>0?w:k),deleteToast(){const e=v.get(f),{onClose:n,children:s}=e.props;u(n)&&n(t(s)&&s.props),o(y(e,\"removed\")),v.delete(f),r--,r<0&&(r=0),i.length>0?b(i.shift()):T()}};var w,k;$.closeButton=g.closeButton,!1===l.closeButton||m(l.closeButton)?$.closeButton=l.closeButton:!0===l.closeButton&&($.closeButton=!m(g.closeButton)||g.closeButton);let P=n;t(n)&&!d(n.type)?P=a(n,{closeToast:L,toastProps:$,data:I}):u(n)&&(P=n({closeToast:L,toastProps:$,data:I}));const M={content:P,props:$,staleId:_};g.limit&&g.limit>0&&r>g.limit&&N?i.push(M):c(C)?setTimeout(()=>{b(M)},C):b(M)},setProps(e){g=e},setToggle:(e,t)=>{v.get(e).toggle=t},isToastActive:e=>l.some(t=>t===e),getSnapshot:()=>g.newestOnTop?f.reverse():f}}(n,e,E);v.set(n,s);const r=s.observe(o);return h.forEach(e=>_(e.content,e.options)),h=[],()=>{r(),v.delete(n)}},setProps(e){var t;null==(t=v.get(n))||t.setProps(e)},getSnapshot(){var e;return null==(e=v.get(n))?void 0:e.getSnapshot()}}}(e)).current;i(e);const l=r(o,s,s);return{getToastToRender:function(e){if(!l)return[];const t=new Map;return l.forEach(e=>{const{position:n}=e.props;t.has(n)||t.set(n,[]),t.get(n).push(e)}),Array.from(t,t=>e(t[0],t[1]))},isToastActive:I,count:null==l?void 0:l.length}}function N(e){const[t,o]=i(!1),[a,r]=i(!1),l=n(null),c=n({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:d,pauseOnHover:u,closeToast:p,onClick:m,closeOnClick:f}=e;var g,y;function h(){o(!0)}function T(){o(!1)}function E(n){const o=l.current;c.canDrag&&o&&(c.didMove=!0,t&&T(),c.delta=\"x\"===e.draggableDirection?n.clientX-c.start:n.clientY-c.start,c.start!==n.clientX&&(c.canCloseOnClick=!1),o.style.transform=`translate3d(${\"x\"===e.draggableDirection?`${c.delta}px, var(--y)`:`0, calc(${c.delta}px + var(--y))`},0)`,o.style.opacity=\"\"+(1-Math.abs(c.delta/c.removalDistance)))}function b(){document.removeEventListener(\"pointermove\",E),document.removeEventListener(\"pointerup\",b);const t=l.current;if(c.canDrag&&c.didMove&&t){if(c.canDrag=!1,Math.abs(c.delta)>c.removalDistance)return r(!0),e.closeToast(),void e.collapseAll();t.style.transition=\"transform 0.2s, opacity 0.2s\",t.style.removeProperty(\"transform\"),t.style.removeProperty(\"opacity\")}}null==(y=v.get((g={id:e.toastId,containerId:e.containerId,fn:o}).containerId||1))||y.setToggle(g.id,g.fn),s(()=>{if(e.pauseOnFocusLoss)return document.hasFocus()||T(),window.addEventListener(\"focus\",h),window.addEventListener(\"blur\",T),()=>{window.removeEventListener(\"focus\",h),window.removeEventListener(\"blur\",T)}},[e.pauseOnFocusLoss]);const I={onPointerDown:function(t){if(!0===e.draggable||e.draggable===t.pointerType){c.didMove=!1,document.addEventListener(\"pointermove\",E),document.addEventListener(\"pointerup\",b);const n=l.current;c.canCloseOnClick=!0,c.canDrag=!0,n.style.transition=\"none\",\"x\"===e.draggableDirection?(c.start=t.clientX,c.removalDistance=n.offsetWidth*(e.draggablePercent/100)):(c.start=t.clientY,c.removalDistance=n.offsetHeight*(80===e.draggablePercent?1.5*e.draggablePercent:e.draggablePercent)/100)}},onPointerUp:function(t){const{top:n,bottom:o,left:s,right:a}=l.current.getBoundingClientRect();\"touchend\"!==t.nativeEvent.type&&e.pauseOnHover&&t.clientX>=s&&t.clientX<=a&&t.clientY>=n&&t.clientY<=o?T():h()}};return d&&u&&(I.onMouseEnter=T,e.stacked||(I.onMouseLeave=h)),f&&(I.onClick=e=>{m&&m(e),c.canCloseOnClick&&p()}),{playToast:h,pauseToast:T,isRunning:t,preventExitTransition:a,toastRef:l,eventHandlers:I}}function $(t){let{delay:n,isRunning:o,closeToast:s,type:a=\"default\",hide:r,className:i,style:c,controlledProgress:d,progress:p,rtl:m,isIn:f,theme:g}=t;const y=r||d&&0===p,v={...c,animationDuration:`${n}ms`,animationPlayState:o?\"running\":\"paused\"};d&&(v.transform=`scaleX(${p})`);const h=l(\"Toastify__progress-bar\",d?\"Toastify__progress-bar--controlled\":\"Toastify__progress-bar--animated\",`Toastify__progress-bar-theme--${g}`,`Toastify__progress-bar--${a}`,{\"Toastify__progress-bar--rtl\":m}),T=u(i)?i({rtl:m,type:a,defaultClassName:h}):l(h,i),E={[d&&p>=1?\"onTransitionEnd\":\"onAnimationEnd\"]:d&&p<1?null:()=>{f&&s()}};return e.createElement(\"div\",{className:\"Toastify__progress-bar--wrp\",\"data-hidden\":y},e.createElement(\"div\",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${g} Toastify__progress-bar--${a}`}),e.createElement(\"div\",{role:\"progressbar\",\"aria-hidden\":y?\"true\":\"false\",\"aria-label\":\"notification timer\",className:T,style:v,...E}))}let w=1;const k=()=>\"\"+w++;function P(e){return e&&(d(e.toastId)||c(e.toastId))?e.toastId:k()}function M(e,t){return _(e,t),t.toastId}function x(e,t){return{...t,type:t&&t.type||e,toastId:P(t)}}function A(e){return(t,n)=>M(t,x(e,n))}function B(e,t){return M(e,x(\"default\",t))}B.loading=(e,t)=>M(e,x(\"default\",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...t})),B.promise=function(e,t,n){let o,{pending:s,error:a,success:r}=t;s&&(o=d(s)?B.loading(s,n):B.loading(s.render,{...n,...s}));const i={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},l=(e,t,s)=>{if(null==t)return void B.dismiss(o);const a={type:e,...i,...n,data:s},r=d(t)?{render:t}:t;return o?B.update(o,{...a,...r}):B(r.render,{...a,...r}),s},c=u(e)?e():e;return c.then(e=>l(\"success\",r,e)).catch(e=>l(\"error\",a,e)),c},B.success=A(\"success\"),B.info=A(\"info\"),B.error=A(\"error\"),B.warning=A(\"warning\"),B.warn=B.warning,B.dark=(e,t)=>M(e,x(\"default\",{theme:\"dark\",...t})),B.dismiss=function(e){!function(e){var t;if(b()){if(null==e||d(t=e)||c(t))v.forEach(t=>{t.removeToast(e)});else if(e&&(\"containerId\"in e||\"id\"in e)){const t=v.get(e.containerId);t?t.removeToast(e.id):v.forEach(t=>{t.removeToast(e.id)})}}else h=h.filter(t=>null!=e&&t.options.toastId!==e)}(e)},B.clearWaitingQueue=function(e){void 0===e&&(e={}),v.forEach(t=>{!t.props.limit||e.containerId&&t.id!==e.containerId||t.clearQueue()})},B.isActive=I,B.update=function(e,t){void 0===t&&(t={});const n=((e,t)=>{var n;let{containerId:o}=t;return null==(n=v.get(o||1))?void 0:n.toasts.get(e)})(e,t);if(n){const{props:o,content:s}=n,a={delay:100,...o,...t,toastId:t.toastId||e,updateId:k()};a.toastId!==e&&(a.staleId=e);const r=a.render||s;delete a.render,M(r,a)}},B.done=e=>{B.update(e,{progress:1})},B.onChange=function(e){return T.add(e),()=>{T.delete(e)}},B.play=e=>C(!0,e),B.pause=e=>C(!1,e);const O=\"undefined\"!=typeof window?o:s,D=t=>{let{theme:n,type:o,isLoading:s,...a}=t;return e.createElement(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:\"colored\"===n?\"currentColor\":`var(--toastify-icon-color-${o})`,...a})},z={info:function(t){return e.createElement(D,{...t},e.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z\"}))},warning:function(t){return e.createElement(D,{...t},e.createElement(\"path\",{d:\"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z\"}))},success:function(t){return e.createElement(D,{...t},e.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z\"}))},error:function(t){return e.createElement(D,{...t},e.createElement(\"path\",{d:\"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z\"}))},spinner:function(){return e.createElement(\"div\",{className:\"Toastify__spinner\"})}},R=n=>{const{isRunning:o,preventExitTransition:s,toastRef:r,eventHandlers:i,playToast:c}=N(n),{closeButton:d,children:p,autoClose:m,onClick:f,type:g,hideProgressBar:y,closeToast:v,transition:h,position:T,className:E,style:b,bodyClassName:I,bodyStyle:_,progressClassName:C,progressStyle:L,updateId:w,role:k,progress:P,rtl:M,toastId:x,deleteToast:A,isIn:B,isLoading:O,closeOnClick:D,theme:R}=n,S=l(\"Toastify__toast\",`Toastify__toast-theme--${R}`,`Toastify__toast--${g}`,{\"Toastify__toast--rtl\":M},{\"Toastify__toast--close-on-click\":D}),H=u(E)?E({rtl:M,position:T,type:g,defaultClassName:S}):l(S,E),F=function(e){let{theme:n,type:o,isLoading:s,icon:r}=e,i=null;const l={theme:n,type:o};return!1===r||(u(r)?i=r({...l,isLoading:s}):t(r)?i=a(r,l):s?i=z.spinner():(e=>e in z)(o)&&(i=z[o](l))),i}(n),X=!!P||!m,Y={closeToast:v,type:g,theme:R};let q=null;return!1===d||(q=u(d)?d(Y):t(d)?a(d,Y):function(t){let{closeToast:n,theme:o,ariaLabel:s=\"close\"}=t;return e.createElement(\"button\",{className:`Toastify__close-button Toastify__close-button--${o}`,type:\"button\",onClick:e=>{e.stopPropagation(),n(e)},\"aria-label\":s},e.createElement(\"svg\",{\"aria-hidden\":\"true\",viewBox:\"0 0 14 16\"},e.createElement(\"path\",{fillRule:\"evenodd\",d:\"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"})))}(Y)),e.createElement(h,{isIn:B,done:A,position:T,preventExitTransition:s,nodeRef:r,playToast:c},e.createElement(\"div\",{id:x,onClick:f,\"data-in\":B,className:H,...i,style:b,ref:r},e.createElement(\"div\",{...B&&{role:k},className:u(I)?I({type:g}):l(\"Toastify__toast-body\",I),style:_},null!=F&&e.createElement(\"div\",{className:l(\"Toastify__toast-icon\",{\"Toastify--animate-icon Toastify__zoom-enter\":!O})},F),e.createElement(\"div\",null,p)),q,e.createElement($,{...w&&!X?{key:`pb-${w}`}:{},rtl:M,theme:R,delay:m,isRunning:o,isIn:B,closeToast:v,hide:y,type:g,style:L,className:C,controlledProgress:X,progress:P||0})))},S=function(e,t){return void 0===t&&(t=!1),{enter:`Toastify--animate Toastify__${e}-enter`,exit:`Toastify--animate Toastify__${e}-exit`,appendPosition:t}},H=g(S(\"bounce\",!0)),F=g(S(\"slide\",!0)),X=g(S(\"zoom\")),Y=g(S(\"flip\")),q={position:\"top-right\",transition:H,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:\"touch\",draggablePercent:80,draggableDirection:\"x\",role:\"alert\",theme:\"light\"};function Q(t){let o={...q,...t};const s=t.stacked,[a,r]=i(!0),c=n(null),{getToastToRender:d,isToastActive:m,count:f}=L(o),{className:g,style:y,rtl:v,containerId:h}=o;function T(e){const t=l(\"Toastify__toast-container\",`Toastify__toast-container--${e}`,{\"Toastify__toast-container--rtl\":v});return u(g)?g({position:e,rtl:v,defaultClassName:t}):l(t,p(g))}function E(){s&&(r(!0),B.play())}return O(()=>{if(s){var e;const t=c.current.querySelectorAll('[data-in=\"true\"]'),n=12,s=null==(e=o.position)?void 0:e.includes(\"top\");let r=0,i=0;Array.from(t).reverse().forEach((e,t)=>{const o=e;o.classList.add(\"Toastify__toast--stacked\"),t>0&&(o.dataset.collapsed=`${a}`),o.dataset.pos||(o.dataset.pos=s?\"top\":\"bot\");const l=r*(a?.2:1)+(a?0:n*t);o.style.setProperty(\"--y\",`${s?l:-1*l}px`),o.style.setProperty(\"--g\",`${n}`),o.style.setProperty(\"--s\",\"\"+(1-(a?i:0))),r+=o.offsetHeight,i+=.025})}},[a,f,s]),e.createElement(\"div\",{ref:c,className:\"Toastify\",id:h,onMouseEnter:()=>{s&&(r(!1),B.pause())},onMouseLeave:E},d((t,n)=>{const o=n.length?{...y}:{...y,pointerEvents:\"none\"};return e.createElement(\"div\",{className:T(t),style:o,key:`container-${t}`},n.map(t=>{let{content:n,props:o}=t;return e.createElement(R,{...o,stacked:s,collapseAll:E,isIn:m(o.toastId,o.containerId),style:o.style,key:`toast-${o.key}`},n)}))}))}export{H as Bounce,Y as Flip,z as Icons,F as Slide,Q as ToastContainer,X as Zoom,f as collapseToast,g as cssTransition,B as toast,N as useToast,L as useToastContainer};\n//# sourceMappingURL=react-toastify.esm.mjs.map\n","import * as React from 'react';\nimport { ToastContainer, ToastOptions, toast } from 'react-toastify';\n\nimport { SignalREvents } from '@app/AppConstants/SignalR';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport ApiService from '@app/Services/ApiService';\nimport { devInfoStore } from '@app/Stores/DevInfoStore';\nimport { signalRService } from '@app/Services/SignalRService';\n\nexport class NotificationContainer extends React.Component {\n render() {\n return ;\n }\n}\n\nexport class NotificationHandler {\n static subscribeToNotifications() {\n signalRService.subscribeToGroup(SignalREvents.success, NotificationHandler.onOperationSuccessHandler);\n signalRService.subscribeToGroup(SignalREvents.warning, NotificationHandler.onOperationWarningHandler);\n signalRService.subscribeToGroup(SignalREvents.error, NotificationHandler.onOperationErrorHandler);\n signalRService.subscribeToGroup(SignalREvents.info, NotificationHandler.onOperationInfoHandler);\n }\n\n public static onOperationSuccessHandler(_: string, message: string) {\n NotificationHandler.showSuccess(message);\n }\n\n public static onOperationWarningHandler(_: string, message: string) {\n NotificationHandler.showWarning(message);\n }\n\n public static onOperationErrorHandler(_: string, message: string) {\n NotificationHandler.showError(message);\n }\n\n public static onOperationInfoHandler(_: string, message: string) {\n NotificationHandler.showInfo(message);\n }\n\n public static suppressError(message: string){\n const excludeErrors: {pattern: string, reason: string}[] = [{\n pattern: '__gCrWeb',\n //https://stackoverflow.com/questions/26483541/referenceerror-cant-find-variable-gcrweb\n reason: 'Edge on iOS bug'\n }, {\n pattern: 'instantSearchSDKJSBridgeClearHighlight',\n //https://stackoverflow.com/questions/69261499/what-is-instantsearchsdkjsbridgeclearhighlight\n reason: 'Edge on iOS bug'\n }];\n\n for(const p of excludeErrors){\n if (message && message.indexOf(p.pattern) !== -1){\n //do not report\n return true;\n }\n }\n\n return false;\n }\n\n public static showConsoleError(errorParameters: ErrorEvent | {error: string, message: string, filename?: string, lineno?: number, colno?: number}) {\n const msg = errorParameters.message;\n const url = errorParameters.filename;\n const lineNo = errorParameters.lineno;\n const columnNo = errorParameters.colno;\n const error = errorParameters.error;\n\n let message = 'script error';\n if (msg.indexOf(message) > -1) {\n message = 'Script Error: See Browser Console for Detail';\n } else {\n const messageParts = ['Message: ' + msg, 'URL: ' + (url || ''), 'Line: ' + (lineNo || ''), 'Column: ' + (columnNo || '')];\n if (error && error.stack){\n messageParts.push('Stack: ' + JSON.stringify(error.stack));\n }\n message = messageParts.join(' - ');\n }\n\n if (this.suppressError(message)){\n return;\n }\n\n if (devInfoStore.isDevelopment) {\n NotificationHandler.showError(message, 'Error');\n }\n \n let screenSize = '';\n if (screen.width) {\n const width = (screen.width) ? screen.width : '';\n const height = (screen.height) ? screen.height : '';\n screenSize += '' + width + ' x ' + height;\n }\n\n const params = {\n message: message,\n url: window.location.href,\n source: url || '' + ' Line: ' + lineNo + ' Column: ' + columnNo,\n navigatorUserAgent: navigator.userAgent,\n navigatorVendor: navigator.vendor,\n screenSize: screenSize\n };\n void ApiService.postData(ApiUrls.ErrorUrl, params);\n }\n\n public static showError(message: React.ReactNode, title: string = 'Error') {\n const content = (\n
\n
{title}
\n
{message}
\n
\n );\n toast.error(content);\n }\n\n public static showInfo(message: string, title: string = 'Info') {\n const content = (\n
\n
{title}
\n
{message}
\n
\n );\n toast.info(content);\n }\n\n public static showWarning(message: string, title: string = 'Warning') {\n const content = (\n
\n
{title}
\n
{message}
\n
\n );\n toast.warning(content);\n }\n\n public static showSuccess(message: string, title: string = 'Success', optionsOverride?: ToastOptions) {\n const content = (\n
\n
{title}
\n
{message}
\n
\n );\n toast.success(content, optionsOverride);\n }\n}\n\nNotificationHandler.subscribeToNotifications();\n","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nexport { isElement, isHTMLElement };","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe: assume body is always available\n return (isElement(element) ? element.ownerDocument : element.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement;\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (!isFixed) {\n if (getNodeName(offsetParent) !== 'body') {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement = getDocumentElement(offsetParent)) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}","import getNodeName from \"./getNodeName.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n document.ownerDocument || // Fallback to ownerDocument if available\n document.documentElement // Or to documentElement if everything else fails\n ;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getParentNode from \"./getParentNode.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node)) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(node),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {\n return node;\n }\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nexport default function listScrollParents(element, list) {\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = getNodeName(scrollParent) === 'body';\n var target = isBody ? getWindow(scrollParent) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n}\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element); // Find the nearest non-table offsetParent\n\n while (offsetParent && isTableElement(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n return window;\n }\n\n return offsetParent || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements =\n/*#__PURE__*/\nbasePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements =\n/*#__PURE__*/\n[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nexport * from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, {}, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, {}, state.options, {}, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper =\n/*#__PURE__*/\npopperGenerator();","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, {}, current, {\n options: Object.assign({}, existing.options, {}, current.options),\n data: Object.assign({}, existing.data, {}, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\";\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n}\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsets(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive;\n\n var _roundOffsets = roundOffsets(offsets),\n x = _roundOffsets.x,\n y = _roundOffsets.y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n /*:: offsetParent = (offsetParent: Element); */\n\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref3) {\n var state = _ref3.state,\n options = _ref3.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive;\n\n if (process.env.NODE_ENV !== \"production\") {\n var _getComputedStyle = getComputedStyle(state.elements.popper),\n transitionProperty = _getComputedStyle.transitionProperty;\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n }; // popper offsets are always available\n\n state.styles.popper = Object.assign({}, state.styles.popper, {}, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive\n }))); // arrow offsets may not be available\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, {}, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n}\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n state.modifiersData[name] = data;\n}\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\n\nfunction toNumber(cssValue) {\n return parseFloat(cssValue) || 0;\n}\n\nexport default function getBorders(element) {\n var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};\n return {\n top: toNumber(computedStyle.borderTopWidth),\n right: toNumber(computedStyle.borderRightWidth),\n bottom: toNumber(computedStyle.borderBottomWidth),\n left: toNumber(computedStyle.borderLeftWidth)\n };\n}","import getBorders from \"./getBorders.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\"; // Borders + scrollbars\n\nexport default function getDecorations(element) {\n var win = getWindow(element);\n var borders = getBorders(element);\n var isHTML = getNodeName(element) === 'html';\n var winScrollBarX = getWindowScrollBarX(element);\n var x = element.clientWidth + borders.right;\n var y = element.clientHeight + borders.bottom; // HACK:\n // document.documentElement.clientHeight on iOS reports the height of the\n // viewport including the bottom bar, even if the bottom bar isn't visible.\n // If the difference between window innerHeight and html clientHeight is more\n // than 50, we assume it's a mobile bottom bar and ignore scrollbars.\n // * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows\n // is about 17px)\n // * The mobile bar is 114px tall\n\n if (isHTML && win.innerHeight - element.clientHeight > 50) {\n y = win.innerHeight - borders.bottom;\n }\n\n return {\n top: isHTML ? 0 : element.clientTop,\n right: // RTL scrollbar (scrolling containers only)\n element.clientLeft > borders.left ? borders.right : // LTR scrollbar\n isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,\n bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,\n left: isHTML ? winScrollBarX : element.clientLeft\n };\n}","export default function contains(parent, child) {\n // $FlowFixMe: hasOwnProperty doesn't seem to work in tests\n var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (isShadow) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDecorations from \"./getDecorations.js\";\nimport contains from \"./contains.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(element);\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement);\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));\n accRect.top = Math.max(rect.top + decorations.top, accRect.top);\n accRect.right = Math.min(rect.right - decorations.right, accRect.right);\n accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);\n accRect.left = Math.max(rect.left + decorations.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n return {\n width: win.innerWidth,\n height: win.innerHeight,\n x: 0,\n y: 0\n };\n}","import getCompositeRect from \"./getCompositeRect.js\";\nimport getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getDocumentRect(element) {\n var win = getWindow(element);\n var winScroll = getWindowScroll(element);\n var documentRect = getCompositeRect(getDocumentElement(element), win);\n documentRect.height = Math.max(documentRect.height, win.innerHeight);\n documentRect.width = Math.max(documentRect.width, win.innerWidth);\n documentRect.x = -winScroll.scrollLeft;\n documentRect.y = -winScroll.scrollTop;\n return documentRect;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), {}, paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\";\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, {}, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\";\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [overflow[_basePlacement] <= 0, overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0];\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n}\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements; // $FlowFixMe: Flow seems to have problems with two array unions...\n\n var overflows = placements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","export default function within(min, value, max) {\n return Math.max(min, Math.min(value, max));\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (checkMainAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(_min, _offset, _max);\n\n state.modifiersData.popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n}\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement) {\n return;\n }\n\n var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n _options$padding = options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding; // CSS selector\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n state.modifiersData[name + \"#persistent\"] = {\n padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n };\n}\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n}\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator } from \"./index.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper =\n/*#__PURE__*/\npopperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n}\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: 'absolute',\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n}\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import React, { PropsWithChildren } from 'react';\nimport { observer } from 'mobx-react';\nimport { action, observable, when } from 'mobx';\nimport * as PopperJS from '@popperjs/core';\nimport ReactDOM from 'react-dom';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\nconst CONTAINER_ID = 'tooltip-container';\n\nexport class ToolTipContainer extends React.Component {\n render() {\n return
;\n }\n}\n\nexport enum ToolTipItemMode {\n MouseHover = 'MouseHover',\n MouseClick = 'MouseClick'\n}\n\ntype ToolTipItemProps = PropsWithChildren & {\n targetId: string;\n text?: string | JSX.Element;\n className?: string;\n placement?: PopperJS.Placement;\n mode?: ToolTipItemMode,\n asyncComputedText?: () => Promise;\n};\n\n@observer\nexport class ToolTipItem extends React.Component {\n @observable private _showPortal: boolean = false;\n @observable private _tooltipInstance: PopperJS.Instance | null = null;\n @observable private _tooltipNumber: number = 0;\n @observable private _tooltipsCounter: number = 0;\n @observable private _computedText?: string | JSX.Element;\n private _containerObserver: MutationObserver | null = null;\n private _containerElement: HTMLElement | null = document.getElementById(CONTAINER_ID);\n private _tooltipRef: React.RefObject = React.createRef();\n private _tooltipArrowRef: React.RefObject = React.createRef();\n private _targetElement: HTMLElement | null = null;\n private _timer: number | null = null;\n private _popperMouseOver: boolean = false;\n\n constructor (props:ToolTipItemProps) {\n super(props);\n applyDecorators(this);\n }\n\n componentDidMount() {\n this._checkTargetElement();\n }\n \n _checkTargetElement = () => {\n this._targetElement = document.getElementById(this.props.targetId);\n if (this._targetElement) {\n this._initToolTipItem();\n } else {\n this._stopTimer();\n this._timer = window.setTimeout(this._checkTargetElement, 100);\n }\n };\n \n \n componentWillUnmount() {\n this._stopTimer();\n if (this._targetElement) {\n if (!this.props.mode || this.props.mode === ToolTipItemMode.MouseHover) {\n this._targetElement.removeEventListener('mouseenter', this._onContainerMouseOver);\n this._targetElement.removeEventListener('mouseleave', this._onContainerMouseOut);\n } else {\n document.removeEventListener(\"click\", this._onDocumentMouseClick);\n }\n }\n this._containerObserver?.disconnect();\n }\n \n _initToolTipItem(){\n if (!this._targetElement) {\n throw new Error(`Target element with id = ${this.props.targetId} is not found`);\n }\n\n if (!this.props.mode || this.props.mode === ToolTipItemMode.MouseHover) {\n this._targetElement.addEventListener('mouseenter', this._onContainerMouseOver);\n this._targetElement.addEventListener('mouseleave', this._onContainerMouseOut);\n } else {\n document.addEventListener(\"click\", this._onDocumentMouseClick, true);\n }\n\n this._createContainerChangeDetector();\n }\n\n _popperMouseEnter = () => {\n this._popperMouseOver = true;\n };\n _popperMouseLeave = () => {\n this._popperMouseOver = false;\n when(\n () => this._tooltipsCounter === this._tooltipNumber,\n () => {\n this._closePopper();\n }\n );\n };\n\n @action.bound\n private _createPopper() {\n if (!this._targetElement || !this._tooltipRef.current) return;\n const { placement } = this.props;\n this._tooltipInstance = PopperJS.createPopper(this._targetElement, this._tooltipRef.current, {\n placement: placement || 'right',\n modifiers: [\n {\n name: 'arrow',\n options: {\n element: this._tooltipArrowRef.current\n }\n },\n {\n name: 'events',\n phase: 'main',\n enabled: true,\n effect: (eff) => {\n eff.state.elements.popper.addEventListener('mouseenter', this._popperMouseEnter);\n eff.state.elements.popper.addEventListener('mouseleave', this._popperMouseLeave);\n return () => {\n eff.state.elements.popper.removeEventListener('mouseenter', this._popperMouseEnter);\n eff.state.elements.popper.removeEventListener('mouseleave', this._popperMouseLeave);\n };\n }\n }\n ]\n });\n this._tooltipNumber = this._containerElement?.childElementCount || 0;\n }\n\n @action\n private _createContainerChangeDetector() {\n this._containerObserver = new MutationObserver((mutationList) => {\n for (const mutation of mutationList) {\n if (mutation.type === \"childList\") {\n this._tooltipsCounter = mutation.target.childNodes.length;\n }\n }\n });\n this._containerElement && this._containerObserver?.observe(this._containerElement, { childList: true });\n }\n\n @action.bound\n private _destroyPopper() {\n if (this._tooltipInstance) {\n this._tooltipInstance = null;\n }\n }\n\n private _closePopper() {\n this._stopTimer();\n this._timer = window.setTimeout(() => {\n if (!this._popperMouseOver) {\n this._hide();\n }\n }, 100);\n }\n\n @action.bound\n private _onContainerMouseOut = () => {\n this._closePopper();\n this._computedText = undefined;\n };\n\n @action.bound\n private async _onContainerMouseOver() {\n this._stopTimer();\n this._showPortal = true;\n this._timer = window.setTimeout(this._createPopper, 250);\n this._computedText = await this.props.asyncComputedText?.();\n }\n\n @action.bound\n private _onDocumentMouseClick(event: MouseEvent) {\n const target = event.target as Element;\n const popper = target.closest('.popper');\n\n if (this._targetElement?.id === target.id && !this._showPortal) {\n this._stopTimer();\n this._showPortal = true;\n this._timer = window.setTimeout(this._createPopper, 250);\n } else if (!popper) {\n this._hide();\n }\n }\n\n @action.bound\n private _hide() {\n this._stopTimer();\n this._destroyPopper();\n this._showPortal = false;\n }\n\n private _stopTimer() {\n if (this._timer) {\n window.clearTimeout(this._timer);\n this._timer = null;\n }\n }\n\n render() {\n const { className, children, text, mode } = this.props;\n const cls = ['tooltip popper'];\n if (mode === ToolTipItemMode.MouseClick)\n cls.push('tooltip-selectable');\n className && cls.push(className);\n this._tooltipInstance && cls.push('show');\n return (\n \n
\n
\n {this._computedText}\n {text}\n {children}\n
\n
\n
\n \n );\n }\n}\n\ntype ToolTipPortalProps = {\n showPortal: boolean;\n children?: React.ReactNode;\n};\n\nclass ToolTipPortal extends React.Component {\n private _portalContainer: HTMLElement | null = document.getElementById(CONTAINER_ID);\n\n render() {\n return this._portalContainer && this.props.showPortal ? ReactDOM.createPortal(this.props.children, this._portalContainer) : null;\n }\n}\n","import DateTimeService from '@app/Services/DateTimeService';\n\nexport type Range = {\n from: T;\n to: T;\n};\n\nexport enum RangeReadyStatus {\n None = 0,\n Loading = 1,\n Ready = 2,\n Error = 4\n}\n\nexport class RangeComparer {\n static isEqualDate(r1: Range | null, r2: Range | null) {\n if (r1 === r2) return true;\n if (!r1 || !r2) return false;\n return DateTimeService.isSameDate(r1.from, r2.from) && DateTimeService.isSameDate(r1.to, r2.to);\n }\n\n static isInDateRange(r: Range, d: Date) {\n return r.from <= d && d <= r.to;\n }\n}\n","import { observable, action } from 'mobx';\nimport Axios from 'axios';\n\nimport { Range, RangeReadyStatus } from './Range';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { IPersonStore } from './IPersonStore';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\ntype RangeStatus = {\n range: Range;\n status: RangeReadyStatus;\n timestamp: Date;\n};\n\ntype ItemStatus = {\n item: T;\n status: RangeReadyStatus;\n timestamp: Date;\n};\n\nexport type RangeLoadHandler = (range: Range) => Promise;\nexport type PersonLoadHandler = (items: T[]) => Promise;\n\nabstract class RangeStore {\n @observable protected _rangeStatuses: RangeStatus[] = [];\n protected _rangeLoadHandler: RangeLoadHandler;\n\n constructor(rangeLoadHandler: RangeLoadHandler) {\n applyDecorators(this);\n this._rangeLoadHandler = rangeLoadHandler;\n }\n\n public abstract loadRange(range: Range, fullRange: Range): Promise;\n\n public abstract reloadRange(range: Range): Promise;\n\n public abstract getStatus(at: T): RangeReadyStatus;\n\n public abstract refreshVisibleViewport(viewportRange: Range, cleanRange: Range): void;\n\n public clear() {\n this._rangeStatuses.length = 0;\n }\n}\n\nexport class DateRangeStore extends RangeStore {\n private readonly _prefetchDates: number = 10;\n\n public async loadRange(range: Range, fullRange: Range): Promise {\n this._validateRange(range);\n\n let minRequiredDate: Date | null = null;\n let maxRequiredDate: Date | null = null;\n\n let daysBack = 0;\n let daysForward = 0;\n const requiredDaysBack: Date[] = [];\n const requiredDaysForward: Date[] = [];\n\n let dateFrom = DateTimeService.addDays(range.from, -this._prefetchDates / 2);\n let dateTo = DateTimeService.addDays(range.to, this._prefetchDates / 2);\n if (dateFrom < fullRange.from) {\n dateFrom = fullRange.from;\n }\n if (dateTo > fullRange.to) {\n dateTo = fullRange.to;\n }\n\n const dateFromWithFullPrefetch = DateTimeService.addDays(dateFrom, -this._prefetchDates / 2);\n const dateToWithFullPrefetch = DateTimeService.addDays(dateTo, this._prefetchDates / 2);\n\n for (let date = dateFromWithFullPrefetch; date <= dateToWithFullPrefetch; date = DateTimeService.addDays(date, 1)) {\n if (date < dateFrom) {\n if (this._isLoadingRequired(date)) {\n daysBack++;\n requiredDaysBack.push(date);\n }\n continue;\n }\n\n if (date > dateTo) {\n if (this._isLoadingRequired(date)) {\n daysForward++;\n requiredDaysForward.push(date);\n }\n continue;\n }\n\n if (this._isLoadingRequired(date)) {\n if (!minRequiredDate) {\n minRequiredDate = date;\n }\n maxRequiredDate = date;\n }\n }\n\n if (minRequiredDate && maxRequiredDate) {\n if (daysBack === this._prefetchDates / 2) {\n minRequiredDate = dateFromWithFullPrefetch;\n } else if (daysBack > 0 && !this._isLoadingRequired(dateFromWithFullPrefetch)) {\n requiredDaysBack.forEach(async (date) => {\n await this.reloadRange({ from: date, to: date });\n });\n }\n\n if (daysForward === this._prefetchDates / 2) {\n maxRequiredDate = dateToWithFullPrefetch;\n } else if (daysForward > 0 && !this._isLoadingRequired(dateToWithFullPrefetch)) {\n requiredDaysForward.forEach(async (date) => {\n await this.reloadRange({ from: date, to: date });\n });\n }\n\n await this.reloadRange({ from: minRequiredDate, to: maxRequiredDate });\n }\n }\n\n public async reloadRange(range: Range): Promise {\n this._validateRange(range);\n const statusRange = this._setLoadingStatus(range);\n try {\n await this._rangeLoadHandler(range);\n this._setReadyStatus(statusRange, RangeReadyStatus.Ready);\n } catch (ex) {\n if (Axios.isCancel(ex)) {\n this._setReadyStatus(statusRange, RangeReadyStatus.None);\n return;\n }\n\n this._setReadyStatus(statusRange, RangeReadyStatus.Error);\n throw ex;\n }\n }\n\n public getStatus(at: Date): RangeReadyStatus {\n let maxStatus = RangeReadyStatus.None;\n const rangeStatuses = this._rangeStatuses;\n for (let i = 0; i < rangeStatuses.length; i++) {\n const rangeStatus = rangeStatuses[i];\n if (rangeStatus.range.from <= at && at <= rangeStatus.range.to) {\n maxStatus = maxStatus < rangeStatus.status ? rangeStatus.status : maxStatus;\n }\n }\n\n return maxStatus;\n }\n\n @action.bound\n private _setLoadingStatus(range: Range) {\n const result = {\n range: range,\n status: RangeReadyStatus.Loading,\n timestamp: DateTimeService.now()\n };\n this._rangeStatuses.push(result);\n return this._rangeStatuses[this._rangeStatuses.length - 1];\n }\n\n @action.bound\n private _setReadyStatus(rangeStatus: RangeStatus, status: RangeReadyStatus) {\n if (this._rangeStatuses.indexOf(rangeStatus) === -1) {\n return;\n }\n rangeStatus.status = status;\n for (let i = this._rangeStatuses.length - 1; i >= 0; i--) {\n const range = this._rangeStatuses[i];\n const isThisRange = rangeStatus === range;\n if (isThisRange || (range.status !== RangeReadyStatus.Ready && range.status !== RangeReadyStatus.Error)) {\n continue;\n }\n if (rangeStatus.range.to >= range.range.from && rangeStatus.range.from <= range.range.to) {\n if (range.status === rangeStatus.status) {\n rangeStatus.range.from = DateTimeService.min(range.range.from, rangeStatus.range.from);\n rangeStatus.range.to = DateTimeService.max(range.range.to, rangeStatus.range.to);\n rangeStatus.timestamp = DateTimeService.max(range.timestamp, rangeStatus.timestamp);\n this._rangeStatuses.splice(i, 1);\n continue;\n }\n\n //cut existing range left\n if (range.range.to > rangeStatus.range.from) {\n range.range.to = DateTimeService.addDays(rangeStatus.range.from, -1);\n if (range.range.to <= range.range.from) {\n this._rangeStatuses.splice(i, 1);\n continue;\n }\n }\n\n //cut existing range right\n if (range.range.from < rangeStatus.range.to) {\n range.range.from = DateTimeService.addDays(rangeStatus.range.to, 1);\n if (range.range.to <= range.range.from) {\n this._rangeStatuses.splice(i, 1);\n continue;\n }\n }\n }\n }\n }\n\n private _isLoadingRequired(date: Date) {\n let isLoadingNeeded = true;\n const ranges = this._rangeStatuses;\n\n for (let i = 0; i < ranges.length; i++) {\n const statusRange = ranges[i];\n if (statusRange.range.from <= date && date <= statusRange.range.to) {\n if (statusRange.status === RangeReadyStatus.Loading) {\n isLoadingNeeded = false;\n break;\n }\n if (statusRange.status === RangeReadyStatus.Ready) {\n isLoadingNeeded = false;\n break;\n }\n }\n }\n\n return isLoadingNeeded;\n }\n\n public async refreshVisibleViewport(viewportRange: Range, clearRange: Range) {\n for (let i = this._rangeStatuses.length - 1; i >= 0; i--) {\n const { range, status } = this._rangeStatuses[i];\n if (status > RangeReadyStatus.Loading && DateTimeService.isIntersects(range, clearRange) && !DateTimeService.isIntersects(range, viewportRange)) {\n this._rangeStatuses.splice(i, 1);\n }\n }\n\n const intersectionWithViewport = DateTimeService.rangesIntersection(viewportRange.from, viewportRange.to, clearRange.from, clearRange.to);\n if (intersectionWithViewport) {\n await this.reloadRange(intersectionWithViewport);\n }\n }\n\n private _validateRange(range: Range) {\n if (range.from > range.to) {\n throw new Error(`Range is not valid, from ${range.from} must be less or equal to to ${range.to}`);\n }\n }\n}\n\nexport class PersonRangeStore {\n @observable private _personStatusesMap: Map[]> = new Map();\n private _itemLoadHandler: PersonLoadHandler;\n private readonly _prefetchItems: number = 10;\n private readonly _personStore: IPersonStore;\n\n constructor(personStore: IPersonStore, rangeLoadHandler: PersonLoadHandler) {\n applyDecorators(this);\n this._personStore = personStore;\n this._itemLoadHandler = rangeLoadHandler;\n }\n\n @action.bound\n public async loadItems(range: Range): Promise {\n const requiredItems: string[] = [];\n\n let indexesBack = 0;\n let indexesForward = 0;\n const requiredPersonIdsBack: string[] = [];\n const requiredPersonIdsForward: string[] = [];\n\n const fullRange = { from: 0, to: this._personStore.filteredPersons.length - 1 };\n\n let indexFrom = range.from - this._prefetchItems / 2;\n if (indexFrom < fullRange.from) {\n indexFrom = fullRange.from;\n }\n let indexTo = range.to + this._prefetchItems / 2;\n if (indexTo > fullRange.to) {\n indexTo = fullRange.to;\n }\n\n const indexFromWithFullPrefetch = indexFrom - this._prefetchItems / 2 < fullRange.from ? fullRange.from : indexFrom - this._prefetchItems / 2;\n const indexToWithFullPrefetch = indexTo + this._prefetchItems / 2 > fullRange.to ? fullRange.to : indexTo + this._prefetchItems / 2;\n\n for (let i = indexFromWithFullPrefetch; i <= indexToWithFullPrefetch; i++) {\n const personId = this._personStore.filteredPersons[i].id;\n\n if (i < indexFrom) {\n if (this._isLoadingRequired(personId)) {\n indexesBack++;\n requiredPersonIdsBack.push(personId);\n }\n continue;\n }\n\n if (i > indexTo) {\n if (this._isLoadingRequired(personId)) {\n indexesForward++;\n requiredPersonIdsForward.push(personId);\n }\n continue;\n }\n\n if (this._isLoadingRequired(personId)) {\n requiredItems.push(personId);\n }\n }\n\n if (requiredItems.length) {\n if (indexesBack === this._prefetchItems / 2) {\n requiredItems.push(...requiredPersonIdsBack);\n } else if (indexesBack > 0 && !this._isLoadingRequired(this._personStore.filteredPersons[indexFromWithFullPrefetch].id)) {\n requiredItems.push(...requiredPersonIdsBack);\n }\n\n if (indexesForward === this._prefetchItems / 2) {\n requiredItems.push(...requiredPersonIdsForward);\n } else if (indexesForward > 0 && !this._isLoadingRequired(this._personStore.filteredPersons[indexToWithFullPrefetch].id)) {\n requiredItems.push(...requiredPersonIdsForward);\n }\n\n await this.reloadItems(requiredItems);\n }\n }\n\n @action.bound\n public async reloadItems(items: string[]): Promise {\n const statusRanges = this._setLoadingStatus(items);\n try {\n await this._itemLoadHandler(items);\n this._setReadyStatus(statusRanges, RangeReadyStatus.Ready);\n } catch (ex) {\n if (Axios.isCancel(ex)) {\n this._setReadyStatus(statusRanges, RangeReadyStatus.None);\n return;\n }\n\n this._setReadyStatus(statusRanges, RangeReadyStatus.Error);\n throw ex;\n }\n }\n\n public getStatus(item: string): RangeReadyStatus {\n const ranges = this._personStatusesMap.get(item);\n if (!ranges) {\n return RangeReadyStatus.None;\n }\n\n let maxStatus = RangeReadyStatus.None;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n maxStatus = maxStatus < range.status ? range.status : maxStatus;\n }\n\n return maxStatus;\n }\n\n @action.bound\n public clear() {\n this._personStatusesMap.clear();\n }\n\n private _isLoadingRequired(item: string) {\n const ranges = this._personStatusesMap.get(item);\n if (!ranges) {\n return true;\n }\n\n let isLoadingNeeded = true;\n for (let i = 0; i < ranges.length; i++) {\n const statusRange = ranges[i];\n if (statusRange.status === RangeReadyStatus.Loading) {\n isLoadingNeeded = false;\n break;\n }\n if (statusRange.status === RangeReadyStatus.Ready) {\n isLoadingNeeded = false;\n break;\n }\n }\n\n return isLoadingNeeded;\n }\n\n @action.bound\n private _setLoadingStatus(items: string[]) {\n const result: ItemStatus[] = [];\n items.forEach((item) => {\n let personStatuses = this._personStatusesMap.get(item);\n if (!personStatuses) {\n this._personStatusesMap.set(item, []);\n personStatuses = this._personStatusesMap.get(item) || [];\n }\n const loadingStatus = {\n item: item,\n status: RangeReadyStatus.Loading,\n timestamp: DateTimeService.now()\n };\n personStatuses.push(loadingStatus);\n result.push(personStatuses[personStatuses.length - 1]);\n });\n return result;\n }\n\n @action.bound\n private _setReadyStatus(rangeStatuses: ItemStatus[], status: RangeReadyStatus) {\n rangeStatuses.forEach((rs) => {\n rs.status = status;\n const personStatuses = this._personStatusesMap.get(rs.item);\n if (personStatuses) {\n for (let i = personStatuses.length - 1; i >= 0; i--) {\n const personStatus = personStatuses[i];\n if (rs !== personStatus && (personStatus.status === RangeReadyStatus.Ready || personStatus.status === RangeReadyStatus.Error)) {\n personStatuses.splice(i, 1);\n }\n }\n }\n });\n }\n\n public async refreshVisibleViewport(viewportRange: Range, personIds: string[]) {\n const personIdsToRefresh: string[] = [];\n\n const viewportPersonsIds: string[] = [];\n for (let i = viewportRange.from; i < viewportRange.to; i++) {\n const personId = this._personStore.filteredPersons[i].id;\n viewportPersonsIds.push(personId);\n }\n\n personIds.forEach(id => {\n if (viewportPersonsIds.includes(id) && this._personStatusesMap.has(id)) {\n personIdsToRefresh.push(id);\n } else {\n this._personStatusesMap.delete(id);\n }\n });\n\n if (personIdsToRefresh.length) {\n await this.reloadItems(personIdsToRefresh);\n }\n }\n}\n","import { DutyItem, RosterType } from '@app/Models/WebApiModels';\n\nimport { Sizes } from '@app/AppConstants/Sizes';\nimport { SelectionStrategyConstructor } from './SelectionStrategies/BaseRosterSelectionStrategy';\nimport { Range } from './Stores/Range';\nimport { IPersonStore } from './Stores/IPersonStore';\nimport { RosterViewState } from './RosterViewState';\n\nimport { DutyLineRenderExtrasCallback, DoubleClickCallback, DutyLineRenderDetailsCallback } from '@app/Components/RosterLine';\nimport { LicensesClickHandler, PersonListRenderExtraFiguresCallback } from '../PersonsListItem';\nimport { DrawDayCssClassNameHandler, DrawDayExtensionsHandler, DrawMonthExtensionsHandler } from './Components';\nimport HistorizationStore from '@app/Stores/HistorizationStore';\nimport { HomeFiltersState } from '@app/Pages/Home/Models';\n\nexport interface IVirtualizedRoster {\n selectedRowIndex: number | null;\n selectedColumnIndex: number | null;\n selectedRowNumber: number | null;\n datesRange: number;\n selectedCells: RosterElement[];\n cellWidthPx: number;\n setFocusedElement: (element: RosterElement) => void;\n}\n\nexport type DrawElementOptions = {\n viewportDays: Date[];\n virtualHeight: number;\n virtualWidth: number;\n viewportTop: number;\n viewportLeft: number;\n};\n\nexport type DrawChildElementOptions = DrawElementOptions & {\n ref: React.RefObject;\n};\n\nexport enum NavigateBehavior {\n center,\n topLeft\n}\n\nexport type DrawElementHandler = (roster: IVirtualizedRoster, options: DrawElementOptions) => JSX.Element | null;\nexport type DrawChildElementHandler = (roster: IVirtualizedRoster, options: DrawChildElementOptions) => JSX.Element | null;\n\nexport type RefHandler = (ref: React.RefObject) => void;\n\nexport type RosterElement = {\n personId: string;\n dateUtc: number;\n};\n\nexport enum SelectionMode {\n NormalMultiSelect,\n SingleRange,\n StickyDayRange\n}\n\nexport enum ActionInitiator {\n Code,\n Keyboard,\n DragCopy,\n DragMove\n}\n\nexport enum RosterZoom {\n x1,\n x2,\n x4,\n x8,\n x16\n}\n\nexport type DragEffect = 'move' | 'copy' | 'none';\n\ntype CellFocusedHandler = (element: RosterElement | null) => void;\ntype CellSelectedHandler = (elements: RosterElement[]) => void;\ntype ScrollHandler = (scrollTop: number, scrollLeft: number, saveConfig?: boolean) => void;\nexport type CanCopyHandler = (initiator: ActionInitiator | null, duties: DutyItem[]) => boolean;\ntype PasteDutyHandler = (initiator: ActionInitiator, duties: DutyItem[]) => void;\ntype DateRangeLoadHandler = (viewportRange: Range | null, fullRange: Range | null, loadMode: LoadMode, refreshOptions?: { range: Range, personIds: string[], isValidation: boolean, functionGroupId?: string, functionId?: string }) => void;\ntype PersonRangeLoadHandler = (viewportRange: Range | null, refreshPersonIds: string[] | null, loadMode: LoadMode) => void;\n\nexport type VirtualizedRosterProps = {\n className: string;\n hidden?: boolean;\n\n type: RosterType;\n\n personsStore: IPersonStore;\n viewState: RosterViewState;\n historizationStore?: HistorizationStore;\n\n filterState?: HomeFiltersState | null;\n\n allowedDateRange?: Array> | Range | null;\n showCapacityNumbers?: boolean;\n\n personInfoWidthPx?: number;\n bottomInfoHeightPx?: number;\n lineInfoHeight?: number;\n initialZoom?: RosterZoom;\n showZoomControls?: boolean;\n noWrapper?: boolean;\n\n showPersonList?: boolean;\n showFocusedPersonDay?: boolean;\n selectionMode?: SelectionMode;\n selectionStrategy?: SelectionStrategyConstructor;\n autoExpandPeriod?: boolean;\n showSwissTime?: boolean;\n highlightMajorMonth?: boolean;\n\n onStartDragDuty?: (sourceElement: Element | null, isAllowCopying?: boolean) => boolean;\n onDragOverDuty?: (targetElement: Element, isCopy: boolean) => DragEffect;\n onDragEndDuty?: () => void;\n onDropDuty?: (targetElement: Element, isCopy: boolean) => void;\n\n onRenderHeader?: DrawElementHandler;\n onRenderFooter?: DrawElementHandler;\n onRenderPersonList?: DrawChildElementHandler;\n\n onRenderCustomDate?: DrawDayExtensionsHandler;\n onRenderDayExtensions?: DrawDayExtensionsHandler;\n onRenderDayCssClassName?: DrawDayCssClassNameHandler;\n onRenderMonthExtensions?: DrawMonthExtensionsHandler;\n onRenderDailyFigures?: DrawDayExtensionsHandler;\n onRenderRosterFilter?: DrawDayExtensionsHandler;\n onRenderDaysListExtensions?: (datesListRef: React.RefObject) => JSX.Element | null;\n\n onRenderCellExtras?: DutyLineRenderExtrasCallback;\n onRenderCellDetails?: DutyLineRenderDetailsCallback;\n\n onRenderPersonExtraInfo?: PersonListRenderExtraFiguresCallback;\n onRenderGridExtras?: DrawChildElementHandler;\n onPersonLicenseClick?: LicensesClickHandler;\n\n onCellFocused?: CellFocusedHandler;\n onCellSelected?: CellSelectedHandler;\n onScroll?: ScrollHandler;\n\n //TODO: START: review later\n height?: number;\n //TODO: END\n\n onCanCopyDuties?: CanCopyHandler;\n onPasteDuties?: PasteDutyHandler;\n onCellDoubleClick?: DoubleClickCallback;\n\n onMajorMonthChange?: (day: Date) => void;\n onSaveViewState?: (viewState: RosterViewState) => void;\n onDateRangeLoad?: DateRangeLoadHandler;\n onPersonRangeLoad?: PersonRangeLoadHandler;\n onPlanningDutyPeriodStatusLoad?: () => void;\n onZoom?: (e: RosterZoom) => void;\n\n gridRef?: RefHandler;\n};\n\nexport enum LoadMode {\n Viewport,\n Refresh,\n Clean,\n RefreshVisible\n}\n\nexport type RefreshRosterLineDto = {\n personId?: string;\n hasDutyChanges: boolean;\n dateFromUtc: Date | null;\n dateToUtc: Date | null;\n isValidation: boolean;\n functionGroupId?: string;\n functionId?: string;\n};\n\nexport const getZoomMultiplier = (zoom: RosterZoom) => {\n switch (zoom) {\n case RosterZoom.x1:\n return 8;\n case RosterZoom.x2:\n return 4;\n case RosterZoom.x4:\n return 2;\n case RosterZoom.x8:\n return 1;\n default:\n throw new Error(`Zoom ${zoom} is not supported`);\n }\n};\n\nexport const getDayWidth = (zoom: RosterZoom) => {\n return Sizes.dutyWidths * getZoomMultiplier(zoom);\n};\n\nexport * from './Stores/IPersonStore';\nexport * from './Stores/Range';\nexport * from './Stores/RangeStore';\nexport * from './Stores/SinglePersonStore';\nexport * from './RosterViewState';\n","import { observable, computed } from 'mobx';\nimport Axios, { CancelTokenSource } from 'axios';\n\nimport { PersonInfoModel, PersonModel, ApiClient, IGetPersonInfoParams } from '@app/Models/WebApiModels';\nimport { RangeReadyStatus } from './Range';\nimport { IPersonStore } from './IPersonStore';\n\nimport { PromiseCompletion, CompletionType } from '@app/Classes/PromiseCompletion';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\ntype ChangeSubscriber = () => void;\n\ntype PersonModelDto = Omit;\n\nexport class SinglePersonStore implements IPersonStore {\n @observable private _person: PersonModelDto | null;\n @observable private _personInfo: PersonInfoModel | null = null;\n private _dataLoading: PromiseCompletion;\n private _apiClient: ApiClient = new ApiClient();\n private _requestId: string | null = null;\n public date: Date | null = null;\n\n private _cancellationSourceAdditional: CancelTokenSource;\n private _changeSubscriptions: ChangeSubscriber[] = [];\n\n constructor(person: PersonModelDto | null) {\n applyDecorators(this);\n this._person = person;\n this._dataLoading = new PromiseCompletion(CompletionType.Completed);\n this._dataLoading.subscribe(Promise.resolve());\n }\n\n public onChangeSource(callback: ChangeSubscriber) {\n this._changeSubscriptions.push(callback);\n }\n\n private _cancelAdditionalData() {\n this._cancellationSourceAdditional?.cancel();\n this._cancellationSourceAdditional = Axios.CancelToken.source();\n }\n\n public updatePerson(person: PersonModelDto | null) {\n this._person = person;\n this._cancelAdditionalData();\n this._changeSubscriptions.forEach((s) => s());\n }\n\n public updateInfo(info: PersonInfoModel | null) {\n this._personInfo = info;\n this.date = null;\n }\n\n public async reloadInfo(date: Date) {\n if (this.isEmpty) {\n throw new Error(`Can't load infor on ${DateTimeService.toUiTimestamp(date)} because person is not defined`);\n }\n\n this.date = date;\n const requestId = Math.random().toString();\n this._requestId = requestId;\n\n const params: IGetPersonInfoParams = {\n date: date\n };\n if (this._person) params.personIds = [this._person.id];\n\n const { data: personInfos } = await this._apiClient.personInfoGet(params, { completion: this._dataLoading, cancellationToken: this._cancellationSourceAdditional?.token });\n\n if (requestId === this._requestId) {\n this._personInfo = personInfos[0];\n }\n }\n\n public get isEmpty() {\n return !this._person;\n }\n\n public get dataLoading(): PromiseCompletion {\n return this._dataLoading;\n }\n\n @computed\n public get filteredPersons() {\n return this._person ? [this._person] : [];\n }\n\n public getDetails() {\n return this._personInfo;\n }\n\n public getPerson(personId: string) {\n return this._person && this._person.id === personId ? this._person : null;\n }\n\n public loadViewport() {}\n public loadPersonInfo() { }\n\n public getStatus() {\n return this._dataLoading.isPending ? RangeReadyStatus.Loading : RangeReadyStatus.Ready;\n }\n}\n","import { observable, ObservableMap, action, transaction } from 'mobx';\nimport Axios, { CancelTokenSource } from 'axios';\n\nimport { DutyItem, PersonModel, ApiClient, RosterType } from '@app/Models/WebApiModels';\nimport { DutyItemCache } from '@app/Models';\nimport { Range, RangeReadyStatus } from './Range';\n\nimport DateTimeService from '@app/Services/DateTimeService';\nimport Extensions from '@app/Services/Extensions';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\ntype PersonDayRange = {\n personId: string;\n dateFrom: Date;\n dateTo: Date;\n status: RangeReadyStatus;\n};\n\ntype PersonMapItem = {\n ranges: PersonDayRange[];\n};\n\ntype PersonModelDto = Omit;\n\nexport interface IBaseDutyStore {\n dutyList: Map>;\n getDutyStatus(personId: string, date: Date): RangeReadyStatus;\n}\n\nexport interface IDutyStore extends IBaseDutyStore {\n loadViewport(persons: PersonModelDto[], viewportPersonRange: Range, viewportDayRange: Range, totalDayRange: Range): void;\n loadDuties(dateRange: Range, personIds: string[]): PromiseLike;\n setDuties(duties: DutyItem[]): void;\n clear(keepViewport: boolean): void;\n invalidate(personId: string, range: Range): void;\n setType(rosterType: string): void;\n cancel(): void;\n}\n\nexport class DutyStore implements IDutyStore {\n @observable.shallow dutyList: Map> = new Map();\n private _cancellationSource: CancelTokenSource;\n private _apiClient: ApiClient = new ApiClient();\n private _rosterType: RosterType;\n private _packagePersons: number = 10;\n private _marginPerson: number = 2;\n\n private _maxDuties: number = 6 * 30 * 30 * 2; // 6 month to 30 persons twice, can be optimized\n private _dutyCounter: number = 0;\n\n @observable.shallow private _dutyMap: Map = new Map();\n\n private _viewportDayFrom: Date = DateTimeService.today();\n private _viewportDayTo: Date = DateTimeService.today();\n private _viewportPersonIds: string[] = [];\n\n private _loadedRanges: PersonDayRange[] = [];\n\n constructor(rosterType: RosterType) {\n applyDecorators(this);\n this.setType(rosterType);\n this._cancellationSource = Axios.CancelToken.source();\n }\n\n public setType(rosterType: RosterType) {\n this._rosterType = rosterType;\n }\n\n public cancel() {\n this._cancellationSource?.cancel('Clear');\n this._cancellationSource = Axios.CancelToken.source();\n }\n\n @action\n public clear(keepViewport: true) {\n this.cancel();\n transaction(() => {\n !keepViewport ? this.dutyList.clear() : this._cleanUp(0);\n this._dutyMap.clear();\n this._loadedRanges.length = 0;\n this._dutyCounter = this._getDutyCount();\n });\n }\n\n private _getDutyCount() {\n let result = 0;\n this.dutyList.forEach((p) => {\n result += p.size;\n });\n return result;\n }\n\n //persons: full list of available persons\n //viewportPersonRange: actual persons to be displayed on the screen\n //viewportDayRange: actual days to be displayed on the screen\n //totalDayRange: all days available to scroll\n public loadViewport(persons: PersonModel[], viewportPersonRange: Range, viewportDayRange: Range, totalDayRange: Range) {\n this._viewportDayFrom = viewportDayRange.from;\n this._viewportDayTo = viewportDayRange.to;\n this._viewportPersonIds = persons.slice(viewportPersonRange.from, viewportPersonRange.to + 1).map((x) => x.id);\n\n let personIndexFrom = viewportPersonRange.from;\n let personIndexTo = viewportPersonRange.to;\n\n const indexFromWithFullPrefetch = personIndexFrom - this._marginPerson < 0 ? 0 : personIndexFrom - this._marginPerson;\n const indexToWithFullPrefetch = personIndexTo + this._marginPerson > persons.length - 1 ? persons.length - 1 : personIndexTo + this._marginPerson;\n\n let dateFrom = viewportDayRange.from.getUTCDate() <= 15 ? DateTimeService.toFirstDayOfMonth(viewportDayRange.from) : DateTimeService.date(viewportDayRange.from.getUTCFullYear(), viewportDayRange.from.getUTCMonth(), 16);\n if (dateFrom < totalDayRange.from) {\n dateFrom = totalDayRange.from;\n }\n if (viewportDayRange.from <= dateFrom && dateFrom.getUTCFullYear() >= 2023 && dateFrom.getUTCMonth() + 1 === 1 && dateFrom.getUTCDate() === 1){\n //load till previous period start\n dateFrom = DateTimeService.date(dateFrom.getUTCFullYear() - 1, 11, 1 + 15);\n }\n\n let dateTo = viewportDayRange.to.getUTCDate() >= 16 ? DateTimeService.toLastDayOfMonth(viewportDayRange.to) : DateTimeService.date(viewportDayRange.to.getUTCFullYear(), viewportDayRange.to.getUTCMonth(), 15);\n if (dateTo > totalDayRange.to) {\n dateTo = totalDayRange.to;\n }\n if (dateTo.getUTCFullYear() >= 2022 && dateTo.getUTCMonth() + 1 === 12 && dateTo.getUTCDate() === 31){\n dateTo = DateTimeService.addDays(dateTo, 1);\n }\n\n if (dateFrom > dateTo) {\n throw new Error(`dateFrom ${dateFrom} can't be less than dateTo ${dateTo}`);\n }\n\n //split to ranges up to 1 month, december is till 1jan\n const dateRanges: Range[] = [];\n let currentDateFrom = dateFrom;\n while (currentDateFrom < dateTo) {\n let currentDateTo: Date;\n \n if (currentDateFrom.getUTCDate() < 15){\n currentDateTo = DateTimeService.addDays(currentDateFrom, 14);\n } else {\n currentDateTo = DateTimeService.toLastDayOfMonth(currentDateFrom);\n }\n\n if (currentDateTo > dateTo) {\n currentDateTo = dateTo;\n }\n\n let monthPeriodFrom = currentDateFrom;\n if (monthPeriodFrom.getUTCFullYear() >= 2023 && monthPeriodFrom.getUTCMonth() + 1 === 1 && monthPeriodFrom.getUTCDate() === 1){\n monthPeriodFrom = DateTimeService.addDays(monthPeriodFrom, 1);\n }\n let monthPeriodTo = currentDateTo;\n if (monthPeriodTo.getUTCFullYear() >= 2022 && monthPeriodTo.getUTCMonth() + 1 === 12 && monthPeriodTo.getUTCDate() === 31){\n monthPeriodTo = DateTimeService.addDays(monthPeriodTo, 1);\n }\n\n dateRanges.push({\n from: monthPeriodFrom,\n to: monthPeriodTo\n });\n\n currentDateFrom = DateTimeService.addDays(currentDateTo, 1);\n }\n\n for(let rangeIndex = 0 ; rangeIndex < dateRanges.length; rangeIndex++){\n const dateRange = dateRanges[rangeIndex];\n const nextRange = dateRanges[rangeIndex + 1];\n\n const personIds: string[] = [];\n const prefetchPersonIds: string[] = [];\n\n const canMergeWithNext = nextRange && nextRange.from.getUTCMonth() == dateRange.from.getUTCMonth();\n const mergedPersonIds: string[] = [];\n const mergedPrefetchPersonIds: string[] = [];\n const mergedRange: Range | null = nextRange ? { from: dateRange.from, to: nextRange.to } : null;\n\n for (let i = indexFromWithFullPrefetch; i <= indexToWithFullPrefetch; i++) {\n const person = persons[i];\n\n if (!this._isPersonRangeLoadingRequired(person.id, dateRange)) {\n continue;\n }\n\n const shouldMerge = nextRange && canMergeWithNext && this._isPersonRangeLoadingRequired(person.id, nextRange);\n\n if (i < personIndexFrom || i > personIndexTo) {\n shouldMerge ? mergedPrefetchPersonIds.push(person.id) : prefetchPersonIds.push(person.id);\n continue;\n }\n\n shouldMerge ? mergedPersonIds.push(person.id) : personIds.push(person.id);\n }\n\n personIds.push(...prefetchPersonIds);\n while (personIds.length) {\n const personIdsToLoad = personIds.splice(0, this._packagePersons);\n void this.loadDuties(dateRange, personIdsToLoad);\n }\n \n mergedPersonIds.push(...mergedPrefetchPersonIds);\n while (mergedRange && mergedPersonIds.length) {\n const personIdsToLoad = mergedPersonIds.splice(0, this._packagePersons);\n void this.loadDuties(mergedRange, personIdsToLoad);\n }\n }\n }\n\n public async loadDuties(dateRange: Range, personIds: string[]) {\n const params = {\n rosterType: this._rosterType,\n dateFrom: dateRange.from,\n dateTo: dateRange.to,\n personIds: personIds.join(',')\n };\n\n const personsDayRanges = this._setLoadingStatus(dateRange, personIds);\n try {\n const { data: dutyResponse } = await this._apiClient.dutyGet(params, { cancellationToken: this._cancellationSource.token });\n this._resultToMap(dutyResponse, () => this._setReadyStatus(personsDayRanges, RangeReadyStatus.Ready));\n } catch (er) {\n if (Axios.isCancel(er)) {\n this._setReadyStatus(personsDayRanges, RangeReadyStatus.None);\n return;\n }\n this._setReadyStatus(personsDayRanges, RangeReadyStatus.Error);\n throw er;\n } finally {\n Extensions.executeTimeout(this._cleanUp, 500);\n }\n }\n\n public setDuties(duties: DutyItem[]) {\n transaction(() => {\n duties.forEach((dayData) => {\n const personDutyMap = this.dutyList.get(dayData.personId) || observable.map(new Map(), { deep: false });\n const key = dayData.date.getTime();\n const duty = personDutyMap && personDutyMap.get(key);\n if (!duty || dayData.timestampDateTimeUtc >= duty.timestampDateTimeUtc) {\n if (!duty) {\n this._dutyCounter++;\n }\n personDutyMap.set(key, dayData);\n this.dutyList.set(dayData.personId, personDutyMap);\n }\n });\n });\n }\n\n @action\n private _resultToMap(data: Array, transactionAction?: Function) {\n transaction(() => {\n data.forEach((item: DutyItem) => {\n const personDutyMap = this.dutyList.get(item.personId) || observable.map(new Map(), { deep: false });\n const isNew = !personDutyMap.size;\n if (!isNew) {\n const hasDuty = personDutyMap.has(item.date.getTime());\n if (!hasDuty) {\n this._dutyCounter++;\n }\n }\n personDutyMap.set(item.date.getTime(), item);\n if (isNew) {\n this.dutyList.set(item.personId, personDutyMap);\n this._dutyCounter++;\n }\n });\n if (transactionAction) transactionAction();\n });\n }\n\n private _setLoadingStatus(dateRange: Range, personIds: string[]) {\n const result: PersonDayRange[] = [];\n personIds.forEach((personId) => {\n let personMapItem = this._dutyMap.get(personId);\n if (!personMapItem) {\n personMapItem = {\n ranges: observable.array([], { deep: false })\n };\n this._dutyMap.set(personId, personMapItem);\n personMapItem = this._dutyMap.get(personId) || personMapItem;\n }\n\n const range: PersonDayRange = {\n personId: personId,\n dateFrom: dateRange.from,\n dateTo: dateRange.to,\n status: RangeReadyStatus.Loading\n };\n\n personMapItem.ranges.push(range);\n const newItem = personMapItem.ranges[personMapItem.ranges.length - 1];\n\n this._loadedRanges.push(newItem);\n result.push(newItem);\n });\n\n return result;\n }\n\n private _setReadyStatus(ranges: PersonDayRange[], status: RangeReadyStatus) {\n ranges.forEach((range) => {\n const personMapItem = this._dutyMap.get(range.personId);\n if (!personMapItem) {\n return;\n }\n\n range.status = status;\n for (let i = personMapItem.ranges.length - 1; i >= 0; i--) {\n const currentRange = personMapItem.ranges[i];\n const isThisRange = currentRange === range;\n if (isThisRange || (currentRange.status !== RangeReadyStatus.Ready && currentRange.status !== RangeReadyStatus.Error)) {\n continue;\n }\n if (range.dateTo >= currentRange.dateFrom && range.dateFrom <= currentRange.dateTo) {\n if (range.status === currentRange.status) {\n range.dateFrom = DateTimeService.min(range.dateFrom, currentRange.dateFrom);\n range.dateTo = DateTimeService.max(range.dateTo, currentRange.dateTo);\n personMapItem.ranges.splice(i, 1);\n const index = this._loadedRanges.findIndex((x) => x.personId === currentRange.personId && DateTimeService.isSameDate(currentRange.dateTo, x.dateTo) && DateTimeService.isSameDate(currentRange.dateFrom, x.dateFrom));\n if (index > -1) {\n this._loadedRanges.splice(index, 1);\n }\n continue;\n }\n\n //cut existing range left\n if (currentRange.dateTo > range.dateFrom) {\n currentRange.dateTo = DateTimeService.addDays(range.dateFrom, -1);\n const index = this._loadedRanges.findIndex((x) => x.personId === currentRange.personId && DateTimeService.isSameDate(currentRange.dateTo, x.dateTo) && DateTimeService.isSameDate(currentRange.dateFrom, x.dateFrom));\n if (index !== -1) {\n this._loadedRanges[index].dateTo = currentRange.dateTo;\n }\n if (currentRange.dateTo <= currentRange.dateFrom) {\n personMapItem.ranges.splice(i, 1);\n if (index > -1) {\n this._loadedRanges.splice(index, 1);\n }\n continue;\n }\n }\n\n //cut existing range right\n if (currentRange.dateFrom < range.dateTo) {\n currentRange.dateFrom = DateTimeService.addDays(range.dateTo, 1);\n const index = this._loadedRanges.findIndex((x) => x.personId === currentRange.personId && DateTimeService.isSameDate(currentRange.dateTo, x.dateTo) && DateTimeService.isSameDate(currentRange.dateFrom, x.dateFrom));\n if (index !== -1) {\n this._loadedRanges[index].dateTo = currentRange.dateTo;\n }\n if (currentRange.dateTo <= currentRange.dateFrom) {\n personMapItem.ranges.splice(i, 1);\n if (index > -1) {\n this._loadedRanges.splice(index, 1);\n }\n continue;\n }\n }\n }\n }\n this._dutyMap.set(range.personId, {...personMapItem});\n });\n }\n\n public getDutyStatus(personId: string, date: Date): RangeReadyStatus {\n const personMapItem = this._dutyMap.get(personId);\n if (!personMapItem) {\n return RangeReadyStatus.None;\n }\n\n let maxStatus = RangeReadyStatus.None;\n const ranges = personMapItem.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (range.dateFrom <= date && date <= range.dateTo) {\n maxStatus = maxStatus < range.status ? range.status : maxStatus;\n }\n }\n\n return maxStatus;\n }\n\n private _isPersonRangeLoadingRequired(personId: string, range: Range) {\n const personMapItem = this._dutyMap.get(personId);\n if (!personMapItem) {\n return true;\n }\n\n const ranges = personMapItem.ranges;\n let isLoadingNeeded = true;\n let isFullyReady = true;\n let hasRanges = false;\n\n for (let i = 0; i < ranges.length; i++) {\n const statusRange = ranges[i];\n if (range.from >= statusRange.dateFrom && range.to <= statusRange.dateTo) {\n hasRanges = true;\n\n if (statusRange.status === RangeReadyStatus.Loading) {\n isLoadingNeeded = false;\n break;\n }\n\n if (statusRange.status !== RangeReadyStatus.Ready) {\n isFullyReady = false;\n }\n }\n }\n\n if (hasRanges && isFullyReady) {\n return false;\n }\n\n return isLoadingNeeded;\n }\n\n @action\n public invalidate(personId: string, range: Range) {\n if (!this._viewportPersonIds.includes(personId) || range.to < this._viewportDayFrom || range.from > this._viewportDayTo) {\n let personMapItem = this._dutyMap.get(personId);\n if (!personMapItem) {\n personMapItem = {\n ranges: observable.array([], { deep: false })\n };\n }\n\n for (let i = personMapItem.ranges.length - 1; i >= 0; i--) {\n const currentRange = personMapItem.ranges[i];\n\n if (range.to >= currentRange.dateFrom && range.to <= currentRange.dateTo) {\n const part1 = { ...currentRange, dateTo: DateTimeService.addDays(range.from, -1) };\n const part2 = { ...currentRange, dateFrom: range.from, dateTo: range.to, status: RangeReadyStatus.None };\n const part3 = { ...currentRange, dateFrom: DateTimeService.addDays(range.to, 1) };\n personMapItem.ranges.splice(i, 1, part1, part2, part3);\n\n const index = this._loadedRanges.findIndex((x) => x.personId === currentRange.personId && DateTimeService.isSameDate(currentRange.dateTo, x.dateTo) && DateTimeService.isSameDate(currentRange.dateFrom, x.dateFrom));\n if (index > -1) {\n this._loadedRanges.splice(index, 1, part1, part2, part3);\n }\n }\n }\n this._dutyMap.set(personId, { ...personMapItem });\n } else {\n void this.loadDuties(range, [personId]);\n }\n }\n\n @action.bound\n private _cleanUp(maxDuties?: number) {\n const maxRounds = this._loadedRanges.length;\n let round = 0;\n while (this._dutyCounter > (maxDuties || this._maxDuties)) {\n round++;\n if (round > maxRounds) return;\n const personMapItem = this._loadedRanges.shift();\n if (!personMapItem) return;\n\n if (personMapItem.status > 1) {\n if (!this._viewportPersonIds.includes(personMapItem.personId) || personMapItem.dateTo < this._viewportDayFrom || personMapItem.dateFrom > this._viewportDayTo) {\n const personItem = this._dutyMap.get(personMapItem.personId);\n const dutyMap = this.dutyList.get(personMapItem.personId);\n\n if (!personItem || !dutyMap) {\n continue;\n }\n\n const { dateFrom, dateTo, status, personId } = personMapItem;\n const id = personItem.ranges.findIndex((el) => el.personId === personId && el.status === status && DateTimeService.isSameDate(el.dateFrom, dateFrom) && DateTimeService.isSameDate(el.dateTo, dateTo));\n if (id > -1) {\n personItem.ranges.splice(id, 1);\n }\n\n const dutyDates = DateTimeService.range(personMapItem.dateFrom, personMapItem.dateTo);\n for (const date of dutyDates) {\n const isDeleted = dutyMap.delete(date.getTime());\n if (isDeleted) {\n this._dutyCounter--;\n }\n }\n } else {\n this._loadedRanges.push(personMapItem);\n }\n } else {\n this._loadedRanges.push(personMapItem);\n }\n }\n }\n}\n","import React from 'react';\nimport { observer } from 'mobx-react';\nimport { action, observable } from 'mobx';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { DrawMonthExtensionsHandler } from '@app/Components/FlightsGanttView/VirtualDaysList';\nimport { RosterZoom } from '..';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype VirtualDateMonthProps = {\n scrollWrapperRef: React.RefObject;\n datesListRef: React.RefObject;\n day: Date;\n scrollLeft: number;\n cellWidth: number;\n width: number;\n zoom?: RosterZoom;\n highlight?: boolean;\n\n onRenderMonthExtensions?: DrawMonthExtensionsHandler;\n};\n\n@observer\nexport class VirtualDateMonth extends React.Component {\n private _monthRef: React.RefObject = React.createRef();\n private _contentRef: React.RefObject = React.createRef();\n private _lastUpdatedScrollLeft: number = 0;\n @observable private _contentLeftProp: number = 0;\n\n constructor(props: VirtualDateMonthProps) {\n super(props);\n applyDecorators(this);\n this._lastUpdatedScrollLeft = props.scrollLeft;\n }\n \n componentDidMount() {\n this.props.scrollWrapperRef.current?.addEventListener('scroll', this._handleRosterScroll);\n this._contentLeftProp = this._getMonthContentLeftProp();\n }\n\n componentDidUpdate(prevProps: Readonly) {\n if (prevProps.width !== this.props.width) {\n this._lastUpdatedScrollLeft = this.props.scrollLeft;\n this.updateLeftProp();\n }\n }\n\n componentWillUnmount() {\n this.props.scrollWrapperRef.current?.removeEventListener('scroll', this._handleRosterScroll);\n }\n\n render() {\n const { day, width, onRenderMonthExtensions } = this.props;\n\n return (\n
\n
\n {this._renderMonthTitle(DateTimeService.toCustomUiFormat(day, 'MMMM / YYYY'))}\n {onRenderMonthExtensions && onRenderMonthExtensions(day)}\n
\n
\n );\n }\n\n @action.bound\n public updateLeftProp() {\n this._contentLeftProp = this._getMonthContentLeftProp();\n }\n\n private _renderMonthTitle(text: string) {\n if (this.props.highlight) {\n return {text};\n }\n\n return text;\n }\n\n private _getMonthContentLeftProp() {\n const datesListRect = this._getDatesListRect();\n const monthRect = this._getMonthRect();\n const contentRect = this._getContentRect();\n\n if (!datesListRect || !monthRect || !contentRect) return 0;\n\n const posStart = monthRect.left > datesListRect.left && monthRect.left < datesListRect.right ? monthRect.left : datesListRect.left;\n const posEnd = monthRect.right < datesListRect.right && monthRect.right > datesListRect.left ? monthRect.right : datesListRect.right;\n\n const viewportWidth = posEnd - posStart;\n\n const isOnLeft = posEnd < datesListRect.right;\n const isOnRight = posStart > datesListRect.left;\n const isOnMiddle = isOnLeft && isOnRight;\n\n if (isOnLeft) {\n const widthDiff = this.props.width - viewportWidth;\n const middlePos = viewportWidth / 2 - contentRect.width / 2;\n\n return widthDiff + middlePos;\n }\n\n if (isOnRight || isOnMiddle) {\n const middlePos = viewportWidth / 2 - contentRect.width / 2;\n\n if (middlePos < 0)\n return 0;\n\n return middlePos;\n }\n\n const scrollLeft = this.props.scrollWrapperRef.current?.scrollLeft || this.props.scrollLeft;\n const scrollDiff = scrollLeft % this.props.cellWidth;\n\n const middlePos = viewportWidth / 2 - contentRect.width / 2;\n\n return middlePos + scrollDiff;\n }\n\n @action.bound\n private _handleRosterScroll(event: Event) {\n const target = event.target as HTMLElement;\n\n if (Math.abs(target.scrollLeft - this._lastUpdatedScrollLeft) > this._getScrollBreakpoint()) {\n this._lastUpdatedScrollLeft = target.scrollLeft;\n this.updateLeftProp();\n }\n }\n\n private _getScrollBreakpoint() {\n const { zoom, cellWidth } = this.props;\n\n switch (zoom) {\n case RosterZoom.x1: \n return cellWidth / 5;\n case RosterZoom.x2: \n return cellWidth / 3;\n case RosterZoom.x4: \n return cellWidth / 2;\n default:\n return cellWidth;\n }\n }\n\n private _getDatesListRect() {\n return this.props.datesListRef.current?.getBoundingClientRect();\n }\n \n private _getMonthRect() {\n return this._monthRef.current?.getBoundingClientRect();\n }\n\n private _getContentRect() {\n return this._contentRef.current?.getBoundingClientRect();\n }\n}\n","import React from 'react';\nimport { observer } from 'mobx-react';\n\nimport { Range, RosterZoom } from '..';\n\nimport DateTimeService from '@app/Services/DateTimeService';\n\nimport { VirtualHorizontalExpander } from '.';\nimport { VirtualDateMonth } from './VirtualDateMonth';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\nexport type DrawDayCounterHandler = (date: Date) => number | null;\nexport type DrawDayExtensionsHandler = (date: Date) => JSX.Element | null;\nexport type DrawMonthExtensionsHandler = (date: Date) => JSX.Element | null;\nexport type DrawDayFilterHandler = (date: Date) => JSX.Element | null;\nexport type DrawDayCssClassNameHandler = (date: Date) => string;\n\ntype VirtualDaysListProps = {\n datesListRef: React.RefObject;\n scrollWrapperRef: React.RefObject;\n style: React.CSSProperties;\n days: Date[];\n virtualWidth: number;\n allowedDateRange?: Array> | Range | null;\n scrollLeft: number;\n cellWidth: number;\n zoom?: RosterZoom;\n showSwissTime?: boolean;\n majorMonth?: Date | null;\n\n onRenderCustomDate?: DrawDayExtensionsHandler;\n onRenderDayExtensions?: DrawDayExtensionsHandler;\n onRenderDayCssClassName?: DrawDayCssClassNameHandler;\n onRenderMonthExtensions?: DrawMonthExtensionsHandler;\n onRenderDailyFigures?: DrawDayExtensionsHandler;\n onRenderRosterFilter?: DrawDayExtensionsHandler;\n};\n\n@observer\nexport class VirtualDaysList extends React.Component {\n \n constructor (props:VirtualDaysListProps) {\n super(props);\n applyDecorators(this);\n }\n \n render () {\n const {\n style,\n days,\n virtualWidth,\n scrollLeft,\n cellWidth,\n datesListRef,\n scrollWrapperRef,\n showSwissTime,\n zoom,\n onRenderCustomDate,\n onRenderDayExtensions,\n onRenderDayCssClassName,\n onRenderMonthExtensions,\n onRenderDailyFigures,\n onRenderRosterFilter\n } = this.props;\n const dates: Array = [];\n let newMonth = true;\n let time: JSX.Element | null = null;\n\n days.forEach((day) => {\n const curMonth = new Date(day.getFullYear(), day.getMonth() + 1, 0);\n\n if (newMonth) {\n const lastInRange = days[days.length - 1];\n const daysCount = this._getDaysCount(day, lastInRange);\n const width = daysCount * cellWidth;\n\n dates.push(\n \n );\n newMonth = false;\n }\n if (curMonth.getDate() === day.getDate()) {\n newMonth = true;\n }\n const dateClass = ['person-grid-date'];\n if (day.getUTCDate() === 1) dateClass.push('person-grid-period');\n if (day.getUTCDay() === 6 || day.getUTCDay() === 0) dateClass.push('weekend');\n if (DateTimeService.isSameDate(DateTimeService.today(), day)) dateClass.push('active');\n if (this._isDateAllowed(day)) dateClass.push('date-allowed');\n if (onRenderDayCssClassName) dateClass.push(onRenderDayCssClassName(day));\n if (zoom != null && zoom !== RosterZoom.x16) {\n const today = DateTimeService.today();\n const nowDate = DateTimeService.now();\n const now = showSwissTime ? DateTimeService.getSwissDate(nowDate) : nowDate;\n const hours: string[] = [];\n let zoomClass = '';\n if (zoom === RosterZoom.x4) zoomClass += 'zoom-x4';\n if (zoom === RosterZoom.x8) zoomClass += 'zoom-x8';\n for (let i = 1; i <= 24; i++) {\n hours.push(i < 10 ? `0${i}` : `${i}`);\n }\n time =
\n {hours.map(h =>
{h}
)}\n {DateTimeService.isSameDate(DateTimeService.today(), day) &&\n {DateTimeService.toUiTime(now)}{showSwissTime ? '.' : ''}\n }\n
;\n }\n dates.push(\n
\n
\n {onRenderCustomDate\n ? onRenderCustomDate(day)\n : \n {this._getDay(day)}\n \n }\n {onRenderDayExtensions && onRenderDayExtensions(day)}\n
\n {onRenderDailyFigures && onRenderDailyFigures(day)}\n {onRenderRosterFilter && onRenderRosterFilter(day)}\n {time}\n
\n );\n });\n\n return (\n
\n \n
\n {dates}\n
\n
\n );\n }\n\n private _getDay (date: Date): string {\n const d = date.getUTCDate().toString();\n return d.length === 1 ? '0' + d : d;\n }\n\n private _getDaysCount (date: Date, lastInRange: Date) {\n const currentMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n\n let daysCount = currentMonth.getDate() - date.getDate() + 1;\n if (currentMonth.getMonth() === lastInRange.getMonth() && lastInRange.getDate() < daysCount) {\n return lastInRange.getDate();\n }\n\n return daysCount;\n }\n\n private _isMajorMonth(date: Date): boolean {\n const {majorMonth} = this.props;\n if (!majorMonth) {\n return false;\n }\n\n return majorMonth.getFullYear() === date.getFullYear() && majorMonth.getMonth() === date.getMonth();\n }\n\n private _isDateAllowed(dutyDay: Date) {\n const { allowedDateRange } = this.props;\n if (Array.isArray(allowedDateRange)) {\n return allowedDateRange?.some(range => range.from <= dutyDay && range.to >= dutyDay);\n }\n\n return allowedDateRange && allowedDateRange.from <= dutyDay && allowedDateRange.to >= dutyDay;\n }\n}\n","import React from 'react';\n\ntype TimeoutTimerProps = {\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport class TimeoutTimer extends React.PureComponent {\n render() {\n const { className, style } = this.props;\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n );\n }\n}\n","import React from 'react';\n\ntype VirtualHorizontalExpanderProps = {\n virtualWidth: number;\n};\n\nexport const VirtualHorizontalExpander = (props: VirtualHorizontalExpanderProps) => {\n return
;\n};\n","/* eslint-disable max-lines */\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport { action, autorun, computed, IReactionDisposer, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport ReactResizeDetector from 'react-resize-detector';\n\nimport { KeyboardKeys } from '@app/AppConstants/KeyboardKeys';\nimport { FunctionGroupIds } from '@app/AppConstants/PersonFunctions';\nimport { Sizes } from '@app/AppConstants/Sizes';\nimport { SignalREvents, SignalRGroups } from '@app/AppConstants/SignalR';\nimport { DutyItem, RosterType } from '@app/Models/WebApiModels';\n\nimport {\n IRosterSelectionStrategy,\n RosterSelectionStrategyDefault,\n SelectionStrategyConstructor,\n} from '.';\n\nimport {\n ActionInitiator,\n getDayWidth,\n IPersonStore,\n IVirtualizedRoster,\n LoadMode,\n NavigateBehavior,\n Range,\n RangeReadyStatus,\n RefreshRosterLineDto,\n RosterElement,\n RosterViewState,\n RosterZoom,\n VirtualizedRosterProps\n} from './VirtualizedRosterTypes';\n\nimport { DutyStore, IDutyStore } from './Stores/DutyStore';\nimport ArrayHelper from '@app/Helpers/ArrayHelper';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\nimport { isIOS } from '@app/Helpers/DevicesHelper';\n\nimport { PersonsListItem } from '../PersonsListItem';\nimport RosterLine from '@app/Components/RosterLine';\nimport { HomeFiltersState } from '@app/Pages/Home/Models';\n\nimport Extensions from '@app/Services/Extensions';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { signalRService } from '@app/Services/SignalRService';\nimport { DutyChangeEvent, dutyChangeService } from '@app/Services/DutyChangeService';\n\nimport { TimeoutTimer, VirtualDaysList, VirtualHorizontalExpander } from './Components';\nimport { modalService } from '../Modal';\n\nenum UpdateStatuses {\n None,\n Pending,\n Ready,\n NeedToUpdate\n}\n\n@observer\nexport default class VirtualizedRoster extends React.Component implements IVirtualizedRoster {\n private readonly _datesList: React.RefObject = React.createRef();\n @observable private _personList: React.RefObject = React.createRef();\n @observable private _scrollWrapper: React.RefObject = React.createRef();\n private readonly _dutyStore: IDutyStore;\n private readonly _personStore: IPersonStore;\n private _autoDisposer: IReactionDisposer;\n\n @observable private _dateFrom: Date;\n @observable private _dateTo: Date;\n @observable private _viewportDateFrom: Date | null = null;\n @observable private _viewportDateTo: Date | null = null;\n @observable.shallow private _viewportDays: Array = [];\n @observable private _viewportPersonIndexFrom: number = -1;\n @observable private _viewportPersonIndexTo: number = -1;\n private _majorMonthDay: Date | null = null;\n private _scrollTop: number = 0;\n private _scrollLeft: number = 0;\n private _gridClientWidth: number = 0;\n private _updateStatus: UpdateStatuses = UpdateStatuses.None;\n @observable private _scheduleEnsureRange: { range: Range; alwaysCenter?: boolean | null } | null = null;\n @observable private _scheduledRestoreScroll: { top: number | null; left: number | null } | null = null;\n @observable.shallow private _selectedCells: RosterElement[] = [];\n @observable.shallow private _selectedElement: RosterElement | null = null;\n @observable.ref private _copiedDuties: DutyItem[] = [];\n @observable private _autoExpandTimeout: number | null = null;\n @observable private _autoExpandCssClass: string = '';\n @observable private _zoom: RosterZoom;\n private _selectedPersonIdsMap: Map = new Map();\n private _timeout: number | null = null;\n private _refreshInterval: number | null = null;\n\n private _selectionStrategy: IRosterSelectionStrategy;\n private _pos: { top: number; left: number; x: number; y: number } = { top: 0, left: 0, x: 0, y: 0 };\n\n @observable private _viewState;\n @observable private _filterState;\n @observable private _showPersonList;\n @observable private _personInfoWidthPx;\n \n constructor (props: VirtualizedRosterProps) {\n super(props);\n applyDecorators(this);\n this._dutyStore = new DutyStore(props.type);\n this._personStore = props.personsStore;\n this._viewState = props.viewState;\n this._filterState = props.filterState;\n this._showPersonList = props.showPersonList;\n this._personInfoWidthPx = props.personInfoWidthPx;\n this._zoom = props.initialZoom ?? RosterZoom.x16;\n props.personsStore.onChangeSource(() => {\n this._dutyStore.cancel();\n });\n this._restoreViewState(this.props.viewState);\n this._updateSelectionStrategy(props.selectionStrategy);\n }\n\n componentDidMount () {\n this._autoDisposer = autorun(() => {\n if (this._personStore.filteredPersons) {\n this._updateViewport();\n }\n });\n window.addEventListener('resize', this._onWindowResize);\n document.addEventListener('mouseup', this._onDocumentMouseUp);\n document.addEventListener('keydown', this._onDocumentKeyDown);\n signalRService.subscribeToGroup(SignalREvents.refreshPersonRange, this._onSignalRDutyChanges, SignalRGroups.Roster, this._isPersonRelatedSignalRGroup);\n signalRService.subscribeToGroup(SignalREvents.rosterHidePlanningPeriod, this._refreshOnHidePlanningPeriod, SignalRGroups.RosterPlanningPeriod);\n dutyChangeService.subscribe(this._updateDuties);\n if (this.props.autoExpandPeriod && !this._autoExpandTimeout) {\n setTimeout(() => this._checkAutoScroll(true), 0);\n }\n\n const time = DateTimeService.now();\n const secondsRemaining = (60 - time.getSeconds()) * 1000;\n this._timeout = window.setTimeout(() => {\n this._timeout = null;\n\n this.forceUpdate();\n this._refreshInterval = window.setInterval(() => {\n if (this._zoom !== RosterZoom.x16) {\n this.forceUpdate();\n }\n }, 1000 * 60);\n }, secondsRemaining);\n }\n\n componentWillUnmount () {\n dutyChangeService.unsubscribe(this._updateDuties);\n signalRService.unsubscribeFromGroup(SignalREvents.refreshPersonRange, this._onSignalRDutyChanges);\n signalRService.unsubscribeFromGroup(SignalREvents.rosterHidePlanningPeriod, this._refreshOnHidePlanningPeriod);\n\n document.removeEventListener('keydown', this._onDocumentKeyDown);\n document.removeEventListener('mouseup', this._onDocumentMouseUp);\n window.removeEventListener('resize', this._onWindowResize);\n this._autoDisposer();\n\n if (this._refreshInterval) {\n window.clearInterval(this._refreshInterval);\n this._refreshInterval = null;\n }\n if (this._timeout) {\n window.clearTimeout(this._timeout);\n this._timeout = null;\n }\n\n if (this.props.onSaveViewState) {\n this.props.onSaveViewState({\n referenceDate: this._dateFrom,\n dateFrom: this._dateFrom,\n dateTo: this._dateTo,\n scrollTop: this._scrollTop,\n scrollLeft: this._scrollLeft,\n viewportDateFrom: this._viewportDateFrom,\n viewportDateTo: this._viewportDateTo,\n });\n }\n }\n\n componentDidUpdate (prevProps: VirtualizedRosterProps) {\n this._updateStatus = UpdateStatuses.Pending;\n this._viewState = this.props.viewState;\n this._showPersonList = this.props.showPersonList;\n this._personInfoWidthPx = this.props.personInfoWidthPx;\n if (this.props.type !== prevProps.type) {\n this._dutyStore.setType(this.props.type);\n this.refresh(true);\n }\n if (this.props.selectionStrategy !== prevProps.selectionStrategy) {\n this._updateSelectionStrategy(this.props.selectionStrategy);\n }\n if (this.props.viewState !== prevProps.viewState) {\n this._restoreViewState(this.props.viewState);\n }\n if (this.props.filterState !== prevProps.filterState) {\n this.updateFilterState(this.props.filterState);\n }\n\n this._updateStatus = UpdateStatuses.Ready;\n const scrollWrapper = this._scrollWrapper.current;\n\n if (scrollWrapper && this._scheduleEnsureRange) {\n this.ensureRangeVisible(this._scheduleEnsureRange.range, this._scheduleEnsureRange.alwaysCenter);\n this._scheduleEnsureRange = null;\n }\n\n if (scrollWrapper && this._scheduledRestoreScroll) {\n const { top, left } = this._scheduledRestoreScroll;\n this._scrollGrid(top, left);\n this._scheduledRestoreScroll = null;\n }\n\n this._positionVirtualScrolls();\n this.props.gridRef && this.props.gridRef(this._scrollWrapper);\n if (this.props.initialZoom && this.props.initialZoom !== prevProps.initialZoom) {\n this._zoom = this.props.initialZoom;\n }\n }\n\n render () {\n if (this.props.hidden) return null;\n\n const {\n onRenderHeader, onRenderFooter,\n onRenderPersonList, onRenderDaysListExtensions, showPersonList,\n height, className, showZoomControls,\n bottomInfoHeightPx, noWrapper, personsStore\n } = this.props;\n const style: React.CSSProperties = {};\n if (height) {\n style.height = height + 'px';\n }\n if (bottomInfoHeightPx) {\n style.bottom = bottomInfoHeightPx + 'px';\n }\n\n const wrapperClassName = ['virtualized-roster'];\n if (className) wrapperClassName.push(className);\n\n let zoom: string = '1';\n let canZoomIn = true;\n let canZoomOut = true;\n switch (this._zoom) {\n case RosterZoom.x1:\n zoom = '1x';\n canZoomIn = false;\n break;\n case RosterZoom.x2:\n zoom = '2x';\n break;\n case RosterZoom.x4:\n zoom = '4x';\n break;\n case RosterZoom.x8:\n zoom = '8x';\n break;\n case RosterZoom.x16:\n zoom = '16x';\n canZoomOut = false;\n break;\n }\n\n if (this._zoom !== RosterZoom.x16) {\n wrapperClassName.push(`person-grid_lines person-grid_${zoom}`);\n }\n\n const homeCalendarElement = Array.from(document.getElementsByClassName('home-calendar') as HTMLCollectionOf)[0];\n\n if (homeCalendarElement) {\n homeCalendarElement.style.setProperty('--cell-duty-width', `${this.cellWidthPx}px`);\n }\n const _render = (\n <>\n
\n {onRenderHeader && onRenderHeader(this, this._virtualDrawOptions)}\n
\n {this._renderDays()}\n
\n {onRenderDaysListExtensions && onRenderDaysListExtensions(this._datesList)}\n {showPersonList && (\n
\n {onRenderPersonList && onRenderPersonList(this, { ...this._virtualDrawOptions, ...{ ref: this._personList } })}\n {this._renderPersons()}\n
\n )}\n {this._renderGrid()}\n {this._autoExpandTimeout &&\n }\n
\n {onRenderFooter && onRenderFooter(this, this._virtualDrawOptions)}\n {showZoomControls && this._renderZoom(zoom, canZoomIn, canZoomOut)}\n {!!personsStore.personLoadErrorHint &&
{personsStore.personLoadErrorHint}
}\n \n );\n return noWrapper ? _render :
{_render}
;\n }\n\n private _renderZoom (zoom: string, canZoomIn: boolean, canZoomOut: boolean) {\n return (\n
\n
this._onZoomChange(false)}>\n \n \n \n
\n
\n {zoom}\n
\n
this._onZoomChange(true)}>\n \n \n \n
\n
\n );\n }\n\n private _renderDays () {\n const daysStyle: React.CSSProperties = {\n transform: `${this._translateLeft}`\n };\n const {\n onRenderCustomDate,\n onRenderDayExtensions,\n onRenderDayCssClassName,\n onRenderMonthExtensions,\n onRenderDailyFigures,\n onRenderRosterFilter,\n allowedDateRange,\n showSwissTime\n } = this.props;\n return ;\n }\n\n private _renderPersons (): JSX.Element | null {\n const personStore = this._personStore;\n if (!personStore.dataLoading.isCompleted) {\n return null;\n }\n\n const { filteredPersons } = personStore;\n const { filterState, showFocusedPersonDay, historizationStore } = this.props;\n const personItemStyle: React.CSSProperties = {\n transform: `${this._translateTop}`\n };\n const persons: JSX.Element[] = [];\n for (let i = this._viewportPersonIndexFrom; i <= this._viewportPersonIndexTo; i++) {\n if (i < 0) break;\n\n const person = filteredPersons[i];\n if (!person) {\n const errorMessage = `Can't get person with index ${i} \\nViewportPersonIndexFrom: ${this._viewportPersonIndexFrom}.\\nViewportPersonIndexTo: ${this._viewportPersonIndexTo}\\n FilteredPersons list: ${JSON.stringify(filteredPersons)}..`;\n console.error(errorMessage);\n setTimeout(() => {\n void modalService.showError(errorMessage);\n });\n continue; //was not there\n }\n\n const personInfo = personStore.getDetails(person.id);\n const personInfoStatus = personStore.getStatus(person.id);\n let className = '';\n\n if (showFocusedPersonDay && this._selectedElement && this._selectedElement.personId === person.id) {\n className += ' active';\n }\n if (!personInfo || personInfoStatus === RangeReadyStatus.Loading) {\n className += ' loading';\n }\n if (personInfoStatus === RangeReadyStatus.Error) {\n className += ' loading-error';\n }\n if (filterState && filterState.topPersonIds.indexOf(person.id) !== -1) {\n className += ' selected';\n }\n\n const referenceDate = this._selectedElement && new Date(this._selectedElement.dateUtc);\n persons.push();\n }\n\n return (\n
\n {this._vWrapperRender()}\n
\n {persons}\n
\n
\n );\n }\n\n private _renderGrid () {\n const {\n onRenderGridExtras,\n onRenderCellDetails,\n onRenderCellExtras,\n onCellDoubleClick,\n onStartDragDuty,\n onDragOverDuty,\n onDropDuty,\n onDragEndDuty,\n allowedDateRange,\n showCapacityNumbers,\n showFocusedPersonDay,\n historizationStore,\n filterState,\n showSwissTime,\n personsStore\n } = this.props;\n const { filteredPersons } = this._personStore;\n const lines: JSX.Element[] = [];\n\n for (let i = this._viewportPersonIndexFrom; i <= this._viewportPersonIndexTo && i >= 0; i++) {\n const person = filteredPersons[i];\n const nextPerson = filteredPersons.length > i + 1 ? filteredPersons[i + 1] : null;\n const isBeforeActivePerson = nextPerson && this._selectedElement && this._selectedElement.personId === nextPerson.id;\n\n lines.push(\n \n );\n }\n\n const dutyItemStyle: React.CSSProperties = {\n transform: `${this._translateTop}${this._translateLeft}`,\n width: `${this._gridClientWidth}px`\n };\n return (\n
\n
\n {this._vWrapperRender()}\n \n
\n {lines}\n
\n
\n \n {onRenderGridExtras && onRenderGridExtras(this, { ...this._virtualDrawOptions, ...{ ref: this._scrollWrapper } })}\n
\n );\n }\n\n @computed\n public get cellWidthPx (): number {\n return this._zoom === RosterZoom.x16 ? Sizes.dutyWidths : 2 * getDayWidth(this._zoom!);\n }\n\n @computed\n private get _isSelectedRowInView () {\n const selectedPersonIndex = this._personStore.filteredPersons.findIndex((p) => !!this._selectedElement && p.id === this._selectedElement.personId);\n return selectedPersonIndex >= this._viewportPersonIndexFrom && selectedPersonIndex <= this._viewportPersonIndexTo;\n }\n\n private get _virtualWidth (): number {\n const total = DateTimeService.diffDays(this._dateTo, this._dateFrom) + 1;\n return total * this.cellWidthPx;\n }\n\n private get _virtualHeight (): number {\n const { filteredPersons } = this._personStore;\n return filteredPersons.length * Sizes.dutyHeight + (this._isSelectedRowInView ? this.props.lineInfoHeight || 0 : 0);\n }\n\n private get _virtualDrawOptions () {\n const scrollTop = this._scrollTop;\n let viewportTop = scrollTop - Sizes.dutyHeight * Extensions.getDecimal(scrollTop / Sizes.dutyHeight);\n\n if (!!this.props.lineInfoHeight && this.selectedRowIndex !== null && this.selectedRowIndex > -1) {\n const hStandart = Sizes.dutyHeight;\n const hSelected = Sizes.dutyHeight + this.props.lineInfoHeight;\n const heightBeforeSelectedElement = this.selectedRowIndex * hStandart;\n\n if (scrollTop >= heightBeforeSelectedElement && scrollTop <= heightBeforeSelectedElement + hSelected) {\n const nStandart = Math.floor(heightBeforeSelectedElement / hStandart);\n viewportTop = nStandart * hStandart;\n }\n if (scrollTop > heightBeforeSelectedElement + hSelected) {\n const nStandart = Math.floor((scrollTop - hSelected) / hStandart);\n viewportTop = nStandart * hStandart + hSelected;\n }\n }\n\n return {\n viewportDays: this._viewportDays,\n virtualWidth: this._virtualWidth,\n virtualHeight: this._virtualHeight,\n viewportLeft: this._scrollLeft - this.cellWidthPx * Extensions.getDecimal(this._scrollLeft / this.cellWidthPx),\n viewportTop: viewportTop\n };\n }\n\n private _vWrapperRender (): JSX.Element | null {\n const fakeStyle = {\n height: this._virtualHeight,\n clip: ''\n };\n return
;\n }\n\n private get _translateLeft (): string {\n return ` translateX(${this._virtualDrawOptions.viewportLeft}px)`;\n }\n\n private get _translateTop (): string {\n return ` translateY(${this._virtualDrawOptions.viewportTop}px)`;\n }\n\n @computed\n public get personListWidth (): string {\n if (this._showPersonList) {\n const width = Sizes.personWidth + (this._personInfoWidthPx || 0);\n return `${width}px`;\n }\n return '0';\n }\n\n private _positionVirtualScrolls () {\n const datesList = this._datesList.current;\n if (datesList) {\n datesList.scrollLeft = this._scrollLeft;\n }\n\n const personsList = this._personList.current;\n if (personsList) {\n personsList.scrollTop = this._scrollTop;\n }\n }\n\n @action.bound\n private _onWindowResize () {\n this._updateViewport();\n }\n\n @action.bound\n private _updateViewport (loadData: boolean = true) {\n if (this._updateStatus === UpdateStatuses.NeedToUpdate) return;\n\n this._positionVirtualScrolls();\n const scrollTop = this._scrollTop;\n const scrollLeft = this._scrollLeft;\n\n const grid = this._scrollWrapper.current;\n if (!grid) {\n setTimeout(() => this._updateViewport(loadData), 0);\n return;\n }\n const height = grid.offsetHeight;\n const viewportPersonsCount = Math.floor(height / Sizes.dutyHeight || 0);\n let viewportPersonIndex = Math.floor(scrollTop / Sizes.dutyHeight);\n\n if (!!this.props.lineInfoHeight && this.selectedRowIndex !== null && this.selectedRowIndex > -1) {\n const hStandart = Sizes.dutyHeight;\n const hSelected = Sizes.dutyHeight + this.props.lineInfoHeight;\n const heightBeforeSelectedElement = this.selectedRowIndex * hStandart;\n\n if (scrollTop >= heightBeforeSelectedElement && scrollTop <= heightBeforeSelectedElement + hSelected) {\n viewportPersonIndex = this.selectedRowIndex;\n }\n if (scrollTop > heightBeforeSelectedElement + hSelected) {\n const nStandart = Math.floor((scrollTop - hSelected) / hStandart);\n viewportPersonIndex = nStandart + 1;\n }\n }\n\n this._viewportPersonIndexFrom = viewportPersonIndex;\n this._viewportPersonIndexTo = viewportPersonIndex + viewportPersonsCount + 1;\n if (this._viewportPersonIndexTo >= this._personStore.filteredPersons.length) {\n this._viewportPersonIndexTo = this._personStore.filteredPersons.length - 1;\n }\n\n const viewportPersonsRange = {\n from: this._viewportPersonIndexFrom,\n to: this._viewportPersonIndexTo\n };\n\n const width = grid.offsetWidth;\n const viewportDaysCount = Math.floor(width / this.cellWidthPx || 0) + 1;\n const viewportDutyStartIndex = Math.floor(scrollLeft / this.cellWidthPx);\n\n const viewportDateFrom = DateTimeService.addDays(this._dateFrom, viewportDutyStartIndex);\n let viewportDateTo = DateTimeService.addDays(viewportDateFrom, viewportDaysCount);\n if (viewportDateTo > this._dateTo) {\n viewportDateTo = this._dateTo;\n }\n const viewportDatesRange = {\n from: viewportDateFrom,\n to: viewportDateTo\n };\n if (viewportDateFrom > viewportDateTo) {\n viewportDatesRange.from = viewportDatesRange.to;\n }\n if (viewportDatesRange.from !== this._viewportDateFrom) {\n this._viewportDateFrom = viewportDatesRange.from;\n }\n if (viewportDatesRange.to !== this._viewportDateTo) {\n this._viewportDateTo = viewportDatesRange.to;\n }\n\n const viewportDates: Date[] = [];\n let currentDate = viewportDateFrom;\n while (currentDate <= viewportDateTo) {\n viewportDates.push(currentDate);\n currentDate = DateTimeService.addDays(currentDate, 1);\n }\n\n if (!ArrayHelper.isSameDateArray(this._viewportDays, viewportDates)) {\n this._viewportDays = viewportDates;\n this._updateMajorMonth();\n }\n\n const virtualRange = {\n from: this._dateFrom,\n to: this._dateTo\n };\n\n if (this._personStore.filteredPersons.length && loadData !== false) {\n this._dutyStore.loadViewport(this._personStore.filteredPersons, viewportPersonsRange, viewportDatesRange, virtualRange);\n this._personStore.loadViewport(viewportPersonsRange);\n this.props.onPersonRangeLoad && this.props.onPersonRangeLoad(viewportPersonsRange, null, LoadMode.Viewport);\n }\n this.props.onDateRangeLoad && this.props.onDateRangeLoad(viewportDatesRange, virtualRange, LoadMode.Viewport);\n }\n\n @action\n private _waitTimeout (direction: 'left' | 'right' | 'clear', immediate?: boolean) {\n if (this._autoExpandTimeout) {\n clearTimeout(this._autoExpandTimeout);\n this._autoExpandTimeout = null;\n }\n if (direction === 'clear') return;\n\n this._autoExpandCssClass = direction;\n this._autoExpandTimeout = window.setTimeout(\n () => {\n if (direction === 'left') this.toPrevMonth(true);\n if (direction === 'right') this.toNextMonth(true);\n this._autoExpandTimeout = null;\n },\n immediate ? 0 : 700\n );\n }\n\n @action\n private _checkAutoScroll (immediate?: boolean) {\n const grid = this._scrollWrapper.current;\n if (!grid) return;\n\n if (!grid.scrollLeft) {\n this._waitTimeout('left', immediate);\n } else if (grid.scrollWidth <= Math.ceil(grid.scrollLeft + grid.offsetWidth)) {\n this._waitTimeout('right', immediate);\n } else {\n this._waitTimeout('clear');\n }\n }\n\n @action.bound\n private _onRosterScroll (event: React.UIEvent) {\n const target = event.target as HTMLElement;\n if (target !== this._scrollWrapper.current) return;\n\n const shouldUpdateConfig = this._scrollTop !== target.scrollTop || this._scrollLeft !== target.scrollLeft;\n this._scrollTop = target.scrollTop;\n this._scrollLeft = target.scrollLeft;\n\n if (this.props.autoExpandPeriod) {\n this._checkAutoScroll();\n }\n\n this._updateViewport();\n this.props.onScroll && this.props.onScroll(this._scrollTop, this._scrollLeft, shouldUpdateConfig);\n }\n\n @action.bound\n private _onRosterResize (width: number) {\n const shouldUpdateConfig = this._gridClientWidth !== 0;\n this._gridClientWidth = width;\n this._updateViewport();\n this.props.onScroll && this.props.onScroll(this._scrollTop, this._scrollLeft, shouldUpdateConfig);\n }\n\n @action\n public toNextMonth (keepScroll?: boolean) {\n const grid = this._scrollWrapper.current;\n if (!grid) return;\n\n const dateTo = this._dateTo;\n const viewportDateTo = this._viewportDateTo;\n\n const endOfMonthTo = DateTimeService.date(dateTo.getUTCFullYear(), dateTo.getUTCMonth() + 1, 0);\n const isVirtualToMonth = DateTimeService.isSameDate(dateTo, endOfMonthTo);\n\n const monthsInView = DateTimeService.diffMonths(this._dateFrom, this._dateTo);\n let waitTillUpdate = true;\n if (viewportDateTo) {\n if (viewportDateTo < dateTo) {\n waitTillUpdate = false;\n } else if (!isVirtualToMonth) {\n this._dateTo = endOfMonthTo;\n } else {\n const endOfNextMonth = DateTimeService.date(dateTo.getUTCFullYear(), dateTo.getUTCMonth() + 2, 0);\n this._dateTo = endOfNextMonth;\n }\n if (keepScroll) {\n this._dateFrom = DateTimeService.addMonths(DateTimeService.toFirstDayOfMonth(this._dateTo), -monthsInView);\n }\n\n if (keepScroll) {\n const newViewportDateTo = DateTimeService.date(this._dateTo.getUTCFullYear(), this._dateTo.getUTCMonth(), 0);\n const totalDaysTo = DateTimeService.diffDays(newViewportDateTo, this._dateFrom) + 1;\n const lengthToPx = totalDaysTo * this.cellWidthPx;\n this._scheduleScrollGrid(null, lengthToPx - grid.clientWidth, waitTillUpdate);\n } else {\n const endOfViewportMonth = DateTimeService.date(viewportDateTo.getUTCFullYear(), viewportDateTo.getUTCMonth() + 1, 0);\n\n let newViewportDateTo: Date;\n if (DateTimeService.isSameDate(endOfViewportMonth, viewportDateTo)) {\n newViewportDateTo = DateTimeService.date(endOfViewportMonth.getUTCFullYear(), endOfViewportMonth.getUTCMonth() + 2, 0);\n } else {\n newViewportDateTo = endOfViewportMonth;\n }\n const totalDaysTo = DateTimeService.diffDays(newViewportDateTo, this._dateFrom) + 1;\n const lengthToPx = totalDaysTo * this.cellWidthPx;\n this._scheduleScrollGrid(null, lengthToPx - grid.clientWidth, waitTillUpdate);\n }\n }\n }\n\n @action\n public toPrevMonth (keepScroll?: boolean) {\n let dateFrom = this._dateFrom;\n let viewportDateFrom = this._viewportDateFrom;\n\n let waitTillUpdate = false;\n let dateIndex = 0;\n\n if (viewportDateFrom) {\n if (viewportDateFrom.getUTCDate() > 1) {\n viewportDateFrom = DateTimeService.toFirstDayOfMonth(viewportDateFrom);\n dateIndex = DateTimeService.getDateIndexInRange(viewportDateFrom, dateFrom);\n this._viewportDateFrom = viewportDateFrom;\n } else if (dateFrom.getUTCMonth() !== viewportDateFrom.getUTCMonth()) {\n viewportDateFrom = DateTimeService.toFirstDayOfMonth(viewportDateFrom);\n viewportDateFrom = DateTimeService.addMonths(viewportDateFrom, -1);\n dateIndex = DateTimeService.getDateIndexInRange(viewportDateFrom, dateFrom);\n } else {\n dateFrom = DateTimeService.addMonths(dateFrom, -1);\n dateFrom = DateTimeService.toFirstDayOfMonth(dateFrom);\n if (keepScroll) {\n const monthsInView = DateTimeService.diffMonths(this._dateFrom, this._dateTo);\n this._dateTo = DateTimeService.toLastDayOfMonth(DateTimeService.addMonths(dateFrom, monthsInView));\n }\n this._dateFrom = dateFrom;\n dateIndex = 0;\n waitTillUpdate = true;\n }\n }\n\n if (keepScroll) {\n const monthDayStart = DateTimeService.toFirstDayOfMonth(this._dateFrom);\n const monthDayEnd = DateTimeService.toLastDayOfMonth(this._dateFrom);\n const newScroll = this._scrollLeft + (DateTimeService.diffDays(monthDayEnd, monthDayStart) + 1) * this.cellWidthPx;\n this._scheduleScrollGrid(null, newScroll, waitTillUpdate);\n } else {\n this._scheduleScrollGrid(null, dateIndex * this.cellWidthPx, waitTillUpdate);\n }\n }\n\n @action\n public ensureRangeVisible (range: Range, alwaysCenter?: boolean | null) {\n const scrollWrapper = this._scrollWrapper.current;\n if (!scrollWrapper) {\n this._scheduleEnsureRange = { range: range, alwaysCenter: alwaysCenter };\n return true;\n }\n\n if (!alwaysCenter && this._viewportDateFrom && this._viewportDateTo) {\n if (this._viewportDateFrom < range.from && range.to < this._viewportDateTo) return true;\n }\n\n const days = DateTimeService.diffDays(range.to, range.from) + 1;\n const daysInView = scrollWrapper.offsetWidth / this.cellWidthPx;\n\n if (days > daysInView - 2) {\n return this.navigateTo(null, DateTimeService.addDays(range.from, -1), NavigateBehavior.topLeft);\n } else {\n const middleDate = DateTimeService.startOfDate(new Date((range.from.getTime() + range.to.getTime()) / 2));\n return this.navigateTo(null, middleDate, NavigateBehavior.center);\n }\n }\n\n @action\n public navigateTo (personId: string | null, date: Date | null, behavior: NavigateBehavior = NavigateBehavior.center, selectCell?: boolean) {\n const scrollWrapper = this._scrollWrapper.current;\n if (!scrollWrapper) {\n return false;\n }\n\n this._navigateInternal(scrollWrapper, personId, date, behavior);\n\n if (selectCell) {\n const dateUtc = this._selectedElement && this._selectedElement.dateUtc;\n const selectedDate = date ? date.getTime() : dateUtc;\n if (personId && selectedDate) {\n const cell: RosterElement = {\n personId: personId,\n dateUtc: selectedDate\n };\n this.selectedCells = [cell];\n this.setFocusedElement(cell);\n } else {\n this.selectedCells = [];\n }\n }\n\n return true;\n }\n\n private _navigateInternal (scrollWrapper: HTMLDivElement, personId: string | null, date: Date | null, behavior: NavigateBehavior = NavigateBehavior.center) {\n const height = scrollWrapper.offsetHeight;\n const width = scrollWrapper.offsetWidth;\n\n const personIndex = this._personStore.filteredPersons.findIndex((p) => p.id === personId);\n if (personId && personIndex === -1) {\n return false;\n }\n\n let waitTilUpdate: boolean | null = null;\n\n const scrollTop = personId ? Math.max(0, Math.round(Sizes.dutyHeight * (personIndex + 1) - (behavior === NavigateBehavior.center ? height / 2 + Sizes.dutyHeight / 2 : 0))) : this._scrollTop;\n if (scrollTop > scrollWrapper.scrollHeight) {\n waitTilUpdate = true;\n }\n\n let scrollLeft: number = this._scrollLeft;\n if (date) {\n const daysInView = width / this.cellWidthPx;\n const dayStart = DateTimeService.addDays(date, -daysInView);\n const dayEnd = DateTimeService.addDays(date, daysInView);\n\n if (dayStart < this._dateFrom) {\n this._dateFrom = DateTimeService.toFirstDayOfMonth(dayStart);\n waitTilUpdate = true;\n }\n if (dayEnd > this._dateTo) {\n this._dateTo = DateTimeService.toLastDayOfMonth(dayEnd);\n waitTilUpdate = true;\n }\n scrollLeft = Math.round(DateTimeService.getDateIndexInRange(date, this._dateFrom) * this.cellWidthPx - (behavior === NavigateBehavior.center ? width / 2 - this.cellWidthPx / 2 : 0));\n }\n\n this._scheduleScrollGrid(scrollTop, scrollLeft, waitTilUpdate);\n }\n\n @action\n public scrollToPerson (personId: string) {\n const personIndex = this._personStore.filteredPersons.findIndex((p) => p.id === personId);\n if (personIndex === -1) {\n return false;\n }\n\n const scrollTop = Sizes.dutyHeight * personIndex;\n this._scheduleScrollGrid(scrollTop, null, true);\n }\n\n @computed\n public get viewState (): RosterViewState {\n const result: RosterViewState = {\n dateFrom: this._dateFrom,\n dateTo: this._dateTo,\n viewportDateFrom: this._viewportDateFrom,\n viewportDateTo: this._viewportDateTo,\n selectedPersonsMap: Array.from(this._selectedPersonIdsMap.entries()),\n selectedDate: this._selectedElement ? new Date(this._selectedElement.dateUtc) : null,\n scrollTop: this._scrollTop,\n scrollLeft: this._scrollLeft,\n referenceDate: this._viewState.referenceDate\n };\n return result;\n }\n\n @action\n public updateFilterState(newState?: HomeFiltersState | null) {\n this._filterState = newState;\n }\n\n @action\n private _restoreViewState (viewState: RosterViewState) {\n this._selectedPersonIdsMap = new Map(viewState.selectedPersonsMap);\n const selectedPersonId = this.getSelectedPersonIdForCurrentFunction();\n if (viewState.selectedDate && selectedPersonId) {\n this.setFocusedElement({ personId: selectedPersonId, dateUtc: viewState.selectedDate.getTime() });\n }\n\n if (viewState.keepFullRange && viewState.dateFrom && viewState.dateTo) {\n this._dateFrom = viewState.dateFrom;\n this._dateTo = viewState.dateTo;\n\n let scrollLeft = viewState.scrollLeft || 0;\n if ((viewState.scrollLeft || null) === null && viewState.viewportDateFrom) {\n scrollLeft = this.cellWidthPx * DateTimeService.diffDays(viewState.viewportDateFrom, viewState.dateFrom);\n }\n this._scrollLeft = scrollLeft;\n } else {\n const baseDate = DateTimeService.toFirstDayOfMonth(viewState.viewportDateFrom || viewState.referenceDate);\n const dateFrom = DateTimeService.toFirstDayOfMonth(DateTimeService.addMonths(baseDate, -2));\n const dateTo = DateTimeService.toLastDayOfMonth(DateTimeService.addMonths(baseDate, 2));\n\n let scrollLeft = viewState.scrollLeft || 0;\n if (dateFrom && viewState.dateFrom) {\n scrollLeft -= this.cellWidthPx * DateTimeService.diffDays(dateFrom, viewState.dateFrom);\n }\n\n this._scrollLeft = scrollLeft;\n this._dateFrom = dateFrom;\n this._dateTo = dateTo;\n }\n this._scrollTop = viewState.scrollTop || 0;\n\n this._updateViewport();\n if (viewState.viewportCenterRange) {\n this.ensureRangeVisible(viewState.viewportCenterRange, true);\n } else {\n this._scheduledRestoreScroll = { top: this._scrollTop, left: this._scrollLeft };\n }\n }\n\n public getSelectedPersonIdForCurrentFunction() {\n if (!this._filterState) return null;\n\n const { functionGroupId, functionId } = this._filterState;\n let selectedPersonId = this._personStore.filteredPersons.length ? this._personStore.filteredPersons[0].id : null;\n\n const funcIdKey = `${functionGroupId}|${functionId}`;\n const personIdFromMap = this._selectedPersonIdsMap.get(funcIdKey);\n const existsWithCurrentFilters = this._personStore.filteredPersons.find(p => p.id === personIdFromMap);\n if (existsWithCurrentFilters && personIdFromMap) {\n selectedPersonId = personIdFromMap;\n }\n\n return selectedPersonId;\n }\n\n @action.bound\n private _refreshOnHidePlanningPeriod () {\n setTimeout(async () => {\n this.refresh();\n //add random delay to avoid DDoS\n }, Math.random() * 1000 * 30);\n }\n\n @action.bound\n private _onSignalRDutyChanges (_: string, data: RefreshRosterLineDto) {\n const { dateFromUtc, dateToUtc, personId, isValidation, functionGroupId, functionId } = data;\n if (dateFromUtc && dateToUtc) {\n const periodsIntersects = this._dateFrom <= dateToUtc && dateFromUtc <= this._dateTo;\n if (!periodsIntersects || !this._viewportDateFrom || !this._viewportDateTo) return;\n\n const refreshRange = { from: dateFromUtc, to: dateToUtc };\n const viewportRange = { from: this._viewportDateFrom, to: this._viewportDateTo };\n const viewportPersonIds = { from: this._viewportPersonIndexFrom, to: this._viewportPersonIndexTo + 1 };\n\n personId && this._dutyStore.invalidate(personId, refreshRange);\n personId && this.props.onPersonRangeLoad?.(viewportPersonIds, [personId], LoadMode.RefreshVisible);\n if (this._personStore.filteredPersons.find(x => x.id == personId) || !personId) {\n this.props.onDateRangeLoad?.(viewportRange, null, LoadMode.RefreshVisible, { range: refreshRange, personIds: personId ? [personId] : [], isValidation, functionGroupId, functionId });\n }\n }\n }\n\n @action\n public refresh (keepDataDuringRefresh: boolean = false) {\n this.resetCopiedDuties();\n this._dutyStore.clear(keepDataDuringRefresh);\n this.props.onDateRangeLoad && this.props.onDateRangeLoad(null, null, LoadMode.Clean);\n this.props.onPersonRangeLoad && this.props.onPersonRangeLoad(null, null, LoadMode.Clean);\n this.props.onPlanningDutyPeriodStatusLoad && this.props.onPlanningDutyPeriodStatusLoad();\n this._updateViewport();\n }\n\n @action\n public reloadDailyData () {\n this.props.onDateRangeLoad && this.props.onDateRangeLoad(null, null, LoadMode.Clean);\n this._updateViewport();\n }\n\n @action.bound\n private async _updateDuties (changeEvent: DutyChangeEvent): Promise {\n if (changeEvent.personsRange) {\n const {\n range: { from, to },\n personIds\n } = changeEvent.personsRange;\n this.props.onDateRangeLoad && this.props.onDateRangeLoad({ from: from, to: to }, {\n from: this._dateFrom,\n to: this._dateTo\n }, LoadMode.Refresh);\n this.props.onPersonRangeLoad && this.props.onPersonRangeLoad(null, personIds, LoadMode.Refresh);\n await this._dutyStore.loadDuties({ from: from, to: to }, personIds);\n }\n\n if (changeEvent.duties) {\n let minUpdateDate: Date | null = null;\n let maxUpdateDate: Date | null = null;\n const personIds: string[] = [];\n changeEvent.duties.forEach((d) => {\n minUpdateDate = DateTimeService.min(minUpdateDate, d.date);\n maxUpdateDate = DateTimeService.max(maxUpdateDate, d.date);\n if (personIds.indexOf(d.personId) === -1) personIds.push(d.personId);\n });\n if (minUpdateDate && maxUpdateDate) {\n this._dutyStore.setDuties(changeEvent.duties);\n this.props.onDateRangeLoad && this.props.onDateRangeLoad({\n from: minUpdateDate,\n to: maxUpdateDate\n }, { from: this._dateFrom, to: this._dateTo }, LoadMode.Refresh, { range: { from: minUpdateDate, to: maxUpdateDate }, personIds: [...changeEvent.duties.map(x => x.personId)], isValidation: false });\n this.props.onPersonRangeLoad && this.props.onPersonRangeLoad(null, personIds, LoadMode.Refresh);\n }\n }\n }\n\n private _updateSelectionStrategy (strategy?: SelectionStrategyConstructor) {\n const strategyConstructor: SelectionStrategyConstructor = strategy || RosterSelectionStrategyDefault;\n this._selectionStrategy = new strategyConstructor(this, this._scrollWrapper);\n this._selectionStrategy.updateDomSelection(this.selectedCells);\n }\n\n public getDuty (personId: string, date: Date) {\n const personMap = this._dutyStore.dutyList.get(personId);\n return (personMap && personMap.get(date.getTime())) || null;\n }\n\n public focus () {\n this._scrollWrapper.current && this._scrollWrapper.current.focus();\n }\n\n public scrollTop () {\n if (this._scrollWrapper.current) this._scrollWrapper.current.scrollTop = 0;\n }\n\n public resetCopiedDuties () {\n this._copiedDuties = [];\n }\n\n @computed\n public get selectedDuties (): DutyItem[] {\n const selectedDuties: DutyItem[] = [];\n for (const cell of this._selectedCells) {\n const personDutyMap = this._dutyStore.dutyList.get(cell.personId);\n if (personDutyMap) {\n const personDuty = personDutyMap.get(cell.dateUtc);\n if (personDuty) {\n selectedDuties.unshift(personDuty);\n }\n }\n }\n\n return selectedDuties;\n }\n\n @computed\n public get viewportDateFrom () {\n return this._viewportDateFrom;\n }\n\n @computed\n public get viewportDateTo () {\n return this._viewportDateTo;\n }\n\n @computed\n public get selectedRowIndex (): number | null {\n const selectedElement = this._selectedElement;\n return selectedElement && this._personStore.filteredPersons.findIndex((p) => p.id === selectedElement.personId);\n }\n\n @computed\n public get selectedRowNumber (): number | null {\n const selectedElement = this._selectedElement;\n return selectedElement && this._personStore.filteredPersons.findIndex((p) => p.id === selectedElement.personId) - this._viewportPersonIndexFrom;\n }\n\n @computed\n public get selectedColumnIndex (): number | null {\n const selectedElement = this._selectedElement;\n return selectedElement && DateTimeService.getDateIndexInRange(new Date(selectedElement.dateUtc), this._dateFrom);\n }\n\n @computed\n public get datesRange (): number {\n return Math.round((this._dateTo.getTime() - this._dateFrom.getTime()) / (24 * 60 * 60 * 1000));\n }\n\n @computed\n public get copiedDuties (): DutyItem[] {\n return this._copiedDuties;\n }\n\n @computed\n get selectedCells (): RosterElement[] {\n return this._selectedCells;\n }\n\n set selectedCells (cells: RosterElement[]) {\n this._selectedCells = cells;\n this._selectionStrategy.updateDomSelection(cells);\n this.props.onCellSelected && this.props.onCellSelected(this._selectedCells);\n }\n\n private _scheduleScrollGrid (top: number | null, left: number | null, waitTillUpdate?: boolean | null) {\n const scrollWrapper = this._scrollWrapper.current;\n let behavior: 'scroll' | 'timeout' | 'update' = 'timeout';\n\n if (waitTillUpdate === true) {\n behavior = 'update';\n }\n if (waitTillUpdate === false) {\n behavior = 'scroll';\n }\n if (behavior === 'timeout') {\n if (scrollWrapper && this._updateStatus !== UpdateStatuses.Pending) {\n behavior = 'scroll';\n } else {\n behavior = 'update';\n }\n }\n\n if (behavior === 'scroll') {\n // just scroll, no new range is expected\n this._scrollGrid(top, left);\n } else if (behavior === 'update') {\n if (left !== null) {\n this._scrollLeft = left;\n }\n\n this.forceUpdate(() => {\n this._scrollGrid(top, left);\n });\n }\n }\n\n private _scrollGrid (top: number | null, left: number | null) {\n const gridDutyList = this._scrollWrapper.current;\n if (gridDutyList) {\n let updated = false;\n if (left !== null) {\n const isScrollVisible = gridDutyList.scrollWidth > gridDutyList.clientWidth;\n if (isScrollVisible) {\n if (gridDutyList.scrollLeft !== left) {\n gridDutyList.scrollLeft = left;\n updated = true;\n }\n } else {\n this._onRosterResize(gridDutyList.clientWidth);\n }\n }\n if (top !== null) {\n if (gridDutyList.scrollTop !== top) {\n gridDutyList.scrollTop = top;\n updated = true;\n }\n }\n\n if (!updated) {\n if (top) this._scrollTop = top;\n if (left) this._scrollLeft = left;\n this._updateViewport();\n }\n }\n }\n\n @action.bound\n private _onGridMouseDown (event: React.MouseEvent) {\n if (event.shiftKey) {\n if (event.button !== 0) return;\n const containerRef = this._scrollWrapper.current;\n\n if (containerRef) {\n this._pos = {\n // The current scroll\n left: containerRef.scrollLeft ?? 0,\n top: containerRef.scrollTop ?? 0,\n // Get the current mouse position\n x: event.clientX,\n y: event.clientY\n };\n\n containerRef.style.userSelect = 'none';\n document.addEventListener('mousemove', this._containerOnMouseMove);\n document.addEventListener('mouseup', this._onContainerMouseUp);\n }\n } else if (event.altKey) {\n const sourceDutyElement = (event.target as HTMLDivElement).parentElement;\n const isAllowDragDuty = this.props.onStartDragDuty?.(sourceDutyElement);\n if (!!isAllowDragDuty) return;\n } else {\n this._selectionStrategy.mouseDownHandler(event);\n }\n }\n\n private _containerOnMouseMove = (e: MouseEvent) => {\n const containerRef = this._scrollWrapper.current;\n\n // How far the mouse has been moved\n const dx = e.clientX - this._pos.x;\n const dy = e.clientY - this._pos.y;\n\n // Scroll the element\n if (containerRef) {\n containerRef.scrollTop = this._pos.top - dy;\n const newScrollLeft = this._pos.left - dx;\n this._pos.x = e.clientX;\n\n if (newScrollLeft <= 0) {\n this._viewportDateFrom = this._dateFrom;\n flushSync(() => this.toPrevMonth(true));\n this._pos.left = containerRef.scrollLeft;\n return;\n }\n\n if (containerRef.scrollWidth <= Math.ceil(newScrollLeft + containerRef.offsetWidth)) {\n this._viewportDateTo = this._dateTo;\n flushSync(() => this.toNextMonth(true));\n this._pos.left = containerRef.scrollLeft;\n return;\n }\n\n this._pos.left = newScrollLeft;\n containerRef.scrollLeft = newScrollLeft;\n }\n };\n\n private _onContainerMouseUp = () => {\n const containerRef = this._scrollWrapper.current;\n\n document.removeEventListener('mousemove', this._containerOnMouseMove);\n document.removeEventListener('mouseup', this._onContainerMouseUp);\n if (containerRef) {\n containerRef.style.removeProperty('user-select');\n }\n };\n\n @action\n public setFocusedElement (element: RosterElement) {\n this._selectedElement = element;\n this._saveSelectedPersonForCurrentCrewFunction(element.personId);\n this.props.onCellFocused && this.props.onCellFocused(element);\n this._scrollWrapper.current && this._scrollWrapper.current.focus(); //need to fix ctrl+z change input effect because by default after reload focus element is body\n }\n\n private _saveSelectedPersonForCurrentCrewFunction(personId: string) {\n const personInfo = this._personStore.getPerson(personId);\n const personFunctionId = personInfo?.planningFunctionId ?? personInfo?.functionId;\n if (!personFunctionId || !this._filterState) return;\n\n const { functionGroupId } = this._filterState;\n if (functionGroupId !== FunctionGroupIds.Fcm && functionGroupId !== FunctionGroupIds.Fse) {\n const funcIdKey = `${functionGroupId}|${personFunctionId}`;\n this._selectedPersonIdsMap.set(funcIdKey, personId);\n }\n\n const funcGroupIdKey = `${functionGroupId}|${functionGroupId}`;\n this._selectedPersonIdsMap.set(funcGroupIdKey, personId);\n }\n\n @action.bound\n private _onDocumentMouseUp () {\n this._selectionStrategy.documentMouseUpHandler();\n }\n\n @action.bound\n private _onGridMouseOver (event: React.MouseEvent) {\n this._selectionStrategy.mouseMoveHandler(event);\n }\n\n @action\n public copyDuties (initiator: ActionInitiator) {\n if (this.selectedDuties && this.props.onCanCopyDuties?.(initiator, this.selectedDuties)) {\n this._copiedDuties = this.selectedDuties;\n }\n }\n\n @action\n public pasteDuties (initiator: ActionInitiator) {\n if (!!this._copiedDuties.length) {\n this.props.onPasteDuties?.(initiator, this._copiedDuties);\n }\n }\n\n @action.bound\n public pasteDraggedDuty (duty: RosterElement, initiator: ActionInitiator) {\n this.selectedCells = [duty];\n this.pasteDuties(initiator);\n this.setFocusedElement(duty);\n }\n\n @action.bound\n private _onDocumentKeyDown (event: KeyboardEvent) {\n const target = event.target as Element;\n if (this._scrollWrapper.current !== target) return;\n\n if (event.ctrlKey && event.keyCode === KeyboardKeys.C) {\n this.copyDuties(ActionInitiator.Keyboard);\n } else if (event.keyCode === KeyboardKeys.ESCAPE) {\n this.resetCopiedDuties();\n } else if (event.ctrlKey && event.keyCode === KeyboardKeys.V) {\n this.pasteDuties(ActionInitiator.Keyboard);\n }\n }\n\n private get _isPersonRelatedSignalRGroup () {\n switch (this.props.type) {\n case RosterType.RequestToolFlight:\n case RosterType.RequestToolGeneral:\n case RosterType.RequestToolOff:\n case RosterType.RequestToolVacCabin:\n case RosterType.RequestToolVacCockpit:\n case RosterType.RequestToolFreelance:\n return true;\n default:\n return false;\n }\n }\n\n private _onZoomChange (isZoomIn: boolean) {\n if (isZoomIn) {\n switch (this._zoom) {\n case RosterZoom.x2:\n this._zoom = RosterZoom.x1;\n break;\n case RosterZoom.x4:\n this._zoom = RosterZoom.x2;\n break;\n case RosterZoom.x8:\n this._zoom = RosterZoom.x4;\n break;\n case RosterZoom.x16:\n this._zoom = RosterZoom.x8;\n break;\n }\n } else {\n switch (this._zoom) {\n case RosterZoom.x1:\n this._zoom = RosterZoom.x2;\n break;\n case RosterZoom.x2:\n this._zoom = RosterZoom.x4;\n break;\n case RosterZoom.x4:\n this._zoom = RosterZoom.x8;\n break;\n case RosterZoom.x8:\n this._zoom = RosterZoom.x16;\n break;\n }\n }\n const scrollWrapper = this._scrollWrapper.current;\n if (!scrollWrapper || !this._viewportDateFrom || !this._viewportDateTo) {\n return false;\n }\n\n const middleDate = DateTimeService.startOfDate(new Date((this._viewportDateFrom.getTime() + this._viewportDateTo.getTime()) / 2));\n const scrollLeft: number = Math.round(DateTimeService.getDateIndexInRange(middleDate, this._dateFrom) * this.cellWidthPx - (scrollWrapper.offsetWidth / 2 - this.cellWidthPx / 2));\n\n this._scheduleScrollGrid(this._scrollTop, scrollLeft, true);\n this.props.onZoom?.(this._zoom!);\n }\n\n private _updateMajorMonth () {\n const majorMonthDay = this._getMajorMonth(this._viewportDays);\n if (this._majorMonthDay?.getTime() !== majorMonthDay?.getTime()) {\n this._majorMonthDay = majorMonthDay;\n if (majorMonthDay) {\n this.props.onMajorMonthChange?.(majorMonthDay);\n }\n }\n }\n\n private _getMajorMonth (viewportDays: Date[]) {\n const monthGroups = ArrayHelper\n .groupBy(viewportDays, el => `${el.getFullYear()}${el.getMonth()}`)\n .map(group => ({\n day: group.values[0],\n daysCount: group.values.length\n }));\n\n if (!monthGroups.length) {\n return null;\n }\n if (monthGroups.length === 1) {\n return monthGroups[0].day;\n }\n if (monthGroups.length > 2) {\n return monthGroups[1].day;\n }\n return monthGroups[0].daysCount > monthGroups[1].daysCount ? monthGroups[0].day : monthGroups[1].day;\n }\n}\n","import { IRosterSelectionStrategy } from './IRosterSelectionStrategy';\nimport { IVirtualizedRoster, RosterElement } from '../VirtualizedRosterTypes';\nimport { DateTime } from '@app/AppConstants/DateTime';\nimport DateTimeService from '@app/Services/DateTimeService';\n\nexport type SelectionStrategyConstructor = new (roster: IVirtualizedRoster, gridRef: React.RefObject) => IRosterSelectionStrategy;\n\nexport abstract class BaseRosterSelectionStrategy implements IRosterSelectionStrategy {\n protected cellInnerClass: string = 'person-grid-duty-info';\n\n protected _roster: IVirtualizedRoster;\n protected _gridRef: React.RefObject;\n\n constructor(roster: IVirtualizedRoster, gridRef: React.RefObject) {\n this._roster = roster;\n this._gridRef = gridRef;\n }\n\n protected getElementFromDom(domElement: Element): RosterElement {\n let cell = domElement;\n if (cell.classList.contains(this.cellInnerClass) && cell.parentElement) {\n cell = cell.parentElement;\n }\n\n const personDate = cell.getAttribute('data-date') ?? '';\n const personId = cell.getAttribute('data-person-id') ?? '';\n const dutyDay = DateTimeService.parse(personDate, DateTime.jsonDateFormat);\n return {\n personId: personId,\n dateUtc: dutyDay.getTime()\n };\n }\n\n protected getDomElement(element: RosterElement) {\n const grid = this._gridRef.current;\n if (!grid) {\n return null;\n }\n\n return grid.querySelector(`[data-person-id='${element.personId}'][data-date='${DateTimeService.toJsonFormat(new Date(element.dateUtc))}']`);\n }\n\n protected getIndexAttr(target: Element, attrName: string): number {\n let cell = target;\n if (cell.classList.contains(this.cellInnerClass) && cell.parentElement) {\n cell = cell.parentElement;\n }\n\n const attribute = cell.attributes.getNamedItem(attrName);\n return (attribute && +attribute.value) || 0;\n }\n\n protected selectItem(item: Element) {\n let cell = item;\n if (cell.classList.contains(this.cellInnerClass) && cell.parentElement) {\n cell = cell.parentElement;\n }\n cell.classList.add('selected');\n }\n\n protected deselectItem(item: Element) {\n let cell = item;\n if (cell.classList.contains(this.cellInnerClass) && cell.parentElement) {\n cell = cell.parentElement;\n }\n cell.classList.remove('selected');\n }\n\n protected convertToRosterElements(domElements: Element[]) {\n const list: RosterElement[] = [];\n domElements.forEach((item) => {\n const rosterCell: RosterElement = this.getElementFromDom(item);\n const hasDublicate: boolean = list.some((el) => el.personId === rosterCell.personId && el.dateUtc === rosterCell.dateUtc);\n if (!hasDublicate) {\n list.push(rosterCell);\n }\n });\n return list;\n }\n\n protected getCellsRange(rangeStartCell: Element, rangeEndCell: Element) {\n const result: Element[] = [];\n\n const grid = this._gridRef.current;\n if (!grid) return result;\n\n const rowStartIndex = this.getIndexAttr(rangeStartCell, 'aria-rowindex');\n const colStartIndex = this.getIndexAttr(rangeStartCell, 'aria-colindex');\n\n const rowEndIndex = this.getIndexAttr(rangeEndCell, 'aria-rowindex');\n const colEndIndex = this.getIndexAttr(rangeEndCell, 'aria-colindex');\n\n const rowStart = rowStartIndex < rowEndIndex ? rowStartIndex : rowEndIndex;\n const rowEnd = rowStartIndex < rowEndIndex ? rowEndIndex : rowStartIndex;\n const colStart = colStartIndex < colEndIndex ? colStartIndex : colEndIndex;\n const colEnd = colStartIndex < colEndIndex ? colEndIndex : colStartIndex;\n\n for (let i = rowStart; i <= rowEnd; i++) {\n const cells = grid.querySelectorAll(`[aria-rowindex='${i}']`);\n cells.forEach((cell) => {\n const colIndexAttr = cell.attributes.getNamedItem('aria-colindex');\n const cellI = colIndexAttr ? +colIndexAttr.value : 0;\n if (cellI >= colStart && cellI <= colEnd) {\n result.push(cell);\n }\n });\n }\n\n return result;\n }\n\n protected selectRange(rangeStartCell: Element, rangeEndCell: Element) {\n const cells = this.getCellsRange(rangeStartCell, rangeEndCell);\n\n cells.forEach((cell) => {\n this.selectItem(cell);\n });\n }\n\n abstract mouseDownHandler(event: React.MouseEvent): void;\n\n abstract mouseMoveHandler(event: React.MouseEvent): void;\n\n abstract documentMouseUpHandler(): void;\n\n protected getSelectedCells(): Element[] {\n const result: Element[] = [];\n if (this._gridRef.current) {\n this._gridRef.current.querySelectorAll(`.selected .${this.cellInnerClass}`).forEach((c) => {\n result.push(c);\n });\n }\n return result;\n }\n\n public updateDomSelection(cells: RosterElement[]): void {\n const targetCells = cells.slice(0);\n\n this.getSelectedCells().forEach((domElement) => {\n const rosterElement = this.getElementFromDom(domElement);\n const targetCellIndex = targetCells.findIndex((c) => c.personId === rosterElement.personId && c.dateUtc === rosterElement.dateUtc);\n if (targetCellIndex === -1) {\n this.deselectItem(domElement);\n return;\n }\n\n targetCells.splice(targetCellIndex, 1);\n });\n\n targetCells.forEach((c) => {\n const domElement = this.getDomElement(c);\n domElement && this.selectItem(domElement);\n });\n }\n}\n","import { runInAction } from 'mobx';\n\nimport { MouseButtons } from '@app/AppConstants/AppConstants';\nimport { RosterElement } from '../VirtualizedRosterTypes';\n\nimport { appStore } from '@app/AppStore';\n\nimport { BaseRosterSelectionStrategy } from './BaseRosterSelectionStrategy';\n\nexport class RosterSelectionStrategyDefault extends BaseRosterSelectionStrategy {\n private _rangeStartCell: Element | null = null;\n private _selectionBeforeRange: RosterElement[] | null = null;\n private _totalSelection: RosterElement[] | null = null;\n\n protected get areGapsEnabled() {\n return true;\n }\n\n public mouseDownHandler(event: React.MouseEvent): void {\n if (event.button !== MouseButtons.Left && event.button !== MouseButtons.Right) return;\n\n const target = event.target as HTMLDivElement;\n if (!target || target.className !== this.cellInnerClass) return;\n\n const targetElement = this.getElementFromDom(target);\n const isTargetItemSelected = this._roster.selectedCells.some((el) => targetElement && el.personId === targetElement.personId && el.dateUtc === targetElement.dateUtc);\n if (event.button === MouseButtons.Right && isTargetItemSelected) {\n return;\n }\n\n if (target.closest('.selection-disabled')) {\n return;\n }\n\n const shouldAddRange = appStore.isCtrlKey && this.areGapsEnabled && event.button !== MouseButtons.Right;\n if (!shouldAddRange) {\n runInAction(() => {\n this._roster.setFocusedElement(targetElement);\n this._roster.selectedCells = [targetElement];\n });\n }\n\n this._selectionBeforeRange = shouldAddRange ? this._roster.selectedCells : [];\n if (target) {\n this._rangeStartCell = target;\n }\n this._totalSelection = this._getFullSelection(target);\n\n this.selectItem(target);\n }\n\n private _getFullSelection(rangeEndCell: Element) {\n const rangeStartCell = this._rangeStartCell;\n if (!rangeStartCell) return [];\n\n const rangeCells = this.getCellsRange(rangeStartCell, rangeEndCell);\n const totalSelection = this.convertToRosterElements(rangeCells).concat(this._selectionBeforeRange || []);\n return totalSelection;\n }\n\n public mouseMoveHandler(event: React.MouseEvent): void {\n const target = event.target as Element;\n if (target && target.className !== this.cellInnerClass) return;\n\n if (target.closest('.selection-disabled')) {\n return;\n }\n\n const rangeStartCell = this._rangeStartCell;\n if (!rangeStartCell) return;\n\n if (rangeStartCell.closest('.selection-disabled')) {\n this._rangeStartCell = target;\n }\n\n this._totalSelection = this._getFullSelection(target);\n this.updateDomSelection(this._totalSelection);\n if (!this.areGapsEnabled) {\n this._roster.selectedCells = this._totalSelection || [];\n }\n }\n\n public documentMouseUpHandler(): void {\n if (!this._rangeStartCell) return;\n this._roster.selectedCells = this._totalSelection || [];\n this._rangeStartCell = null;\n this._totalSelection = null;\n this._selectionBeforeRange = null;\n }\n}\n\nexport class RosterSelectionStrategyDefaultNoGaps extends RosterSelectionStrategyDefault {\n protected get areGapsEnabled() {\n return false;\n }\n}\n","import { MouseButtons } from '@app/AppConstants/AppConstants';\nimport { BaseRosterSelectionStrategy } from './BaseRosterSelectionStrategy';\nimport { appStore } from '@app/AppStore';\nimport { RosterElement } from '../VirtualizedRosterTypes';\n\nexport class RosterSelectionStrategyMobileRangeWithGap extends BaseRosterSelectionStrategy {\n private _rangeStartCell: Element | null = null;\n private _selectionBeforeRange: RosterElement[] | null = null;\n private _totalSelection: RosterElement[] | null = null;\n\n public mouseDownHandler(event: React.MouseEvent): void {\n if (event.button !== MouseButtons.Left && event.button !== MouseButtons.Right) return;\n const target = event.target as HTMLElement;\n if (!target || target.className !== this.cellInnerClass) return;\n\n this._rangeStartCell = target;\n const targetElement = this.getElementFromDom(target);\n const isTargetCellSelected = !!this._roster.selectedCells.find((el) => el.personId === targetElement.personId && el.dateUtc === targetElement.dateUtc);\n\n if (!target.closest('.date-allowed')) {\n return;\n }\n\n this._selectionBeforeRange = appStore.isCtrlKey ? this._roster.selectedCells : [];\n if (target) {\n this._rangeStartCell = target;\n }\n this._totalSelection = this._getFullSelection(target);\n\n if (!isTargetCellSelected) {\n this.selectItem(target);\n } else {\n this.deselectItem(target);\n }\n }\n\n public mouseMoveHandler(event: React.MouseEvent): void {\n const target = event.target as HTMLDivElement;\n if (target && target.className !== this.cellInnerClass) return;\n\n if (!target.closest('.date-allowed')) {\n return;\n }\n\n const rangeStartCell = this._rangeStartCell;\n if (!rangeStartCell) return;\n\n if (!rangeStartCell.closest('.date-allowed')) {\n this._rangeStartCell = target;\n }\n\n this._totalSelection = this._getFullSelection(target);\n this.updateDomSelection(this._totalSelection);\n }\n\n private _getFullSelection(rangeEndCell: Element) {\n const rangeStartCell = this._rangeStartCell;\n if (!rangeStartCell) return [];\n\n const rangeCells = this.getCellsRange(rangeStartCell, rangeEndCell);\n const totalSelection = this.convertToRosterElements(rangeCells).concat(this._selectionBeforeRange || []);\n return totalSelection;\n }\n\n public documentMouseUpHandler(): void {\n if (!this._rangeStartCell) return;\n this._roster.selectedCells = this.convertToRosterElements(this.getSelectedCells());\n this._rangeStartCell = null;\n this._totalSelection = null;\n this._selectionBeforeRange = null;\n }\n}\n","import { MouseButtons } from '@app/AppConstants/AppConstants';\nimport { BaseRosterSelectionStrategy } from './BaseRosterSelectionStrategy';\n\nexport class RosterSelectionStrategyMobileRangeWithoutGap extends BaseRosterSelectionStrategy {\n private _rangeStartCell: Element | null = null;\n\n public mouseDownHandler(event: React.MouseEvent): void {\n if (event.button !== MouseButtons.Left && event.button !== MouseButtons.Right) return;\n const target = event.target as Element;\n if (!target || target.className !== this.cellInnerClass) return;\n\n if (!target.closest('.date-allowed')) {\n return;\n }\n\n this._rangeStartCell = target;\n\n const selectedCells = this.getSelectedCells();\n // the order of calls is important\n if (selectedCells.length > 1) {\n this.updateDomSelection([]);\n this.selectItem(target);\n }\n if (selectedCells.length === 0) {\n this.selectItem(target);\n }\n if (selectedCells.length === 1) {\n const start = selectedCells[0];\n this.updateDomSelection([]);\n this.selectRange(start, target);\n }\n }\n\n public mouseMoveHandler(event: React.MouseEvent): void {\n const rangeStartCell = this._rangeStartCell;\n if (!rangeStartCell) return;\n const target = event.target as HTMLDivElement;\n if (target && target.className !== this.cellInnerClass) return;\n\n this.selectRange(rangeStartCell, target);\n }\n\n public documentMouseUpHandler(): void {\n if (!this._rangeStartCell) return;\n this._roster.selectedCells = this.convertToRosterElements(this.getSelectedCells());\n this._rangeStartCell = null;\n }\n}\n","import { MouseButtons } from '@app/AppConstants/AppConstants';\nimport { BaseRosterSelectionStrategy } from './BaseRosterSelectionStrategy';\n\nexport class RosterSelectionStrategyMobileSingleRange extends BaseRosterSelectionStrategy {\n private _rangeStartCell: Element | null = null;\n\n public mouseDownHandler(event: React.MouseEvent): void {\n if (event.button !== MouseButtons.Left && event.button !== MouseButtons.Right) return;\n const target = event.target as Element;\n if (!target || target.className !== this.cellInnerClass) return;\n\n if (!target.closest('.date-allowed')) {\n return;\n }\n\n this._rangeStartCell = target;\n this.updateDomSelection([]);\n this.selectItem(target);\n }\n\n public mouseMoveHandler() {\n return;\n }\n\n public documentMouseUpHandler(): void {\n if (!this._rangeStartCell) return;\n this._roster.selectedCells = this.convertToRosterElements(this.getSelectedCells());\n this._rangeStartCell = null;\n }\n}\n","import VirtualizedRoster from './VirtualizedRoster';\n\nexport * from './VirtualizedRosterTypes';\nexport * from './SelectionStrategies';\nexport * from './Stores';\n\nexport default VirtualizedRoster;\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, computed, action } from 'mobx';\n\nimport ApiService from '@app/Services/ApiService';\nimport { PersonAirbusTypeModel } from '@app/Models/WebApiModels';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { FunctionGroupIds } from '@app/AppConstants/PersonFunctions';\n\nimport ReactSelect, { ReactSelectValue, ReactSelectSize } from '@app/Components/ReactSelect';\nimport { shallowEqual } from 'shallow-equal-object';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype AirbusTypePickerProps = {\n clearable?: boolean;\n multi?: boolean;\n value?: string | null;\n selectedCrewFunction?: string | null;\n onSelect?: (value: string | null) => void;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class AirbusTypePicker extends React.Component {\n private _store: AirbusTypePickerStore;\n\n constructor(props: AirbusTypePickerProps) {\n super(props);\n applyDecorators(this);\n this._store = new AirbusTypePickerStore();\n }\n\n componentDidMount(): void {\n void this._store.loadData(this.props.selectedCrewFunction);\n }\n\n componentDidUpdate(prevProps: AirbusTypePickerProps): void {\n if (!shallowEqual(prevProps, this.props)) {\n this._store.loadData(this.props.selectedCrewFunction);\n }\n }\n\n render() {\n const { clearable, selectSize, multi, value } = this.props;\n const { options } = this._store;\n return ;\n }\n\n @action.bound\n private _onChangeHandler(value: ReactSelectValue) {\n this.props.onSelect && this.props.onSelect(value);\n }\n}\n\nclass AirbusTypePickerStore {\n @observable airbusTypes: PersonAirbusTypeModel[] = [];\n private _currentFunctionGroup: string | null = null;\n\n constructor() {\n applyDecorators(this);\n }\n\n @action\n public loadData(selectedCrewFunction?: string | null) {\n if (this._currentFunctionGroup !== selectedCrewFunction) {\n this._currentFunctionGroup = selectedCrewFunction || null;\n void this.loadAirbusTypesFilters();\n }\n }\n\n @action.bound\n public async loadAirbusTypesFilters() {\n if (this._currentFunctionGroup === FunctionGroupIds.Fcm) {\n const [{ data: airbusTypesCabin }, { data: airbusTypesCockpit }] = await Promise.all([\n ApiService.getData(ApiUrls.AirbusTypesUrl, { functionGroupId: FunctionGroupIds.Cabin }),\n ApiService.getData(ApiUrls.AirbusTypesUrl, { functionGroupId: FunctionGroupIds.Cockpit })\n ]);\n this.airbusTypes = [...airbusTypesCabin, ...airbusTypesCockpit].filter((val, i, self) => self.findIndex(t => t.id === val.id) === i);\n return;\n }\n\n const params = {\n functionGroupId: this._currentFunctionGroup\n };\n const airbusTypesResponse = await ApiService.getData(ApiUrls.AirbusTypesUrl, params);\n this.airbusTypes = airbusTypesResponse.data || [];\n }\n\n @computed\n public get options() {\n return this.airbusTypes.map((type) => {\n return { value: type.id, label: type.name || '', isHidden: !type.isVisible };\n });\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action } from 'mobx';\n\nimport { SelectHandler } from '@app/Components/SelectFilter';\nimport { ReactSelectSize } from '@app/Components/ReactSelect';\nimport FilterContainer from '@app/Components/Filters/FilterContainer';\nimport AirbusTypePicker from '@app/Components/Pickers/AirbusTypePicker';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype AirbusTypeFilterProps = {\n clearable?: boolean;\n multi?: boolean;\n value: string | null;\n size?: string;\n selectedCrewFunction?: string | null;\n onSelect?: SelectHandler;\n className?: string;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class AirbusTypeFilter extends React.Component {\n\n constructor (props: AirbusTypeFilterProps) {\n super(props);\n applyDecorators(this);\n }\n\n render () {\n const { clearable, value, size, className, selectSize, selectedCrewFunction, multi } = this.props;\n return (\n \n \n \n );\n }\n\n @action.bound\n private _onChangeHandler (selected: string | null) {\n this.props.onSelect && this.props.onSelect({ value: selected || null });\n }\n}\n","import * as React from 'react';\nimport { observable, computed, action } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { MonthlyTypeModel } from '@app/Models/WebApiModels';\n\nimport ApiService from '@app/Services/ApiService';\n\nimport ReactSelect, { ReactSelectValue, ReactSelectSize } from '@app/Components/ReactSelect';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype MonthlyPickerProps = {\n clearable?: boolean;\n multi?: boolean;\n value?: string | null;\n onSelect?: (value: string | null) => void;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class MonthlyPicker extends React.Component {\n private _store: MonthlyPickerStore;\n\n constructor(props: MonthlyPickerProps) {\n super(props);\n applyDecorators(this);\n this._store = new MonthlyPickerStore();\n }\n\n componentDidMount(): void {\n void this._store.loadMonthlyTypes();\n }\n\n render() {\n const { clearable, selectSize, multi, value } = this.props;\n const { options } = this._store;\n return ;\n }\n\n @action.bound\n private _onChangeHandler(value: ReactSelectValue) {\n this.props.onSelect && this.props.onSelect(value);\n }\n}\n\nclass MonthlyPickerStore {\n @observable monthlyTypes: MonthlyTypeModel[] = [];\n\n constructor() {\n applyDecorators(this);\n }\n\n @action\n public async loadMonthlyTypes() {\n const monthlyTypes = await ApiService.getData(ApiUrls.MonthDutyTypeUrl);\n this.monthlyTypes = monthlyTypes.data || [];\n }\n\n @computed\n public get options() {\n return this.monthlyTypes.map((type) => {\n return { value: `${type.value}`, label: type.name || '' };\n });\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action } from 'mobx';\n\nimport { SelectHandler } from '@app/Components/SelectFilter';\nimport { ReactSelectSize } from '@app/Components/ReactSelect';\nimport FilterContainer from '@app/Components/Filters/FilterContainer';\nimport MonthlyPicker from '@app/Components/Pickers/MonthlyPicker';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype MonthlyFilterProps = {\n clearable?: boolean;\n value: string | null;\n size?: string;\n multi?: boolean;\n onSelect?: SelectHandler;\n className?: string;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class MonthlyFilter extends React.Component {\n\n constructor (props: MonthlyFilterProps) {\n super(props);\n applyDecorators(this);\n }\n\n render () {\n const { clearable, value, size, className, selectSize, multi } = this.props;\n return (\n \n \n \n );\n }\n\n @action.bound\n private _onChangeHandler (selected: string | null) {\n this.props.onSelect && this.props.onSelect({ value: selected });\n }\n}\n","import * as React from 'react';\nimport { observable, computed, action } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { PartialLoadTypeModel } from '@app/Models/WebApiModels';\n\nimport ApiService from '@app/Services/ApiService';\n\nimport ReactSelect, { ReactSelectValue, ReactSelectSize } from '@app/Components/ReactSelect';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype PartialLoadPickerProps = {\n clearable?: boolean;\n multi?: boolean;\n value?: string | null;\n selectSize?: ReactSelectSize;\n onSelect?: (value: string | null) => void;\n};\n\n@observer\nexport default class PartialLoadPicker extends React.Component {\n private _store: PartialLoadPickerStore;\n\n constructor(props: PartialLoadPickerProps) {\n super(props);\n applyDecorators(this);\n this._store = new PartialLoadPickerStore();\n }\n\n render() {\n const { clearable, selectSize, multi, value } = this.props;\n const { options } = this._store;\n return ;\n }\n\n @action.bound\n private _onChangeHandler(value: ReactSelectValue) {\n this.props.onSelect && this.props.onSelect(value);\n }\n}\n\nclass PartialLoadPickerStore {\n @observable partialLoadTypes: Array = [];\n\n constructor() {\n applyDecorators(this);\n void this._loadPartialTypes();\n }\n\n @action\n private async _loadPartialTypes() {\n const partialLoadTypes = await ApiService.getData(ApiUrls.PartialLoadTypeUrl);\n this.partialLoadTypes = partialLoadTypes.data || [];\n }\n\n @computed\n public get options() {\n return this.partialLoadTypes.map((type) => {\n return { value: type.value, label: type.name };\n });\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action } from 'mobx';\n\nimport { SelectHandler } from '@app/Components/SelectFilter';\nimport { ReactSelectSize } from '@app/Components/ReactSelect';\nimport FilterContainer from '@app/Components/Filters/FilterContainer';\nimport PartialLoadPicker from '@app/Components/Pickers/PartialLoadPicker';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype PartialLoadFilterProps = {\n clearable?: boolean;\n value: string | null;\n multi?: boolean;\n size?: string;\n onSelect?: SelectHandler;\n className?: string;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class PartialLoadFilter extends React.Component {\n\n constructor (props: PartialLoadFilterProps) {\n super(props);\n applyDecorators(this);\n }\n \n render () {\n const { clearable, value, size, className, selectSize, multi } = this.props;\n return (\n \n \n \n );\n }\n\n @action.bound\n private _onChangeHandler (selected: string | null) {\n this.props.onSelect && this.props.onSelect({ value: selected });\n }\n}\n","import * as React from 'react';\nimport { observable, computed, action } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { MonthlyTypeModel } from '@app/Models/WebApiModels';\n\nimport ApiService from '@app/Services/ApiService';\n\nimport ReactSelect, { ReactSelectValue, ReactSelectSize } from '@app/Components/ReactSelect';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype ReleasedPickerProps = {\n clearable?: boolean;\n multi?: boolean;\n value?: string | null;\n onSelect?: (value: string | null) => void;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class ReleasedPicker extends React.Component {\n private _store: ReleasedPickerStore;\n\n constructor(props: ReleasedPickerProps) {\n super(props);\n applyDecorators(this);\n this._store = new ReleasedPickerStore();\n }\n\n componentDidMount(): void {\n void this._store.loadMonthlyTypes();\n }\n\n render() {\n const { clearable, selectSize, multi, value } = this.props;\n const { options } = this._store;\n return ;\n }\n\n @action.bound\n private _onChangeHandler(value: ReactSelectValue) {\n this.props.onSelect && this.props.onSelect(value);\n }\n}\n\nclass ReleasedPickerStore {\n @observable releaseFilterTypes: MonthlyTypeModel[] = [];\n\n constructor() {\n applyDecorators(this);\n }\n\n @action\n public async loadMonthlyTypes() {\n const releaseFilterTypes = await ApiService.getData(ApiUrls.ReleaseFilterTypeUrl);\n this.releaseFilterTypes = releaseFilterTypes.data || [];\n }\n\n @computed\n public get options() {\n return this.releaseFilterTypes.map((type) => {\n return { value: `${type.value}`, label: type.name || '' };\n });\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action } from 'mobx';\n\nimport { SelectHandler } from '@app/Components/SelectFilter';\nimport { ReactSelectSize } from '@app/Components/ReactSelect';\nimport FilterContainer from '@app/Components/Filters/FilterContainer';\nimport ReleasedPicker from '@app/Components/Pickers/ReleasedPicker';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype ReleasedFilterProps = {\n clearable?: boolean;\n value: string | null;\n size?: string;\n multi?: boolean;\n onSelect?: SelectHandler;\n className?: string;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class ReleasedFilter extends React.Component {\n \n constructor (props:ReleasedFilterProps) {\n super(props);\n applyDecorators(this);\n }\n \n render() {\n const { clearable, value, size, className, selectSize, multi } = this.props;\n return (\n \n \n \n );\n }\n\n @action.bound\n private _onChangeHandler(selected: string | null) {\n this.props.onSelect && this.props.onSelect({ value: selected });\n }\n}\n","import * as React from 'react';\nimport { observable, computed, action } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { FunctionGroupIds } from '@app/AppConstants/PersonFunctions';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { EnumModel } from '@app/Models/WebApiModels';\n\nimport ApiService from '@app/Services/ApiService';\n\nimport ReactSelect, { ReactSelectValue, ReactSelectSize } from '@app/Components/ReactSelect';\nimport { shallowEqual } from 'shallow-equal-object';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype TypeRatingPickerProps = {\n clearable?: boolean;\n multi?: boolean;\n value?: string | null;\n selectedCrewFunction?: string | null;\n selectSize?: ReactSelectSize;\n onSelect?: (value: string | null) => void;\n};\n\n@observer\nexport default class TypeRatingPicker extends React.Component {\n private _store: TypeRatingPickerStore;\n\n constructor(props: TypeRatingPickerProps) {\n super(props);\n applyDecorators(this);\n this._store = new TypeRatingPickerStore();\n }\n\n componentDidMount(): void {\n void this._store.loadData(this.props.selectedCrewFunction);\n }\n\n componentDidUpdate(prevProps: TypeRatingPickerProps): void {\n if (!shallowEqual(prevProps, this.props)) {\n this._store.loadData(this.props.selectedCrewFunction);\n }\n }\n\n render() {\n const { clearable, selectSize, multi, value } = this.props;\n const { options } = this._store;\n return ;\n }\n\n @action.bound\n private _onChangeHandler(value: ReactSelectValue) {\n this.props.onSelect && this.props.onSelect(value);\n }\n}\n\nclass TypeRatingPickerStore {\n @observable typeRatings: Array = [];\n private _currentFunctionGroup: string | null = null;\n\n constructor() {\n applyDecorators(this);\n }\n\n @action\n public loadData(selectedCrewFunction?: string | null) {\n if (this._currentFunctionGroup !== selectedCrewFunction) {\n this._currentFunctionGroup = selectedCrewFunction || null;\n void this.loadTypeRatingFilters();\n }\n }\n\n @action.bound\n public async loadTypeRatingFilters() {\n const isForCabin = !this._currentFunctionGroup || this._currentFunctionGroup === FunctionGroupIds.Cabin;\n const isForCockpit = !this._currentFunctionGroup || this._currentFunctionGroup === FunctionGroupIds.Cockpit;\n const typeRatingFilters = await ApiService.getData(ApiUrls.TypeRatingFiltersUrl, { isForCabin, isForCockpit });\n this.typeRatings = typeRatingFilters.data || [];\n }\n\n @computed\n public get options() {\n return this.typeRatings.map((type) => {\n return { value: type.code, label: type.name };\n });\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action } from 'mobx';\n\nimport { SelectHandler } from '@app/Components/SelectFilter';\nimport { ReactSelectSize } from '@app/Components/ReactSelect';\nimport FilterContainer from '@app/Components/Filters/FilterContainer';\nimport TypeRatingPicker from '@app/Components/Pickers/TypeRatingPicker';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype TypeRatingFilterProps = {\n clearable?: boolean;\n multi?: boolean;\n value: string | null;\n size?: string;\n selectedCrewFunction?: string | null;\n onSelect?: SelectHandler;\n className?: string;\n selectSize?: ReactSelectSize;\n};\n\n@observer\nexport default class TypeRatingFilter extends React.Component {\n\n constructor (props: TypeRatingFilterProps) {\n super(props);\n applyDecorators(this);\n }\n \n render () {\n const { clearable, value, size, className, selectSize, selectedCrewFunction, multi } = this.props;\n return (\n \n \n \n );\n }\n\n @action.bound\n private _onChangeHandler (selected: string | null) {\n this.props.onSelect && this.props.onSelect({ value: selected });\n }\n}\n","import * as React from 'react';\nimport { Icon } from '@app/Components/Icon';\nimport { IconName } from '@fortawesome/fontawesome-svg-core';\n\ninterface IScreenDisabledProps {\n hidden: boolean;\n message: string;\n iconName?: IconName;\n}\n\nexport class ScreenDisabled extends React.Component {\n render() {\n return (\n \n );\n }\n\n renderIcon() {\n return this.props.iconName && ;\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, action, when, reaction } from 'mobx';\nimport { shallowEqual } from 'shallow-equal-object';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\nenum PopupTrigger {\n Click = 'click',\n Hover = 'hover',\n Manual = 'manual'\n}\n\ntype PopupProps = {\n container: React.RefObject;\n onAppear?: (popupElement: HTMLElement) => Promise;\n onDisappear?: () => void;\n children(popupElement: HTMLElement): JSX.Element | null;\n cssClass?: string;\n styles?: React.CSSProperties;\n trigger?: 'click' | 'hover' | 'manual';\n placement?: 'top' | 'left' | 'bottom' | 'right';\n};\n\ntype PlacementCoords = {\n x: number;\n y: number;\n position: 'top' | 'bottom' | 'left' | 'left-bottom' | 'left-top' | 'right' | 'right-bottom' | 'right-top';\n};\n\nclass PopupPlacement {\n public static readonly top: string = 'top';\n public static readonly right: string = 'right';\n public static readonly bottom: string = 'bottom';\n public static readonly left: string = 'left';\n}\n\n@observer\nexport class Popup extends React.Component {\n @observable private _popup: React.RefObject = React.createRef();\n @observable private _isVisible: boolean = false;\n @observable private _isFreezed: boolean = false;\n @observable.ref private _target: HTMLElement | null = null;\n @observable private _container: React.RefObject | null = null;\n private _timer: number | null = null;\n\n constructor(props: PopupProps) {\n super(props);\n applyDecorators(this);\n this._container = props.container;\n when(\n () => !!(this._container && this._container.current),\n () => {\n const { container, trigger } = this.props;\n const triggerType = trigger ?? PopupTrigger.Hover;\n if (container.current) {\n container.current.addEventListener('scroll', this._documentScrollHandler);\n\n if (triggerType === PopupTrigger.Hover) {\n container.current.addEventListener('mouseover', this._onContainerMouseOver);\n container.current.addEventListener('mouseleave', this._onContainerMouseOut);\n } else if (triggerType === PopupTrigger.Click) {\n container.current.addEventListener('click', this._onContainerClick);\n document.addEventListener('mousedown', this._onContainerOutsideClick);\n }\n }\n }\n );\n\n reaction(\n () => this._popup.current,\n () => {\n if (!!this._popup.current) {\n this._updatePopupPosition();\n }\n }\n );\n }\n\n componentDidUpdate(prevProps: PopupProps) {\n if (!shallowEqual(prevProps, this.props)) {\n this._container = this.props.container;\n }\n }\n\n componentDidMount() {\n const { container } = this.props;\n if (container && container.current) container.current.addEventListener('scroll', this._documentScrollHandler);\n document.addEventListener('scroll', this._documentScrollHandler);\n window.addEventListener('resize', this._updatePopupPosition);\n }\n\n componentWillUnmount() {\n const { container, trigger } = this.props;\n if (container && container.current) {\n container.current.removeEventListener('scroll', this._documentScrollHandler);\n const triggerType = trigger ?? PopupTrigger.Hover;\n\n if (triggerType === PopupTrigger.Hover) {\n container.current.removeEventListener('mouseover', this._onContainerMouseOver);\n container.current.removeEventListener('mouseleave', this._onContainerMouseOut);\n } else if (triggerType === PopupTrigger.Click) {\n container.current.removeEventListener('click', this._onContainerClick);\n document.removeEventListener('mousedown', this._onContainerOutsideClick);\n }\n }\n document.removeEventListener('mouseout', this._documentMouseOutHandler);\n document.removeEventListener('scroll', this._documentScrollHandler);\n window.removeEventListener('resize', this._updatePopupPosition);\n }\n\n @action.bound\n private _onContainerMouseOut() {\n this._hide();\n }\n\n @action.bound\n private _onContainerMouseOver(event: MouseEvent) {\n const currentTarget = event.target as HTMLElement;\n if (currentTarget !== this._target && !currentTarget.closest('.popup')) {\n this._hide();\n this._timer = window.setTimeout(this._checkTarget, 500, currentTarget);\n }\n }\n\n @action.bound\n private _onContainerClick(event: MouseEvent) {\n event.preventDefault();\n const target = event.target as HTMLElement;\n void this._checkTarget(target);\n }\n\n @action.bound\n private _onContainerOutsideClick(event: MouseEvent) {\n if (this._isVisible && !this._isFreezed && !this._popup.current?.contains(event.target as Node)) {\n this._hide();\n }\n }\n\n @action.bound\n public onHidePopup() {\n this._hide();\n }\n\n @action.bound\n public setFreezed(isFreezed: boolean) {\n this._isFreezed = isFreezed;\n }\n\n private _stopTimer() {\n if (this._timer) {\n window.clearTimeout(this._timer);\n this._timer = null;\n }\n }\n\n @action.bound\n private _hide() {\n this._isVisible = false;\n this._stopTimer();\n this._target = null;\n this.props.onDisappear?.();\n }\n\n @action.bound\n private async _checkTarget(sheduledTarget: HTMLElement) {\n if (this.props.onAppear) {\n const canShowPopup = await this.props.onAppear(sheduledTarget);\n if (canShowPopup) {\n this._isVisible = true;\n this._target = sheduledTarget;\n }\n }\n }\n\n @action.bound\n private _documentMouseOutHandler() {\n this._hide();\n }\n\n @action.bound\n private _documentScrollHandler() {\n this._hide();\n }\n\n render() {\n if (!this._isVisible) return null;\n const { cssClass, styles } = this.props;\n return (\n
\n {this._target && this.props.children(this._target)}\n
\n );\n }\n\n @action.bound\n private _updatePopupPosition() {\n if (!this._popup.current) return;\n if (!this._target) return;\n\n const targetRect = this._target.getBoundingClientRect();\n const popupRect = this._popup.current.getBoundingClientRect();\n\n const defaulPlacement = this.props.placement ?? PopupPlacement.top;\n const popupPlacementOrder = this._getPlacementOrder(defaulPlacement);\n const popup = this._popup.current;\n\n for (let i = 0; i < 4; i++) {\n const placement = popupPlacementOrder[i];\n const coords = this._getPlacementCoords(placement, targetRect, popupRect);\n\n if (coords) {\n this._setPopupPosition(popup, coords.x, coords.y, coords.position);\n return;\n }\n }\n\n this._setPopupPosition(popup);\n }\n\n private _getPlacementCoords(placement: string, targetRect: DOMRect, popupRect: DOMRect): PlacementCoords | null {\n if (!document.documentElement) {\n return null;\n }\n\n const docWidth = document.documentElement.clientWidth;\n const docHeight = document.documentElement.clientHeight;\n const indent = 10;\n\n const coords: PlacementCoords = { x: 0, y: 0, position: 'top' };\n\n if (placement === PopupPlacement.top || placement === PopupPlacement.bottom) {\n const targetXCenter = targetRect.right - targetRect.width / 2;\n const popupHalfWidth = popupRect.width / 2;\n\n const fitwidthL = this._fit(targetXCenter, popupHalfWidth, window.scrollX, indent);\n const fitwidthR = this._fit(targetXCenter, popupHalfWidth, window.scrollX + docWidth, indent);\n\n if (!fitwidthL || !fitwidthR) return null;\n\n let y = 0;\n if (placement === PopupPlacement.top) {\n const fitHeight = this._fit(targetRect.top, popupRect.height, 0, indent);\n if (fitHeight) {\n y = targetRect.top - popupRect.height - indent;\n coords.position = 'top';\n }\n }\n\n if (placement === PopupPlacement.bottom) {\n const fitHeight = this._fit(targetRect.bottom, popupRect.height, window.scrollY + docHeight, indent);\n if (fitHeight) {\n y = targetRect.bottom;\n coords.position = 'bottom';\n }\n }\n if (!y) return null;\n\n coords.x = targetXCenter - popupRect.width / 2;\n coords.y = y;\n }\n\n if (placement === PopupPlacement.right || placement === PopupPlacement.left) {\n const targetYCenter = targetRect.bottom - targetRect.height / 2;\n const popupHalfHeight = popupRect.height / 2;\n\n const fitHeightT = this._fit(targetYCenter, popupHalfHeight, 0, indent);\n const fitHeightB = this._fit(targetYCenter, popupHalfHeight, window.scrollY + docHeight, indent);\n\n let y = targetYCenter - popupHalfHeight;\n let x = 0;\n\n if (placement === PopupPlacement.right) {\n const fitWidth = this._fit(targetRect.right, popupRect.width, window.scrollX + docWidth, indent);\n if (fitWidth) {\n x = targetRect.right;\n coords.position = 'right';\n }\n }\n\n if (placement === PopupPlacement.left) {\n const fitWidth = this._fit(targetRect.left, popupRect.width, window.scrollX, indent);\n if (fitWidth) {\n x = targetRect.left - indent - popupRect.width;\n coords.position = 'left';\n }\n }\n\n if (!fitHeightB) {\n y = targetYCenter - popupRect.height + 10;\n coords.position += '-bottom';\n }\n if (!fitHeightT) {\n y = targetYCenter - 10;\n coords.position += '-top';\n }\n\n if (!x) return null;\n\n coords.y = y;\n coords.x = x;\n }\n\n return coords.x !== 0 && coords.y !== 0 ? coords : null;\n }\n\n private _getPlacementOrder(placement: string): string[] {\n const defaultPopupPlacementOrder = [PopupPlacement.top, PopupPlacement.bottom, PopupPlacement.left, PopupPlacement.right];\n if (placement) {\n const index = defaultPopupPlacementOrder.findIndex(order => order === placement);\n defaultPopupPlacementOrder.splice(index, 1);\n defaultPopupPlacementOrder.unshift(placement);\n }\n\n return defaultPopupPlacementOrder;\n }\n\n private _fit(targetPoint: number, popupSide: number, containerPoint: number, indent: number = 0): boolean {\n return Math.abs(containerPoint - targetPoint) > popupSide + indent;\n }\n\n private _setPopupPosition(popup: HTMLDivElement | null, x: number = 0, y: number = 0, position?: string) {\n if (popup) {\n popup.style.left = `${x}px`;\n popup.style.top = `${y}px`;\n if (position && !popup.classList.contains(`popup-${position}`)) popup.className += ` popup-${position}`;\n }\n }\n}\n","interface ISortConfig {\n accessor: keyof T;\n desc: boolean;\n}\n\nexport default class ArrayHelper {\n public static isSameDateArray(value1?: Date[], value2?: Date[]) {\n return ArrayHelper.isSameArray(value1, value2, x => x.getTime());\n }\n\n public static isSameArray(value1?: T[], value2?: T[], valueSelector?: (item: T) => unknown) {\n if ((!value1 && value2) || (value1 && !value2)) return false;\n\n if (!value1 && !value2) return true;\n\n //never happen\n if (!value1 || !value2) return true;\n\n if (value1.length !== value2.length) return false;\n\n for (let i = 0; i < value1.length; i++) {\n if (!valueSelector && value1[i] !== value2[i]) return false;\n if (valueSelector && valueSelector(value1[i]) !== valueSelector(value2[i])) return false;\n }\n return true;\n }\n\n public static distinctBy(array: T[], mapFn: (el: T) => TKey) {\n const itemsMap = new Map();\n array.forEach((el) => {\n const key = mapFn(el);\n const hasItem = itemsMap.has(key);\n if (!hasItem) {\n itemsMap.set(key, el);\n }\n });\n\n return [...itemsMap.values()];\n }\n\n public static groupBy(array: T[], mapFn: (el: T) => TKey) {\n const map = new Map();\n array.forEach((item) => {\n const key = mapFn(item);\n const collection = map.get(key);\n if (!collection) {\n map.set(key, [item]);\n } else {\n collection.push(item);\n }\n });\n return [...map.keys()].map(key => {\n return {\n key: key,\n values: map.get(key) || []\n };\n });\n }\n\n public static sortByAccessor(config: ISortConfig | undefined, isDate: boolean = false, caseSensitive: boolean = false) {\n return (a: T, b: T) => {\n if (!config) {\n return 0;\n }\n\n let valueA: number | string | Date = a[config.accessor];\n let valueB: number | string | Date = b[config.accessor];\n\n if (!caseSensitive && typeof valueA === 'string' && typeof valueB === 'string') {\n valueA = valueA.toLowerCase();\n valueB = valueB.toLowerCase();\n }\n\n if (isDate && typeof valueA === 'string' && typeof valueB === 'string') {\n valueA = new Date(valueA);\n valueB = new Date(valueB);\n }\n\n return (valueA < valueB ? -1 : valueA > valueB ? 1 : 0) * (config.desc ? -1 : 1);\n };\n }\n}\n","export type EmptyProps = {}\n\nexport const applyDecorators = (target: T) => {\n //TODO: makeObservable(this) || makeForm(this);\n};","export const isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) || navigator.platform === 'MacIntel') && !('MSStream' in window);\nexport const isTouchDevice = !matchMedia('(hover:hover)').matches;","import pako from 'pako';\n\nexport const getEncodedToken = (token: string) => {\n const tokenParts = token.split('.');\n\n const dec0 = decodeURIComponent(escape(window.atob(tokenParts[0])));\n const def0 = pako.deflateRaw(dec0, { level: 9,to: 'string' });\n const enc0 = window.btoa(def0);\n \n const dec1 = decodeURIComponent(escape(window.atob(tokenParts[1])));\n const def1 = pako.deflateRaw(dec1, { level: 9, to: 'string' });\n const enc1 = window.btoa(def1);\n\n const encodedToken = enc0 + '.' + enc1 + '.' + tokenParts[2];\n return encodedToken;\n};\n","/* eslint-disable */\nimport { AxiosPromise } from 'axios';\nimport ApiService, { IAjaxOptions, AxiosMethod } from '@app/Services/ApiService';\nexport class BaseApiModelClass< T > {\n constructor(data?: T & {}) {\n if (data)\n for (let property in data)\n if (data.hasOwnProperty(property))\n (< any >this)[property] = (< any >data)[property];\n }\n}\nexport interface IAircraftsParams {}\nexport interface IMaintenanceParams {\n dateFrom?: Date\n dateTo?: Date\n}\nexport interface IGetCabinParams {\n body?: AircraftTypeRecencyReportFilter\n}\nexport interface IGetCockpitParams {\n body?: AircraftTypeRecencyReportCockpitFilter\n}\nexport interface IGetByCodeParams {\n threeLetterCode: string\n}\nexport interface IGetAllParams {\n search?: string\n page?: number\n pageSize?: number\n includeDisabled?: boolean\n}\nexport interface IGetAll2Params {\n threeLetterCode: string\n}\nexport interface IGetReportPOSTParams {\n body?: AirportRecencyReportFilter\n}\nexport interface IGetDataParams {\n personId?: string\n date?: Date\n}\nexport interface IGetRulesParams {\n body?: AreaRouteCompetenceRulesReportFilter\n}\nexport interface IListAllParams {}\nexport interface IRulesListParams {}\nexport interface ICreateRuleParams {\n body?: AreaRouteCompetenceAirportDto\n}\nexport interface IDeleteRuleParams {\n airportThreeLetterCode?: string\n routeCompetenceId?: string\n}\nexport interface IGetWebBasedTrainingsParams {\n personId?: string\n}\nexport interface IAddWebBasedTrainingParams {\n body?: WebBasedTrainingCreateModel\n}\nexport interface IDeleteWebBasedTrainingParams {\n personId?: string\n competencyId?: string\n date?: Date\n}\nexport interface IGetPOSTParams {\n body?: AreaRouteCompetenceReportFilter\n}\nexport interface IGetListAllParams {}\nexport interface ICreateReportParams {\n body?: CateringReportCreateModel\n}\nexport interface IGetReportGETParams {\n reportId: string\n}\nexport interface IGetPOST2Params {\n body?: ChangeLogFilter\n}\nexport interface IPutParams {\n body?: ChangeLogModel\n}\nexport interface ITogglePlanningConfirmationParams {\n changeLogItemId?: string\n isConfirmed?: boolean\n}\nexport interface IUpdateReasonParams {\n body?: UpdateChangeLogTextModel\n}\nexport interface IUpdateOldDutyParams {\n body?: UpdateChangeLogTextModel\n}\nexport interface IUpdateNewDutyParams {\n body?: UpdateChangeLogTextModel\n}\nexport interface IGetFlightCommentsParams {\n flightId?: string\n}\nexport interface IPut2Params {\n body?: FlightCommentDto\n}\nexport interface IGetPersonCommentsParams {\n personId?: string\n date?: Date\n showAllComments?: boolean\n}\nexport interface IPostAllParams {\n body?: PersonCommentCreateDto\n}\nexport interface IPut3Params {\n body?: PersonCommentUpdateDto\n}\nexport interface IUpdateCommentParams {\n body?: PersonCommentUpdateDto\n}\nexport interface IGetDayCommentsParams {\n personId?: string\n date?: Date\n}\nexport interface IPostParams {\n body?: DayCommentCreateDto\n}\nexport interface IPut4Params {\n body?: DayCommentUpdateDto\n}\nexport interface IGetStandByCommentsParams {\n personId?: string\n date?: Date\n}\nexport interface ICreateMultiParams {\n body?: MultiDayCommentCreateDto\n}\nexport interface IGetValidationCommentsParams {\n personId?: string\n personDate?: Date\n}\nexport interface IPut5Params {\n body?: ValidationCommentDto\n}\nexport interface IPut6Params {\n body?: DutyCommentDto\n}\nexport interface IGetDutyParams {\n personId?: string\n date?: Date\n}\nexport interface IPutPlanningNoteParams {\n body?: CreatePlaningNoteModel\n}\nexport interface IGetPlanningNoteParams {\n personId?: string\n date?: Date\n}\nexport interface IDeleteParams {\n id?: string\n}\nexport interface IGetAll3Params {\n commentsIds?:string[] | string \n}\nexport interface IGetPOST3Params {\n body?: CommentReportFilter\n}\nexport interface IGetAll4Params {\n keys?: string\n}\nexport interface IPut7Params {\n body?: ConfigurationModel\n}\nexport interface IGetContractTypesKeyPairValuesParams {}\nexport interface IGetContractTypesFilterDataParams {}\nexport interface IGetAll5Params {\n onlyAirportRelated?: boolean\n}\nexport interface IGetCourseListParams {\n body?: CourseManagementFilter\n}\nexport interface IGetCourseParams {\n id?: string\n}\nexport interface ICreateCourseParams {\n body?: CourseDto\n}\nexport interface IDeleteCourseParams {\n id?: string\n}\nexport interface IGetCabinCrewAttestationReportDataParams {\n body?: CabinCrewAttestationReportFilter\n}\nexport interface IGetCoursePdfParams {\n courseId?: string\n personId?: string\n}\nexport interface IGetCourseBazlParams {\n courseId?: string\n}\nexport interface IImportFileParams {\n formFile?: FileParameter\n}\nexport interface IGetPersonCoursesParams {}\nexport interface IGetCrewPortalCoursePdfParams {\n courseId?: string\n}\nexport interface ISignAttestateParams {\n body?: SignAttestateDto\n}\nexport interface IIncorrectAttestateParams {\n body?: IncorrectAttestateDto\n}\nexport interface IGetAll6Params {}\nexport interface IPut8Params {\n body?: CrewApiConfigurationModel\n}\nexport interface IDeleteAllParams {\n fourLetterCode?: string\n}\nexport interface IGetMassConfigurationParams {}\nexport interface IUpdateMassConfigurationParams {\n body?: CrewApiMassRecipientConfiguration\n}\nexport interface IGetConfigurationReportParams {\n loadOptions_HasInvalidEntries?: boolean\n loadOptions_Filter?: any[]\n loadOptions_RequireTotalCount?: boolean\n loadOptions_RequireGroupCount?: boolean\n loadOptions_IsCountQuery?: boolean\n loadOptions_IsSummaryQuery?: boolean\n loadOptions_Skip?: number\n loadOptions_Take?: number\n loadOptions_Sort?: SortingInfo[]\n loadOptions_Group?: GroupingInfo[]\n loadOptions_TotalSummary?: SummaryInfo[]\n loadOptions_GroupSummary?: SummaryInfo[]\n loadOptions_Select?: string[]\n loadOptions_PreSelect?: string[]\n loadOptions_RemoteSelect?: boolean\n loadOptions_RemoteGrouping?: boolean\n loadOptions_ExpandLinqSumType?: boolean\n loadOptions_PrimaryKey?: string[]\n loadOptions_DefaultSort?: string\n loadOptions_StringToLower?: boolean\n loadOptions_PaginateViaPrimaryKey?: boolean\n loadOptions_SortByPrimaryKey?: boolean\n loadOptions_AllowAsyncOverSync?: boolean\n rowLimit?: number\n}\nexport interface IGetByCodeAllParams {\n countryCode: string\n}\nexport interface IGetMessageFormatsParams {}\nexport interface IGetDeliveryMethodsParams {}\nexport interface IGetTriggersParams {}\nexport interface IGetPayloadParams {\n flightId: string\n itemId?: string\n}\nexport interface IGeneratePayloadsParams {\n flightId: string\n}\nexport interface IManuallyProcessFlightParams {\n flightId: string\n}\nexport interface IGetQueueForFLightParams {\n flightId: string\n}\nexport interface IGetQueueParams {\n locationRcd: string\n}\nexport interface IGetFlightsParams {\n periodFrom?: Date\n periodTo?: Date\n}\nexport interface IGetFlights2Params {\n flightId: string\n}\nexport interface IGetHistoryParams {\n periodFrom?: Date\n periodTo?: Date\n personId?: string\n showAll?: boolean\n}\nexport interface IGetHistoryPayloadParams {\n flightId: string\n itemId: string\n showAll?: boolean\n}\nexport interface IGetPaxLstCountParams {\n flightId?: string\n itemId?: string\n}\nexport interface IGetRelatedAirportsParams {}\nexport interface IGetPersonMclStateParams {\n personId: string\n}\nexport interface IAddPersonToMclQueueParams {\n personId: string\n}\nexport interface IUpdatePersonInMclQueueParams {\n personId: string\n}\nexport interface IDeletePersonInMclQueueParams {\n personId: string\n}\nexport interface ISkipPendingPersonMclChangesParams {\n personId: string\n}\nexport interface IGetMclMissingDataPersonsParams {}\nexport interface ICrewDutyListReportParams {\n body?: CrewDutyListReportFilter\n}\nexport interface IExportReportParams {\n body?: ExportCrewDutyListReportFilter\n}\nexport interface IGetListParams {\n body?: CustomPersonManagementFilter\n}\nexport interface IGetMarshalParams {\n id: string\n}\nexport interface ICreatePersonParams {\n body?: CustomPersonManagementDialogModel\n}\nexport interface IUpdatePersonParams {\n body?: CustomPersonManagementDialogModel\n}\nexport interface IPingParams {}\nexport interface IGetVersionParams {}\nexport interface IGetPOST4Params {\n body?: DooxReportFilter\n}\nexport interface IDosimetryReportParams {\n body?: PersonDosimetryFilter\n}\nexport interface IGetDutiesParams {\n dateFrom?: Date\n dateTo?: Date\n personIds?:string[] | string \n rosterType?: RosterType\n}\nexport interface IUpdateDutyParams {\n body?: DutyCreateModel\n}\nexport interface IDeleteDutyParams {\n body?: DutyRemoveModel\n}\nexport interface IDownloadValidationParams {\n body?: RevalidatePersonModel\n}\nexport interface IDownloadValidationResultParams {\n body?: RevalidatePersonModel\n}\nexport interface IValidationDataParams {\n date?: Date\n personId?: string\n}\nexport interface IValidationDataGroundParams {\n date?: Date\n personId?: string\n}\nexport interface IValidationDataFseParams {\n date?: Date\n personId?: string\n}\nexport interface ICopyParams {\n body?: CopyDutyModel\n}\nexport interface IGetUndoOperationsParams {}\nexport interface IUndoParams {\n operationId?: string\n}\nexport interface IDeleteUndoParams {\n operationId?: string\n}\nexport interface IBulkUndoParams {\n body?: BulkUndoModel\n}\nexport interface IGetDayActivitiesParams {\n day?: Date\n ids?:string[] | string \n functionId?: string\n functionIds?:string[] | string \n codes?: string[]\n referenceDate?: Date\n referenceDateTo?: Date\n qualificationIds?:string[] | string \n contractTypes?: ContractType[]\n contractFlagTypes?: ContractFlagType[]\n partialLoadType?: PartialLoadType\n search?: string\n searchByFullName?: boolean\n dutyFilter?: DutyFilter[]\n monthlyTypes?: MonthlyType[]\n releaseFilterTypes?: ReleaseFilterType[]\n sort?: PersonSortOrder\n order?: SortOrder\n sortBaseDate?: Date\n functionFromDate?: Date\n typeRatingFilters?: TypeRatingFilter[]\n instructorFilters?: string\n aeropersMember?: boolean\n nbuCockpitRelated?: boolean\n nbuCabinRelated?: boolean\n includeInactive?: boolean\n page?: number\n pageSize?: number\n optInShowEfaSchedule?: boolean\n includeWithoutEmail?: boolean\n}\nexport interface IGetMonthDutyTypesParams {}\nexport interface IGetReleaseFilterTypesParams {}\nexport interface IGetDayHistoryParams {\n body?: DutyHistoryFilter\n}\nexport interface ISeatHistoryParams {\n flightIds?:string[] | string \n activityRcd?: string\n}\nexport interface IUpdateTitleParams {\n body?: DutyTitle\n}\nexport interface ISwapSectorsParams {\n body?: SwapSectorModel\n}\nexport interface ISwapRotationsParams {\n body?: SwapRotationModel\n}\nexport interface IModeSectorsParams {\n body?: MoveSectorModel\n}\nexport interface ISwapRotations2Params {\n body?: MoveRotationModel\n}\nexport interface IHideDutyParams {\n body?: HideDutyModel\n}\nexport interface IDayDutiesParams {\n date?: Date\n personId?: string\n}\nexport interface IGetPartialLoadTypesParams {}\nexport interface IGetDutyHoursParams {\n date?: Date\n personId?: string\n activityRcd?: string\n}\nexport interface IChangeDutyHoursParams {\n body?: ChangeDutyHoursModel\n}\nexport interface IGetUrgentDutiesParams {}\nexport interface IGetUrgentDutiesForReleasePeriodParams {}\nexport interface ISetPersonCustomLandingParams {\n body?: PersonDayLandingRequest\n}\nexport interface IGetCustomLandingsParams {\n date?: Date\n personId?: string\n}\nexport interface ISetPersonCustomTakeoffParams {\n body?: PersonDayLandingRequest\n}\nexport interface IGetCustomTakeoffsParams {\n date?: Date\n personId?: string\n}\nexport interface IPersistDutiesParams {\n body?: PersonDaysModel[]\n}\nexport interface IServiceBusMessagesForPersonDayParams {\n personId?: string\n date?: Date\n}\nexport interface IConfigurePlanningPeriodVisibilityParams {\n body?: PlanningPeriodConfigRequest\n}\nexport interface IGetPlanningPeriodsParams {}\nexport interface IGetPlanningRsvPeriodsParams {}\nexport interface IStartPlanningRsvParams {}\nexport interface IReleasePlanningRsvParams {}\nexport interface IGetDutyPartsParams {\n date?: Date\n personId?: string\n}\nexport interface IUpdateDutyPartsParams {\n date?: Date\n personId?: string\n body?: DutyPartUpdateRequest\n}\nexport interface IRecencyLandingsParams {\n dateFrom?: Date\n dateTo?: Date\n personId?: string\n}\nexport interface IRecencyTakeoffsParams {\n dateFrom?: Date\n dateTo?: Date\n personId?: string\n}\nexport interface IGetAll7Params {\n date?: Date\n flightIds?:string[] | string \n}\nexport interface IPost2Params {\n body?: DutyCheckerTraineeModel\n}\nexport interface IPut9Params {\n body?: DutyCheckerTraineeUpdateModel\n}\nexport interface IDelete2Params {\n ids?:string[] | string \n rotationId?: string\n}\nexport interface IGetForRotationParams {\n rotationId?: string\n}\nexport interface IGetFlightTeamParams {\n flightIds?:string[] | string \n functionIds?:string[] | string \n personExcludeIds?:string[] | string \n}\nexport interface IGetGroundTeamParams {\n referenceDate?: Date\n}\nexport interface IDelete3Params {\n date?: Date\n personId?: string\n}\nexport interface IGetFunctionsParams {}\nexport interface ICreateParams {\n body?: DutyPredefinedEditModel\n}\nexport interface IGetAll8Params {}\nexport interface IUpdateParams {\n id: string\n body?: DutyPredefinedEditModel\n}\nexport interface IDelete4Params {\n id: string\n functionId?: string\n functionGroupId?: string\n}\nexport interface IGetAll9Params {\n date?: Date\n personId?: string\n}\nexport interface IGetUrgentParams {\n date?: Date\n personId?: string\n}\nexport interface IGetForRangeParams {\n body?: ValidationErrorsRequestModel\n}\nexport interface IGetSuppressReasonsParams {}\nexport interface IGetLandingAirportsParams {}\nexport interface ISuppressParams {\n body?: SuppressValidationModel\n}\nexport interface ISuppressErrorsParams {\n body?: SuppressErrorsRequest\n}\nexport interface IResumeParams {\n body?: ResumeValidationModel\n}\nexport interface IGetEmailsParams {\n body?: EmailFilter\n}\nexport interface IGetEmailBodyParams {\n emailId?: string\n}\nexport interface IGetEmailAttachmentsParams {\n emailId?: string\n}\nexport interface IGetAttachmentParams {\n id?: string\n}\nexport interface IValidateParams {\n body?: EmailValidateRequest\n}\nexport interface IUpdateStatusParams {\n id: string\n status: MailQueueStatus\n}\nexport interface IPost3Params {\n body?: ClientErrorModel\n}\nexport interface IGetPOST5Params {\n body?: ErrorReportFilter\n}\nexport interface IGetGETParams {}\nexport interface IExperienceReportParams {\n body?: ExperienceReportFilter\n}\nexport interface IFlightsParams {\n dateFrom?: Date\n dateTo?: Date\n ids?: string\n}\nexport interface IPost4Params {\n body?: FlightFlagsRequest\n}\nexport interface IGetAll10Params {\n year: number\n month: number\n day: number\n}\nexport interface IGetFlightInfosParams {\n date?: Date\n destination?: string\n}\nexport interface IAircraftActivityDetailsParams {\n flightId?: string\n}\nexport interface IForDayParams {\n year: number\n month: number\n day: number\n showFull?: boolean\n}\nexport interface IForFlightIdParams {\n flightId: string\n}\nexport interface IGetUrgentFlightIdParams {}\nexport interface IGetUrgentFlightId2Params {\n flightId: string\n}\nexport interface IPutUrgentFlightParams {\n body?: UrgentFlightRequest\n}\nexport interface IPersonExtendedAugmentedParams {\n body?: PersonDayExtendedAugmentedRequest\n}\nexport interface IUpdatePersonDayAmendmentTypeParams {\n body?: PersonDayFdpAmendmentTypeRequest\n}\nexport interface IDecodeParams {\n flightId?: string\n}\nexport interface IGetDayHistory2Params {\n flightId?: string\n}\nexport interface IGetFlightInformationParams {\n flightId?: string\n}\nexport interface IPutFlightInformationParams {\n body?: FlightInformationEditModel\n}\nexport interface IRevalidateFlightParams {\n body?: FlightRevalidateModel\n}\nexport interface IServiceBusMessagesForPersonDay2Params {\n flightId?: string\n}\nexport interface IPublishParams {\n flightId?: string\n}\nexport interface IGetMonthDutyTypes2Params {}\nexport interface IGetCrewParams {\n flightId: string\n function?: CrewFunctionType[]\n}\nexport interface IGetGET2Params {\n date?: Date\n}\nexport interface IDownloadParams {\n date?: Date\n swissTime?: boolean\n}\nexport interface IGetAll11Params {\n date?: Date\n}\nexport interface IGetFunctionGroupParams {}\nexport interface IGenerateParams {\n body?: GenDecDocumentRequest\n}\nexport interface IPreviewParams {\n body?: GenDecDocumentRequest\n}\nexport interface IGetPayload2Params {\n flightId: string\n itemId?: string\n}\nexport interface IGeneratePayloads2Params {\n flightId: string\n}\nexport interface IGetReportGET2Params {\n reportId: string\n}\nexport interface IGetAircraftRotationsParams {\n periodFrom?: Date\n periodTo?: Date\n}\nexport interface IGetConfigurationsParams {\n countryThreeLetterCode?: string\n airportRcd?: string\n}\nexport interface IPut10Params {\n body?: GenDecConfigurationModel\n}\nexport interface IDeleteAll2Params {\n countryThreeLetterCode?: string\n airportRcd?: string\n}\nexport interface IGetRelatedAirports2Params {}\nexport interface IGetFlights3Params {\n periodFrom?: Date\n periodTo?: Date\n}\nexport interface IGetFlights4Params {\n flightId: string\n}\nexport interface IGetConfigurationReport2Params {\n loadOptions_HasInvalidEntries?: boolean\n loadOptions_Filter?: any[]\n loadOptions_RequireTotalCount?: boolean\n loadOptions_RequireGroupCount?: boolean\n loadOptions_IsCountQuery?: boolean\n loadOptions_IsSummaryQuery?: boolean\n loadOptions_Skip?: number\n loadOptions_Take?: number\n loadOptions_Sort?: SortingInfo[]\n loadOptions_Group?: GroupingInfo[]\n loadOptions_TotalSummary?: SummaryInfo[]\n loadOptions_GroupSummary?: SummaryInfo[]\n loadOptions_Select?: string[]\n loadOptions_PreSelect?: string[]\n loadOptions_RemoteSelect?: boolean\n loadOptions_RemoteGrouping?: boolean\n loadOptions_ExpandLinqSumType?: boolean\n loadOptions_PrimaryKey?: string[]\n loadOptions_DefaultSort?: string\n loadOptions_StringToLower?: boolean\n loadOptions_PaginateViaPrimaryKey?: boolean\n loadOptions_SortByPrimaryKey?: boolean\n loadOptions_AllowAsyncOverSync?: boolean\n rowLimit?: number\n}\nexport interface IGetAll12Params {\n ids?:string[] | string \n}\nexport interface IGetReportGET3Params {\n date?: Date\n}\nexport interface IGetGET3Params {}\nexport interface IErrorParams {\n body?: JsErrorModel\n}\nexport interface IGetHomeStudyParams {\n dateFrom?: Date\n dateTo?: Date\n functionId?: string\n contractTypes?: ContractType[]\n loadOptions_HasInvalidEntries?: boolean\n loadOptions_Filter?: any[]\n loadOptions_RequireTotalCount?: boolean\n loadOptions_RequireGroupCount?: boolean\n loadOptions_IsCountQuery?: boolean\n loadOptions_IsSummaryQuery?: boolean\n loadOptions_Skip?: number\n loadOptions_Take?: number\n loadOptions_Sort?: SortingInfo[]\n loadOptions_Group?: GroupingInfo[]\n loadOptions_TotalSummary?: SummaryInfo[]\n loadOptions_GroupSummary?: SummaryInfo[]\n loadOptions_Select?: string[]\n loadOptions_PreSelect?: string[]\n loadOptions_RemoteSelect?: boolean\n loadOptions_RemoteGrouping?: boolean\n loadOptions_ExpandLinqSumType?: boolean\n loadOptions_PrimaryKey?: string[]\n loadOptions_DefaultSort?: string\n loadOptions_StringToLower?: boolean\n loadOptions_PaginateViaPrimaryKey?: boolean\n loadOptions_SortByPrimaryKey?: boolean\n loadOptions_AllowAsyncOverSync?: boolean\n rowLimit?: number\n}\nexport interface IGetPOST6Params {\n body?: CreateHomeStudyFilter\n}\nexport interface ILocationHotelBookingInfosParams {\n body?: LocationInfoHotelBookingFilter\n}\nexport interface IPreReservationLocationsMonthParams {\n body?: LocationMonthHotelBookingFilter\n}\nexport interface IHotelDetailsParams {\n transitionDate?: Date\n departureDateTimeLt?: Date\n location?: string\n locationRoute?: string\n locationTimeDiff?: string\n}\nexport interface IHotelPersonDetailsParams {\n body?: PersonDetailsHotelBookingFilter\n}\nexport interface IPreReservationHotelDetailsParams {\n location?: string\n}\nexport interface IPreReservationHotelBookingDetailsParams {\n body?: HotelBookingDetailsFilter\n}\nexport interface ICreateEmailForHotelParams {\n transitionDate?: Date\n departureDateTimeLt?: Date\n location?: string\n locationRoute?: string\n locationTimeDiff?: string\n}\nexport interface ICreatePreReservationEmailForHotelParams {\n year?: number\n month?: number\n location?: string\n}\nexport interface IGetGET4Params {\n isForCabin?: boolean\n isForCockpit?: boolean\n}\nexport interface IGetInstructorFiltersParams {\n body?: InstructorFilterGridFilter\n}\nexport interface ICreateOrUpdateFilterParams {\n body?: InstructorFilterDialogModel\n}\nexport interface IDeleteFilterParams {\n codeName?: string\n}\nexport interface IGetByCode2Params {\n codeName: string\n}\nexport interface IGetJeppesenFileParams {\n jobExecutionId?: string\n}\nexport interface IGetRosterExportIfoParams {}\nexport interface IGetCrewExportIfoParams {}\nexport interface IGetRosterImportIfoParams {}\nexport interface IGetRosterImportExecutionsParams {\n body?: RosterImportFilter\n}\nexport interface IGetRosterImportDetailsParams {\n body?: RosterImportDetailsFilter\n}\nexport interface IGetRosterImportDetailsErrorParams {\n importId?: string\n}\nexport interface IGetRosterImportFileDataParams {\n importId?: string\n}\nexport interface IUploadRosterImportParams {\n formFile?: FileParameter\n}\nexport interface IGetCasImportInfoParams {}\nexport interface IGetCasImportFileParams {}\nexport interface IUploadCasImportFileParams {\n formFile?: FileParameter\n}\nexport interface IListParams {}\nexport interface IGetByIdParams {\n id: string\n}\nexport interface IStartParams {\n jobName: string\n body?: JobStartModel\n}\nexport interface IParametersGETParams {\n jobName: string\n triggerName?: string\n isJobSettings?: boolean\n}\nexport interface IParametersPOSTParams {\n cronExpression: string\n}\nexport interface IParametersPOST2Params {\n triggerName: string\n body?: JobSaveParametersModel\n}\nexport interface ISettingsParams {\n jobName: string\n body?: JobSaveParametersModel\n}\nexport interface ICreate2Params {\n body?: JobSaveParametersModel\n}\nexport interface IDelete5Params {\n triggerId?: string\n jobName?: string\n}\nexport interface IIsTriggerNameUniqueParams {\n triggerName?: string\n}\nexport interface IStopParams {\n jobName: string\n jobExecutionId?: string\n}\nexport interface IGetRosterImportExecutions2Params {\n body?: LicenseManagementFilter\n}\nexport interface IGetLicenseParams {\n id?: string\n}\nexport interface IPostLicenseParams {\n body?: LicenseManagementDialogModel\n}\nexport interface IPutLicenseParams {\n body?: LicenseManagementDialogModel\n}\nexport interface IDeleteLicenseParams {\n id?: string\n}\nexport interface IGetOptionsParams {}\nexport interface IGetSeniorityAllParams {\n body?: LogbookFilter\n}\nexport interface IExportReport2Params {\n body?: ExportLogbookModel\n}\nexport interface IUpdateMaintenanceNotificationParams {\n body?: MaintenanceModel\n}\nexport interface IPut11Params {\n body?: MaintenanceModel\n}\nexport interface IGetGET5Params {}\nexport interface ICanBypassMaintenanceParams {}\nexport interface IPing2Params {}\nexport interface IGetPOST7Params {\n body?: OffDaysReportFilter\n}\nexport interface IGetConnectedClientsParams {}\nexport interface IGetRosterActivitiesParams {}\nexport interface IGetAll13Params {}\nexport interface IGetRolesParams {}\nexport interface IGetForRoleParams {\n roleId: number\n}\nexport interface IGetAll14Params {\n ids?:string[] | string \n functionId?: string\n functionIds?:string[] | string \n codes?: string[]\n referenceDate?: Date\n referenceDateTo?: Date\n qualificationIds?:string[] | string \n contractTypes?: ContractType[]\n contractFlagTypes?: ContractFlagType[]\n partialLoadType?: PartialLoadType\n search?: string\n searchByFullName?: boolean\n dutyFilter?: DutyFilter[]\n monthlyTypes?: MonthlyType[]\n releaseFilterTypes?: ReleaseFilterType[]\n sort?: PersonSortOrder\n order?: SortOrder\n sortBaseDate?: Date\n functionFromDate?: Date\n typeRatingFilters?: TypeRatingFilter[]\n instructorFilters?: string\n aeropersMember?: boolean\n nbuCockpitRelated?: boolean\n nbuCabinRelated?: boolean\n includeInactive?: boolean\n page?: number\n pageSize?: number\n optInShowEfaSchedule?: boolean\n includeWithoutEmail?: boolean\n}\nexport interface IRevalidateParams {\n body?: RevalidatePersonModel\n}\nexport interface IPublish2Params {\n body?: RevalidatePersonModel\n}\nexport interface ILookupParams {\n body?: PersonFilter\n}\nexport interface IGetGET6Params {\n phone?: string\n}\nexport interface IGetRelatedPersonParams {}\nexport interface ISendSmsParams {\n body?: SendSmsBody\n}\nexport interface IGetCrewSmsParams {\n flightIds?:string[] | string \n isEta?: boolean\n}\nexport interface IGetSeatHistoryParams {\n personId?: string\n}\nexport interface IGetMintLicensesParams {\n personId?: string\n}\nexport interface IGetMintLicenseInactivationsParams {\n personId?: string\n}\nexport interface IGetPersonEntriesParams {\n personId?: string\n}\nexport interface IGetPersonFunctionsParams {\n personId?: string\n}\nexport interface IGetPlanningFunctionOverrulesParams {\n personId?: string\n}\nexport interface IGetAircraftActivitiesParams {\n personId?: string\n}\nexport interface IGetSpecialAirportsParams {\n personId?: string\n}\nexport interface IGetPersonExperienceSummaryParams {\n personId?: string\n}\nexport interface IGetShowMyScheduleParams {}\nexport interface ISetShowMyScheduleParams {\n body?: ShowSettingModel\n}\nexport interface IGetAllowSecondReserveParams {}\nexport interface ISetAllowSecondReserveParams {\n body?: ShowSettingModel\n}\nexport interface IGetShowMyPhoneParams {}\nexport interface ISetShowMyPhoneParams {\n body?: ShowSettingModel\n}\nexport interface IGetShowMyScheduleToEFAMembersParams {}\nexport interface ISetShowMyScheduleToEFAMembersParams {\n body?: ShowSettingModel\n}\nexport interface IGetShowMyScheduleToAeropersMembersParams {}\nexport interface ISetShowMyScheduleToAeropersMembersParams {\n body?: ShowSettingModel\n}\nexport interface IServiceBusMessagesForPersonDay3Params {\n personId?: string\n}\nexport interface IGetPersonModificationsParams {\n personId: string\n}\nexport interface IGetAll15Params {}\nexport interface IPost5Params {\n body?: PersonAircraftTypeExperienceOverrule\n}\nexport interface IPut12Params {\n body?: PersonAircraftTypeExperienceOverrule\n}\nexport interface IDelete6Params {\n personId?: string\n aircraftTypeGroupId?: string\n activityId?: string\n date?: Date\n}\nexport interface IGetGET7Params {\n personId: string\n aircraftTypeGroup: string\n activity: string\n date: Date\n}\nexport interface IGetOverruleParams {\n personId: string\n aircraftTypeGroup: string\n activity: string\n}\nexport interface IGetAll16Params {\n personId?: string\n}\nexport interface IGetLastParams {\n personId?: string\n}\nexport interface IConfirmPUTParams {\n body?: PersonChangeLogConfirmModel\n}\nexport interface IGetPersonInfoParams {\n date?: Date\n personIds?:string[] | string \n functionId?: string\n}\nexport interface IPersonQuarterInfosParams {\n date?: Date\n personIds?:string[] | string \n}\nexport interface IPersonSummaryFiguresInfosParams {\n date?: Date\n personIds?:string[] | string \n}\nexport interface IPersonDeltaFiguresInfosParams {\n date?: Date\n personIds?:string[] | string \n}\nexport interface IPersonConsecutiveMonthsDaysOffInfosParams {\n date?: Date\n personIds?:string[] | string \n}\nexport interface IPersonDutyPeriodInfosParams {\n personId?: string\n dateFrom?: Date\n dateTo?: Date\n}\nexport interface IPersonDayDutyFiguresParams {\n body?: PersonDayDutyFiguresFilter\n}\nexport interface IUpdateDayStatusParams {\n body?: PlanningGroupDayStatusRequest\n}\nexport interface IChangeCheckInCheckOutParams {\n body?: ChangeCheckInCheckOutModel\n}\nexport interface IResetCheckInCheckOutParams {\n body?: CheckInCheckOutModel\n}\nexport interface IGetCustomCheckInCheckOutInfoParams {\n date?: Date\n personId?: string\n}\nexport interface ISetByEstimatedParams {\n body?: SetEstimatedCiCoModel\n}\nexport interface IPersonDatePopupDataParams {\n date?: Date\n personId?: string\n}\nexport interface IGetLocationParams {\n personId?: string\n date?: Date\n}\nexport interface IGetLicenseDistinctNamesParams {\n functionGroupId?: string\n}\nexport interface IGetPointsBalanceParams {\n referenceDate?: Date\n}\nexport interface IValidateRequestOffParams {\n periodDateFrom?: Date\n periodDateTo?: Date\n type?: PersonRequestOffType\n}\nexport interface ICreateRequestOffParams {\n body?: PersonOffRequestCreate\n}\nexport interface IUpdateRequestsOffParams {\n id?: string\n body?: PersonOffRequestUpdate\n}\nexport interface ICancelRequestsOffParams {\n id?: string\n}\nexport interface IGetRequestsOffParams {\n type?: PersonRequestOffType\n referenceDate?: Date\n}\nexport interface IResolveRequestParams {\n requestId?: string\n}\nexport interface IGetRequestsFlightsParams {\n dateFrom?: Date\n dateTo?: Date\n location?: string\n aircraft?: string\n flightNumber?: string\n days?: string\n offset?: number\n pageSize?: number\n}\nexport interface IGetRequestsFlightParams {\n referenceDate?: Date\n}\nexport interface IRequestFlightParams {\n body?: PersonFlightRequest\n}\nexport interface IDeleteFlightParams {\n id?: string\n}\nexport interface IGetJobTriggersStatusesParams {\n isCabin?: boolean\n isFlight?: boolean\n}\nexport interface IRejectFlightRequestByPlannerParams {\n body?: PersonRequestFlightRejectModel\n}\nexport interface IGetRequestsParams {\n dateFrom?: Date\n dateTo?: Date\n}\nexport interface IGetPointsLogParams {\n referenceDate?: Date\n}\nexport interface IGetPointsPeriodsParams {}\nexport interface IPersonRequestPersonInfoDtoParams {\n referenceDate?: Date\n}\nexport interface IGetAvailableRequestRangeParams {}\nexport interface IGetOffLimitsParams {\n referenceDate?: Date\n}\nexport interface IGetFrLimitsCockpitParams {\n referenceDate?: Date\n}\nexport interface IGetFrLimitsCabinParams {\n referenceDate?: Date\n}\nexport interface IGetFrLimitsLogsCabinParams {\n referenceDate?: Date\n type?: FlightRequestLimitRange\n}\nexport interface IGetFrLimitsLogsCockpitParams {\n referenceDate?: Date\n}\nexport interface ICreateFrLimitsCorrectionParams {\n body?: FlightLimitsCorrectionModel\n}\nexport interface IIsConstantCabinFreelancerParams {}\nexport interface IGetFlightRequestOffsParams {\n body?: RotationOffsRequestModel\n}\nexport interface ICreateVacationDaysManualCorrectionParams {\n body?: PointsManualCorrectionModel\n}\nexport interface IPost6Params {\n body?: PersonRequestBlockedFlightDto\n}\nexport interface IDelete7Params {\n flightId?: string\n}\nexport interface IGetAll17Params {\n dateFrom?: Date\n dateTo?: Date\n term?: string\n}\nexport interface ICreateRequestsOffParams {\n body?: PersonRequestBlockedDayDto\n}\nexport interface IUpdateRequestsOff2Params {\n body?: PersonRequestBlockedDayDto\n}\nexport interface IDeleteBlockedDayParams {\n day?: Date\n}\nexport interface IGetBlockedDaysParams {\n dateFrom?: Date\n dateTo?: Date\n}\nexport interface IGetFreelanceYearsAllParams {}\nexport interface IGetContractInfosParams {}\nexport interface IValidateAllParams {\n date?: Date\n}\nexport interface IGetPeriodExportParams {\n yearPeriodId?: string\n}\nexport interface IConfirmPOSTParams {\n body?: PersonRequestFreelanceConfirmModel\n}\nexport interface IDeviateParams {\n body?: PersonRequestFreelanceDeviateModel\n}\nexport interface IUpdateDuty2Params {\n body?: PersonRequestFreelanceCreateModel\n}\nexport interface IPersonNbuReportParams {\n body?: PersonNbuFilter\n}\nexport interface ICreateNbuParams {\n body?: PersonNbuUpdateModel\n}\nexport interface IUpdateNbuParams {\n body?: PersonNbuUpdateModel\n}\nexport interface IDeleteNbuParams {\n id: string\n}\nexport interface ISuppress2Params {\n body?: SuppressValidationModel\n}\nexport interface IResume2Params {\n body?: ResumeValidationModel\n}\nexport interface IGetMonthParams {\n date?: Date\n}\nexport interface IUpdateMonthParams {\n body?: UpdateNbuMonthRequest\n}\nexport interface IGetReserveRequestsParams {\n reserveYearPeriodId?: string\n}\nexport interface ICreateReserveRequestParams {\n body?: PersonReserveRequestCreate\n}\nexport interface IDeleteRequestParams {\n id?: string\n}\nexport interface IGetReserveRequestAvailableParams {\n reserveYearId?: string\n}\nexport interface IGetReserveBlocksAllParams {\n reserveYearPeriodId?: string\n}\nexport interface IGetReservePeriodsParams {\n date?: Date\n includingYearId?: string\n}\nexport interface IGetPersonDutyBlocksParams {\n yearId?: string\n}\nexport interface IGetBalanceParams {\n yearId?: string\n}\nexport interface IGetFreelanceYearsParams {}\nexport interface IGetWishTypesParams {}\nexport interface IGetWishParams {}\nexport interface ICreateWishParams {\n body?: PersonWishCreateModel\n}\nexport interface IDeleteWishParams {\n id: string\n}\nexport interface IGetWishHistoryParams {}\nexport interface IGetTzvYearsParams {\n includingTzvYearId?: string\n}\nexport interface IGetTzvBalanceInfoParams {\n yearId?: string\n}\nexport interface IGetTzvBalanceTotalParams {\n yearId?: string\n}\nexport interface IHasTzvContractParams {}\nexport interface IGetPersonAbsenceDaysParams {\n yearId?: string\n}\nexport interface IGetContractInfos2Params {\n yearId?: string\n}\nexport interface ICreateTzvManualCorrectionParams {\n body?: DaysManualCorrectionModel\n}\nexport interface IUpdateTzvManualCorrectionParams {\n body?: DaysManualCorrectionModel\n}\nexport interface IDeleteTzvManualCorrectionParams {\n id: string\n}\nexport interface IGetPersonTzvDayAssignmentModelsParams {\n periodFrom?: Date\n periodTo?: Date\n}\nexport interface ICreateTzvAssignmentDayParams {\n body?: TzvDayAssigmentCreateModel\n}\nexport interface IDeleteTzvAssignmentDayParams {\n id: string\n}\nexport interface IValidateVacRequestParams {\n periodDateFrom?: Date\n requestBlockId?: string\n periodDateTo?: Date\n type?: PersonRequestVacType\n priority?: PersonRequestVacPriority\n days?: number\n daysMin?: number\n editableRequestId?: string\n}\nexport interface ICreateRequestVacParams {\n body?: PersonRequestVacCreate\n}\nexport interface IUpdateRequestVacParams {\n body?: PersonRequestVacUpdate\n}\nexport interface IGetVacRequestsParams {\n vacationYearPeriodId?: string\n}\nexport interface IUpdateRequestVacBlockPersonAnswerParams {\n body?: PersonRequestVacBlockPersonAnswerModel\n}\nexport interface IDeleteRequestVacParams {\n id: string\n}\nexport interface IVacRulesStatusParams {\n vacationPeriodId?: string\n}\nexport interface IGetAvailableVacSDaysAndDeadlineParams {\n vacationYearPeriodId?: string\n}\nexport interface IGetAvailableVacPDaysAndDeadlineParams {\n vacationYearPeriodId?: string\n}\nexport interface IGetAvailableVacTypesParams {\n vacationYearPeriodId?: string\n}\nexport interface IGetVacationBalanceInfoParams {\n yearId?: string\n}\nexport interface IGetVacationBalanceTotalParams {\n yearId?: string\n}\nexport interface ICreateVacationDaysManualCorrection2Params {\n body?: DaysManualCorrectionModel\n}\nexport interface IUpdateVacationDaysManualCorrectionParams {\n body?: DaysManualCorrectionModel\n}\nexport interface IDeleteVacationDaysManualCorrectionParams {\n id: string\n}\nexport interface IGetVacationPeriodsParams {\n date?: Date\n includingVacationYearId?: string\n}\nexport interface IGetVacationYearsParams {}\nexport interface IAcceptOrDeclineAlternativeVacationParams {\n requestId: string\n requestBlockId: string\n body?: PersonDecisionModel\n}\nexport interface IGetPersonAbsenceDays2Params {\n yearId?: string\n}\nexport interface IGetRequestVacLogParams {\n requestBlockId: string\n}\nexport interface IPersonReportParams {\n body?: PersonReportFilter\n}\nexport interface IGetCabinViewParams {}\nexport interface IGetCabinRecencyViewParams {}\nexport interface IGetCockpitRecencyViewParams {}\nexport interface IGetPOST8Params {\n body?: PlannedTrainingsReportFilter\n}\nexport interface IGetCandidatesParams {\n activityCode?: string\n date?: Date\n flightIds?:string[] | string \n rotationId?: string\n}\nexport interface IValidateCandidateParams {\n personId?: string\n activityCode?: string\n date?: Date\n flightIds?:string[] | string \n rotationId?: string\n}\nexport interface IGetRestTimeTypesParams {\n body?: DutyRestTimeDeltaRequestModel\n}\nexport interface IGetById2Params {\n id?: string\n}\nexport interface IGetForDayParams {\n personId?: string\n date?: Date\n}\nexport interface IListCodesParams {}\nexport interface IGetFlights5Params {\n date?: Date\n from?: string\n to?: string\n}\nexport interface IGetAvailableDirectionForADayParams {\n date?: Date\n}\nexport interface IGetCustomsParams {\n type?: PositioningType\n}\nexport interface IGetDateTimeDiffToLtParams {\n date?: Date\n}\nexport interface IGetListAll2Params {}\nexport interface ICreateReport2Params {\n body?: QualityLoopJobStartModel\n}\nexport interface IGetReportDataParams {\n reportId: string\n}\nexport interface IGetReportMappingParams {\n reportId: string\n}\nexport interface IGetGET8Params {\n personId: string\n}\nexport interface IPersonReport2Params {\n body?: ReccurentTrainingReportFilter\n}\nexport interface IGetReleaseGroupsParams {}\nexport interface IGetReleasePeriodsParams {}\nexport interface IGetPersonsWithNotFullDutyMonthParams {\n year?: number\n month?: number\n functionGroupId?: string\n functionId?: string\n}\nexport interface IHistorizeParams {\n year?: number\n month?: number\n functionGroupId?: string\n functionId?: string\n}\nexport interface IGetIsReleasedParams {\n year?: number\n month?: number\n functionGroupId?: string\n functionId?: string\n}\nexport interface IGetReleaseDateParams {}\nexport interface IGetAll18Params {\n skip?: number\n take?: number\n}\nexport interface ICreate3Params {\n body?: ReleaseNoteModel\n}\nexport interface IGetGET9Params {\n id: string\n}\nexport interface IUpdate2Params {\n id: string\n body?: ReleaseNoteModel\n}\nexport interface IDelete8Params {\n id: string\n}\nexport interface IMarkReadParams {\n id?: string\n}\nexport interface IAnalyzeFileParams {\n formFile?: FileParameter\n}\nexport interface IImportFile2Params {\n body?: RequestCapacityAnalyzedModel\n}\nexport interface IGetCapacityToolOverviewParams {\n periodFrom?: Date\n periodTo?: Date\n}\nexport interface IGetPOST9Params {\n body?: ReserveManagementReportFilter\n}\nexport interface IGetReserveYearPeriodModelsParams {}\nexport interface IChangeStatusParams {\n reserveYearPeriodId: string\n body?: ReservePeriodChangeStatusModel\n}\nexport interface IRequestApproveParams {\n body?: ApproveReserveRequestModel\n}\nexport interface ICloseAndInformPersonRequestParams {\n body?: InformReserveRequestModel\n}\nexport interface IRejectRequestParams {\n body?: RejectReserveRequestModel\n}\nexport interface IUndoRequestParams {\n body?: ReserveRequestModel\n}\nexport interface IChangeCommentParams {\n body?: ReserveRequestChangePlannersCommentModel\n}\nexport interface IGetYearPeriodsFilterOptionsParams {}\nexport interface IGetReserveBlocksParams {\n body?: ReserveBlocksFilter\n}\nexport interface ICreateReserveBlockParams {\n body?: CreateReserveBlockModel\n}\nexport interface IDeleteReserveBlockParams {\n blockId?: string\n}\nexport interface IForDay2Params {\n year: number\n month: number\n day: number\n}\nexport interface ILonghaulParams {\n year: number\n month: number\n day: number\n personId?: string\n functionIds?:string[] | string \n}\nexport interface ILonghaulForPeriodParams {\n direction?: string\n dateFrom?: Date\n dateTo?: Date\n}\nexport interface IGetInfoByIdParams {\n id?: string\n personId?: string\n functionGroupId?: string\n}\nexport interface IGetDirectionsListParams {\n dateFrom?: Date\n dateTo?: Date\n isLonghaulOnly?: boolean\n}\nexport interface IGetApplicableCopyDatesListParams {\n rotationId?: string\n}\nexport interface IGetApplicableFlightDatesListParams {\n direction?: string\n dateFrom?: Date\n dateTo?: Date\n}\nexport interface IGetAvailableFlightsListParams {\n direction?: string\n dateFrom?: Date\n dateTo?: Date\n}\nexport interface IInitRotationParams {\n firstFlightId?: string\n direction?: string\n isForCockpit?: boolean\n isForCabin?: boolean\n isInbound?: boolean\n}\nexport interface IPut13Params {\n body?: RotationModel\n}\nexport interface IGetById3Params {\n id?: string\n}\nexport interface IGetIdByRotationKeyParams {\n personId?: string\n rotationKey?: string\n date?: Date\n}\nexport interface ICopy2Params {\n body?: RotationCopyModel\n}\nexport interface IBuildParams {\n body?: RotationModel\n}\nexport interface IDelete9Params {\n rotationId?: string\n}\nexport interface IGetRotationsParams {\n flightId: string\n}\nexport interface IGetAircraftRotations2Params {\n periodFrom?: Date\n periodTo?: Date\n}\nexport interface ISectorsReportParams {\n body?: SectorsReportFilter\n}\nexport interface IMonitoringParams {}\nexport interface IMonitoringSendingQueuePersonDayParams {\n ttl?: number\n sentAtLeast?: number\n}\nexport interface IMonitoringJobParams {\n jobName: string\n duration?: number\n}\nexport interface IGetPOST10Params {}\nexport interface ICheckMonitoringJobsParams {}\nexport interface ICheckSignalRParams {}\nexport interface ICheckMonitoringSignalRParams {}\nexport interface IDatabaseParams {}\nexport interface ICheckMonitoringDatabaseParams {}\nexport interface IUpdateDatabaseParams {}\nexport interface ICheckPersonDayQueueParams {}\nexport interface ICheckNetlineOpsQueueParams {}\nexport interface ICheckPersonMessageBusQueueParams {}\nexport interface ICheckCrewApiQueueParams {}\nexport interface ICheckCrewApiMclQueueParams {}\nexport interface ICheckPersonRevalidateParams {}\nexport interface ICheckEmailQueueParams {}\nexport interface IGetSeniorityParams {\n body?: SeniorityReportFilter\n}\nexport interface IChangeComment2Params {\n body?: SeniorityCommentModel\n}\nexport interface IChangeExitDateParams {\n body?: SeniorityExitDateModel\n}\nexport interface IChangeEntryDateParams {\n body?: SeniorityEntryDateModel\n}\nexport interface IDownloadMessagesParams {\n fromDateTime?: Date\n toDateTime?: Date\n labelFilter?: string\n tagFilter?: string\n}\nexport interface IGetMessageLabelsParams {\n fromDateTime?: Date\n toDateTime?: Date\n}\nexport interface IGetMessageTagsParams {\n fromDateTime?: Date\n toDateTime?: Date\n labelFilter?: string\n}\nexport interface IDownloadFullLogsParams {\n date?: Date\n}\nexport interface IDownloadDayLogsParams {\n date?: Date\n}\nexport interface IDownloadDeadlettersParams {}\nexport interface IMessageStatisticsParams {\n dateTimeFrom?: Date\n}\nexport interface IOperationsParams {\n fromDateTime?: Date\n toDateTime?: Date\n top?: number\n showSystem?: boolean\n}\nexport interface IGetDatesWithLogsListParams {}\nexport interface IGetMessagesDatesListParams {}\nexport interface IRestartSchedulerParams {}\nexport interface IQueueStatisticsParams {}\nexport interface IQueueDeadlettersParams {}\nexport interface IDeleteDeadletterParams {\n id?: string\n}\nexport interface IGetGET10Params {\n id?: string\n}\nexport interface IGetPOST11Params {\n body?: SimulationReportFilter\n}\nexport interface IPlannedAircraftActivitiesParams {\n date?: Date\n}\nexport interface IGetTraineeCandidatesParams {\n date?: Date\n}\nexport interface IGetSimOverviewParams {\n date?: Date\n includeDuties?: boolean\n}\nexport interface ICreateSimulationCourseParams {\n body?: SimulationCourseDto\n}\nexport interface IDeleteSimulationCourseParams {\n id?: string\n}\nexport interface IGetEbtModulesParams {\n date?: Date\n}\nexport interface IGetSimHistoryParams {\n simId?: string\n}\nexport interface IGetPositionSimHistoryParams {\n simId?:string[] | string \n position?: SimulationCoursePosition\n}\nexport interface IGetPositionLogSimHistoryParams {\n simId?:string[] | string \n position?: SimulationCoursePosition\n}\nexport interface IGetSimDeletionHistoryParams {\n date?: Date\n}\nexport interface IGetPOST12Params {\n body?: SimulatorLicenseStatusReportFilter\n}\nexport interface IGetPOST13Params {\n body?: StandbyReportFilter\n}\nexport interface IGetReportFunctionsParams {\n date?: Date\n functionId?: string\n contractTypes?: ContractType[]\n personIds?:string[] | string \n isIncludeFormerSbx?: boolean\n isOnlyFormerSbx?: boolean\n loadOptions_HasInvalidEntries?: boolean\n loadOptions_Filter?: any[]\n loadOptions_RequireTotalCount?: boolean\n loadOptions_RequireGroupCount?: boolean\n loadOptions_IsCountQuery?: boolean\n loadOptions_IsSummaryQuery?: boolean\n loadOptions_Skip?: number\n loadOptions_Take?: number\n loadOptions_Sort?: SortingInfo[]\n loadOptions_Group?: GroupingInfo[]\n loadOptions_TotalSummary?: SummaryInfo[]\n loadOptions_GroupSummary?: SummaryInfo[]\n loadOptions_Select?: string[]\n loadOptions_PreSelect?: string[]\n loadOptions_RemoteSelect?: boolean\n loadOptions_RemoteGrouping?: boolean\n loadOptions_ExpandLinqSumType?: boolean\n loadOptions_PrimaryKey?: string[]\n loadOptions_DefaultSort?: string\n loadOptions_StringToLower?: boolean\n loadOptions_PaginateViaPrimaryKey?: boolean\n loadOptions_SortByPrimaryKey?: boolean\n loadOptions_AllowAsyncOverSync?: boolean\n rowLimit?: number\n}\nexport interface ICreateStandbyReportAutomationEmailParams {\n reportDate?: Date\n}\nexport interface IPost7Params {\n label?: string\n name?: string\n contentType?: string\n file?: FileParameter\n}\nexport interface IGetGET11Params {\n id: string\n name?: string\n}\nexport interface IGetOutageReportParams {}\nexport interface IGetRecentlySavedFileParams {\n label: string\n}\nexport interface IGetTemplateGroupsParams {}\nexport interface IGetByCode3Params {\n group: string\n code: string\n}\nexport interface IGetFormattedTemplateParams {\n group: string\n code: string\n body?: TemplateFormattingModel\n}\nexport interface IUpdateTemplateParams {\n group: string\n code: string\n body?: TemplateModel\n}\nexport interface IGetTemplateDataModelParams {\n group: string\n code: string\n}\nexport interface ILocalToUtcParams {\n body?: TimeModel\n}\nexport interface IUtcToLocalParams {\n body?: TimeModel\n}\nexport interface IAvailableTimezonesParams {\n body?: TimeModel\n}\nexport interface ITimezoneOffsetsParams {}\nexport interface IDefaultTimezoneOffsetParams {}\nexport interface ICalendarMonthParams {\n type?: CalendarType\n}\nexport interface IGetSwissTimeTransitionsParams {\n periodFrom?: Date\n periodTo?: Date\n}\nexport interface IGetFileParams {\n id?: string\n}\nexport interface IGetExportIfoParams {\n type: TradeUnionExportType\n}\nexport interface IGetAeroPersExportsParams {\n type: TradeUnionExportType\n body?: TradeUnionExportFilter\n}\nexport interface IGetAeroPersExportFileDataParams {\n id?: string\n}\nexport interface IGetGET12Params {\n isForCabin?: boolean\n isForCockpit?: boolean\n}\nexport interface IGetPOST14Params {\n body?: TzvYearOverviewFilter\n}\nexport interface IGetVacationYears2Params {}\nexport interface IFleetTypesParams {}\nexport interface IChangeComment3Params {\n body?: TzvYearPlannersCommentModel\n}\nexport interface IGetPOST15Params {\n body?: VacManagementReportFilter\n}\nexport interface IGetPlannerCommentParams {\n requestBlockId: string\n isVisibleToCrewComment?: boolean\n}\nexport interface IChangeComment4Params {\n requestBlockId: string\n body?: VacRequestChangePlannersCommentModel\n}\nexport interface IChangePointsParams {\n requestBlockId: string\n body?: VacRequestChangePlannersPointsModel\n}\nexport interface IGetVacRequestInfoParams {\n requestBlockId: string\n}\nexport interface ICreateAlternativeVacRequestParams {\n requestBlockId: string\n body?: PersonRequestVacAlternativeCreate\n}\nexport interface IDeleteAlternativeVacRequestParams {\n requestId: string\n}\nexport interface IApproveVariantParams {\n requestId: string\n body?: PersonRequestVacApproveModel\n}\nexport interface IRejectRequest2Params {\n requestBlockId: string\n body?: RejectRequestModel\n}\nexport interface IValidateSelectedRangeParams {\n requestId?: string\n selectedDateFrom?: Date\n selectedDateTo?: Date\n}\nexport interface IUpdateSelectedRangeParams {\n body?: VacRequestUpdateSelectedRangeModel\n}\nexport interface ICloseAndInformPersonRequest2Params {\n requestBlockId: string\n body?: PersonRequestVacInformModel\n}\nexport interface IStatusRollbackParams {\n requestBlockId: string\n}\nexport interface IGetAllRequestVacTypeParams {}\nexport interface IGetVacationYears3Params {}\nexport interface IGetVacationYearPeriodsParams {}\nexport interface IGetVacationYearPeriodsFilterOptionsParams {}\nexport interface IGetVacationYearPeriodModelsParams {}\nexport interface IChangeStatus2Params {\n vacYearPeriodId: string\n body?: VacPeriodChangeStatusModel\n}\nexport interface IGetVacationCapacityFiguresParams {\n personId?: string\n dateFrom?: Date\n dateTo?: Date\n}\nexport interface IGetVacationCapacityMonthFiguresParams {\n personId?: string\n dateFrom?: Date\n dateTo?: Date\n}\nexport interface IGetMonthFromFilterOptionsParams {}\nexport interface IGetMonthToFilterOptionsParams {}\nexport interface IGetPersonVacDetailsParams {\n body?: VacManagementPersonVacDetailsFilter\n}\nexport interface IGetPOST16Params {\n body?: XStarMonitoringReportFilter\n}\nexport interface IChangeComment5Params {\n body?: XStarCommentModel\n}\nexport class ApiClient {\n private baseUrl: string;\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n aircraftGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Aircraft\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n aircraftMaintenanceGet(params?:IMaintenanceParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Aircraft/maintenance\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n aircraftTypeRecencyReportCabinPost(body: AircraftTypeRecencyReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AircraftTypeRecencyReport/cabin\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n aircraftTypeRecencyReportCockpitPost(body: AircraftTypeRecencyReportCockpitFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AircraftTypeRecencyReport/cockpit\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n airportGetByThreeLetterCode(params?:IGetByCodeParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Airport/{threeLetterCode}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n airportGet(params?:IGetAllParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Airport\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n airportDetailsGetByThreeLetterCode(params?:IGetAll2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Airport/{threeLetterCode}/details\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n airportRecencyReportPost(body: AirportRecencyReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AirportRecencyReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n airportRecencyReportPersonGet(params?:IGetDataParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AirportRecencyReport/person\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n areaRouteCompetenceRulesReportPost(body: AreaRouteCompetenceRulesReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AreaRouteCompetence/rules-report\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n areaRouteCompetenceListGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AreaRouteCompetence/list\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n areaRouteCompetenceRulesListGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AreaRouteCompetence/rules-list\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n areaRouteCompetenceCreateRulePost(body: AreaRouteCompetenceAirportDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AreaRouteCompetence/create-rule\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n areaRouteCompetenceDeleteRuleDelete(params?:IDeleteRuleParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AreaRouteCompetence/delete-rule\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n areaRouteCompetenceWebBasedTrainingGet(params?:IGetWebBasedTrainingsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AreaRouteCompetence/web-based-training\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n areaRouteCompetenceWebBasedTrainingPost(body: WebBasedTrainingCreateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AreaRouteCompetence/web-based-training\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n areaRouteCompetenceWebBasedTrainingDelete(params?:IDeleteWebBasedTrainingParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AreaRouteCompetence/web-based-training\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n areaRouteCompetenceReportPost(body: AreaRouteCompetenceReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/AreaRouteCompetenceReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n cateringReportGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CateringReport\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n cateringReportPost(body: CateringReportCreateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CateringReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n cateringReportGetByReportId(params?:IGetReportGETParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CateringReport/{reportId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n changeLogPost(body: ChangeLogFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ChangeLog\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n changeLogPut(body: ChangeLogModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ChangeLog\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n changeLogSetPlanningConfirmationPost(params?:ITogglePlanningConfirmationParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ChangeLog/set-planning-confirmation\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n changeLogReasonPut(body: UpdateChangeLogTextModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ChangeLog/reason\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n changeLogOldDutyTextPut(body: UpdateChangeLogTextModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ChangeLog/oldDutyText\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n changeLogNewDutyTextPut(body: UpdateChangeLogTextModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ChangeLog/newDutyText\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n commentFlightGet(params?:IGetFlightCommentsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/flight\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n commentFlightPut(body: FlightCommentDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/flight\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n commentPersonGet(params?:IGetPersonCommentsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/person\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n commentPersonPost(body: PersonCommentCreateDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/person\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n commentPersonPut(body: PersonCommentUpdateDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/person\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n commentPersonUpdateCommentPut(body: PersonCommentUpdateDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/person-update-comment\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n commentDayGet(params?:IGetDayCommentsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/day\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n commentDayPost(body: DayCommentCreateDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/day\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n commentDayPut(body: DayCommentUpdateDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/day\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n commentStandbyGet(params?:IGetStandByCommentsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/standby\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n commentCreateMultiPost(body: MultiDayCommentCreateDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/create-multi\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n commentValidationGet(params?:IGetValidationCommentsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/validation\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n commentValidationPut(body: ValidationCommentDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/validation\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n commentDutyPut(body: DutyCommentDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/duty\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n commentDutyGet(params?:IGetDutyParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/duty\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n commentPlanningNotePut(body: CreatePlaningNoteModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/planning-note\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n commentPlanningNoteGet(params?:IGetPlanningNoteParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment/planning-note\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n commentDelete(params?:IDeleteParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n commentGet(params?:IGetAll3Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Comment\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n commentReportPost(body: CommentReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CommentReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n configurationGet(params?:IGetAll4Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Configuration\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n configurationPut(body: ConfigurationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Configuration\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n contractTypesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Contract/types\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n contractFlagTypesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Contract/flag-types\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n countryGet(params?:IGetAll5Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Country\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n courseManagementListPost(body: CourseManagementFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement/list\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n courseManagementGet(params?:IGetCourseParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n courseManagementPut(body: CourseDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n courseManagementDelete(params?:IDeleteCourseParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n courseManagementReportPost(body: CabinCrewAttestationReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement/report\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n courseManagementExportPdfGet(params?:IGetCoursePdfParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement/export-pdf\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n courseManagementExportBazlGet(params?:IGetCourseBazlParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement/export-bazl\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n courseManagementImportPost(formFile: FileParameter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement/import\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, formFile, requestOptions);\n }\n courseManagementPersonCoursesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement/person-courses\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n courseManagementPersonExportPdfGet(params?:IGetCrewPortalCoursePdfParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement/person-export-pdf\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n courseManagementSignCcaPut(body: SignAttestateDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement/sign-cca\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n courseManagementIncorrectCcaPut(body: IncorrectAttestateDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CourseManagement/incorrect-cca\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n crewApiConfigurationGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/configuration\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n crewApiConfigurationPut(body: CrewApiConfigurationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/configuration\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n crewApiConfigurationDelete(params?:IDeleteAllParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/configuration\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n crewApiMassConfigurationGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/mass-configuration\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n crewApiMassConfigurationPut(body: CrewApiMassRecipientConfiguration, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/mass-configuration\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n crewApiConfigReportPost(params?:IGetConfigurationReportParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/config-report\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n crewApiConfigurationGetByCountryCode(params?:IGetByCodeAllParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/configuration/{countryCode}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiMessageFormatGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/message-format\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n crewApiDeliveryMethodGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/delivery-method\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n crewApiTriggerGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/trigger\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n crewApiPayloadGetByFlightIdItemId(params?:IGetPayloadParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/payload/{flightId}/{itemId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiProcessGetByFlightId(params?:IGeneratePayloadsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/process/{flightId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiGenerateGetByFlightId(params?:IManuallyProcessFlightParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/generate/{flightId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiFlightGetByFlightId(params?:IGetQueueForFLightParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/flight/{flightId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiLocationGetByLocationRcd(params?:IGetQueueParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/location/{locationRcd}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiFlightStatusGet(params?:IGetFlightsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/flight-status\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiFlightStatusGetByFlightId(params?:IGetFlights2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/flight-status/{flightId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiHistoryGet(params?:IGetHistoryParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/history\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiHistoryGetByFlightIdItemId(params?:IGetHistoryPayloadParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/history/{flightId}/{itemId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiHistoryPaxlstCountGet(params?:IGetPaxLstCountParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/history/paxlst-count\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiRelatedAirportsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/related-airports\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n crewApiPersonStateGetByPersonId(params?:IGetPersonMclStateParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/person-state/{personId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n crewApiAddMclPostByPersonId(params?:IAddPersonToMclQueueParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/add-mcl/{personId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n crewApiUpdateMclPostByPersonId(params?:IUpdatePersonInMclQueueParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/update-mcl/{personId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n crewApiDeleteMclPostByPersonId(params?:IDeletePersonInMclQueueParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/delete-mcl/{personId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n crewApiSkipMclPostByPersonId(params?:ISkipPendingPersonMclChangesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/skip-mcl/{personId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n crewApiMclMissingDataGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewApi/mcl-missing-data\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n crewDutyListReportPost(body: CrewDutyListReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewDutyListReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n crewDutyListReportExportPost(body: ExportCrewDutyListReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CrewDutyListReport/export\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n customPersonManagementListPost(body: CustomPersonManagementFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CustomPersonManagement/list\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n customPersonManagementGetById(params?:IGetMarshalParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CustomPersonManagement/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n customPersonManagementPost(body: CustomPersonManagementDialogModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CustomPersonManagement\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n customPersonManagementPut(body: CustomPersonManagementDialogModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/CustomPersonManagement\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n devPingGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Dev/ping\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n devVersionGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Dev/version\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dooxReportPost(body: DooxReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DooxReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dosimetryReportPost(body: PersonDosimetryFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DosimetryReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyGet(params?:IGetDutiesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyPut(body: DutyCreateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n dutyDeletePost(body: DutyRemoveModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/delete\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyDownloadValidationPost(body: RevalidatePersonModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/download-validation\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyDownloadValidationResultPost(body: RevalidatePersonModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/download-validation-result\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyValidationDataGet(params?:IValidationDataParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/validation-data\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyValidationDataGroundGet(params?:IValidationDataGroundParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/validation-data-ground\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyValidationDataFseGet(params?:IValidationDataFseParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/validation-data-fse\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyCopyPost(body: CopyDutyModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/copy\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyUndoGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/undo\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyUndoPost(params?:IUndoParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/undo\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n dutyRollbackUndoPost(params?:IDeleteUndoParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/rollback-undo\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n dutyBulkUndoPost(body: BulkUndoModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/bulk-undo\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyDayActivitiesGet(params?:IGetDayActivitiesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/day-activities\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyMonthDutyTypesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/month-duty-types\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyReleaseFilterTypesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/release-filter-types\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyHistoryPost(body: DutyHistoryFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/history\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutySeatHistoryPost(params?:ISeatHistoryParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/seat-history\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n dutyUpdateTitlePost(body: DutyTitle, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/update-title\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutySectorSwapCrewPost(body: SwapSectorModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/sector/swap-crew\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyRotationSwapCrewPost(body: SwapRotationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/rotation/swap-crew\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutySectorMoveCrewPost(body: MoveSectorModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/sector/move-crew\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyRotationMoveCrewPost(body: MoveRotationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/rotation/move-crew\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyHideDutyPost(body: HideDutyModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/hide-duty\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyDayDutiesGet(params?:IDayDutiesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/day-duties\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyPartialLoadTypesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/partial-load-types\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyGetDutyHoursGet(params?:IGetDutyHoursParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/get-duty-hours\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyChangeDutyHoursPost(body: ChangeDutyHoursModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/change-duty-hours\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyUrgentGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/urgent\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyUrgentReleasePeriodGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/urgent-release-period\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyPersonDayLandingPut(body: PersonDayLandingRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/person-day-landing\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n dutyPersonDayLandingGet(params?:IGetCustomLandingsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/person-day-landing\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyPersonDayTakeoffPut(body: PersonDayLandingRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/person-day-takeoff\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n dutyPersonDayTakeoffGet(params?:IGetCustomTakeoffsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/person-day-takeoff\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyPersistPost(body: PersonDaysModel[], requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/persist\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyPersonDayMessagesGet(params?:IServiceBusMessagesForPersonDayParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/person-day-messages\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyConfigurePlanningPeriodPost(body: PlanningPeriodConfigRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/configure-planning-period\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyPlanningPeriodsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/planning-periods\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyPlanningDutyPeriodGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/planning-duty-period\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyPlanningDutyPeriodStartPost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/planning-duty-period-start\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n dutyPlanningDutyPeriodReleasePost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/planning-duty-period-release\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n dutyDutyPartGet(params?:IGetDutyPartsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/duty-part\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyDutyPartPut(date: Date, personId: string, body: DutyPartUpdateRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/duty-part\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n dutyRecencyLandingsGet(params?:IRecencyLandingsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/recency-landings\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyRecencyTakeoffsGet(params?:IRecencyTakeoffsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Duty/recency-takeoffs\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyCheckerTraineeGet(params?:IGetAll7Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyCheckerTrainee\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyCheckerTraineePost(body: DutyCheckerTraineeModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyCheckerTrainee\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyCheckerTraineePut(body: DutyCheckerTraineeUpdateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyCheckerTrainee\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n dutyCheckerTraineeDelete(params?:IDelete2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyCheckerTrainee\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n dutyCheckerTraineeLongHaulGet(params?:IGetForRotationParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyCheckerTrainee/long-haul\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyCheckerTraineeFlightTeamGet(params?:IGetFlightTeamParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyCheckerTrainee/flight-team\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyCheckerTraineeGroundTeamGet(params?:IGetGroundTeamParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyCheckerTrainee/ground-team\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyCheckerTraineePersonDelete(params?:IDelete3Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyCheckerTrainee/person\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n dutyCheckerTraineeFunctionGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyCheckerTrainee/function\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyPredefinedPost(body: DutyPredefinedEditModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyPredefined\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyPredefinedGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyPredefined\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyPredefinedPutById(id: string, body: DutyPredefinedEditModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyPredefined/{id}\";\n _url = ApiService.getDynamicUrl(_url, { id, body });\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n dutyPredefinedDeleteById(params?:IDelete4Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyPredefined/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n dutyValidationGet(params?:IGetAll9Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyValidation\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyValidationUrgentGet(params?:IGetUrgentParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyValidation/urgent\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n dutyValidationErrorsInfoPost(body: ValidationErrorsRequestModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyValidation/errors-info\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyValidationSuppressReasonsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyValidation/suppress-reasons\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyValidationLandingAirportsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyValidation/landing-airports\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n dutyValidationSuppressPost(body: SuppressValidationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyValidation/suppress\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n dutyValidationSuppressErrorsPut(body: SuppressErrorsRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyValidation/suppress-errors\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n dutyValidationResumePost(body: ResumeValidationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/DutyValidation/resume\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n emailPost(body: EmailFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Email\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n emailBodyGet(params?:IGetEmailBodyParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Email/body\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n emailAttachmentsGet(params?:IGetEmailAttachmentsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Email/attachments\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n emailAttachmentGet(params?:IGetAttachmentParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Email/attachment\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n emailValidatePost(body: EmailValidateRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Email/validate\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n emailUpdateStatusPostByIdStatus(params?:IUpdateStatusParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Email/update-status/{id}/{status}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n errorUiPost(body: ClientErrorModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Error/ui\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n errorReportPost(body: ErrorReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ErrorReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n errorReportGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ErrorReport\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n experienceReportPost(body: ExperienceReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ExperienceReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n flightGet(params?:IFlightsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightPost(body: FlightFlagsRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n flightGetByYearMonthDay(params?:IGetAll10Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/{year}/{month}/{day}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightInfoGet(params?:IGetFlightInfosParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightCrewDetailsGet(params?:IAircraftActivityDetailsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/crew-details\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightSectorsGetByYearMonthDay(params?:IForDayParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/sectors/{year}/{month}/{day}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightSectorGetByFlightId(params?:IForFlightIdParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/sector/{flightId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightUrgentGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/urgent\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n flightUrgentGetByFlightId(params?:IGetUrgentFlightId2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/urgent/{flightId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightUrgentSuppressPut(body: UrgentFlightRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/urgent-suppress\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n flightPersonFdpExtensionTypePut(body: PersonDayExtendedAugmentedRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/person-fdp-extension-type\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n flightPersonFdpAmendmentTypePut(body: PersonDayFdpAmendmentTypeRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/person-fdp-amendment-type\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n flightDecodeGet(params?:IDecodeParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/decode\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightHistoryPost(params?:IGetDayHistory2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/history\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n flightInformationGet(params?:IGetFlightInformationParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/information\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightInformationPut(body: FlightInformationEditModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/information\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n flightRevalidatePost(body: FlightRevalidateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/revalidate\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n flightMessagesGet(params?:IServiceBusMessagesForPersonDay2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/messages\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightPublishNetlinePost(params?:IPublishParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/publish-netline\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n flightCrewTypeGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/crew-type\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n flightCrewGetByFlightId(params?:IGetCrewParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Flight/{flightId}/crew\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightDutyRecordGet(params?:IGetGET2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/FlightDutyRecord\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n flightDutyRecordDownloadGet(params?:IDownloadParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/FlightDutyRecord/download\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n functionGet(params?:IGetAll11Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Function\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n functionGroupGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Function/group\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n genDecPost(body: GenDecDocumentRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n genDecPreviewPost(body: GenDecDocumentRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/preview\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n genDecPayloadGetByFlightIdItemId(params?:IGetPayload2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/payload/{flightId}/{itemId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n genDecProcessGetByFlightId(params?:IGeneratePayloads2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/process/{flightId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n genDecGetByReportId(params?:IGetReportGET2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/{reportId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n genDecRotationGet(params?:IGetAircraftRotationsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/rotation\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n genDecConfigurationGet(params?:IGetConfigurationsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/configuration\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n genDecConfigurationPut(body: GenDecConfigurationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/configuration\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n genDecConfigurationDelete(params?:IDeleteAll2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/configuration\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n genDecRelatedAirportsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/related-airports\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n genDecFlightStatusGet(params?:IGetFlights3Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/flight-status\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n genDecFlightStatusGetByFlightId(params?:IGetFlights4Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/flight-status/{flightId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n genDecConfigReportPost(params?:IGetConfigurationReport2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/config-report\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n genDecDeliveryMethodsGet(params?:IGetAll12Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GenDec/delivery-methods\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n groundStaffReportGet(params?:IGetReportGET3Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/GroundStaffReport\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n holidayGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Holiday\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n errorPost(body: JsErrorModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/error\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n homeStudyPost(params?:IGetHomeStudyParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/HomeStudy\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n homeStudyPersonsPost(body: CreateHomeStudyFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/HomeStudy/persons\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n hotelManagementLocationsPost(body: LocationInfoHotelBookingFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/HotelManagement/locations\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n hotelManagementLocationsMonthPost(body: LocationMonthHotelBookingFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/HotelManagement/locations-month\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n hotelManagementHotelDetailsGet(params?:IHotelDetailsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/HotelManagement/hotel-details\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n hotelManagementHotelPersonDetailsPost(body: PersonDetailsHotelBookingFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/HotelManagement/hotel-person-details\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n hotelManagementPreReservationHotelDetailsGet(params?:IPreReservationHotelDetailsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/HotelManagement/pre-reservation/hotel-details\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n hotelManagementPreReservationHotelBookingDetailsPost(body: HotelBookingDetailsFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/HotelManagement/pre-reservation/hotel-booking-details\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n hotelManagementDownloadEmailGet(params?:ICreateEmailForHotelParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/HotelManagement/download-email\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n hotelManagementPreReservationDownloadEmailGet(params?:ICreatePreReservationEmailForHotelParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/HotelManagement/pre-reservation/download-email\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n instructorFilterGet(params?:IGetGET4Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/InstructorFilter\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n instructorFilterPost(body: InstructorFilterGridFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/InstructorFilter\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n instructorFilterPut(body: InstructorFilterDialogModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/InstructorFilter\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n instructorFilterDelete(params?:IDeleteFilterParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/InstructorFilter\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n instructorFilterCodeGetByCodeName(params?:IGetByCode2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/InstructorFilter/code/{codeName}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n jeppesenToolDownloadFileGet(params?:IGetJeppesenFileParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/download-file\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n jeppesenToolRosterExportInfoGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/roster-export-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n jeppesenToolCrewExportInfoGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/crew-export-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n jeppesenToolRosterImportInfoGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/roster-import-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n jeppesenToolRosterImportsPost(body: RosterImportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/roster-imports\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n jeppesenToolRosterImportDetailsPost(body: RosterImportDetailsFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/roster-import-details\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n jeppesenToolRosterImportExceptionGet(params?:IGetRosterImportDetailsErrorParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/roster-import-exception\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n jeppesenToolRosterImportFileDataGet(params?:IGetRosterImportFileDataParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/roster-import-file-data\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n jeppesenToolRosterImportUploadFilePost(formFile: FileParameter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/roster-import-upload-file\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, formFile, requestOptions);\n }\n jeppesenToolCasImportInfoGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/cas-import-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n jeppesenToolCasImportFileGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/cas-import-file\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n jeppesenToolCasImportFilePut(formFile: FileParameter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/JeppesenTool/cas-import-file\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, formFile, requestOptions);\n }\n jobListGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/list\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n jobGetById(params?:IGetByIdParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n jobStartPostByJobName(jobName: string, body: JobStartModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/start/{jobName}\";\n _url = ApiService.getDynamicUrl(_url, { jobName, body });\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n jobParametersGetByJobName(params?:IParametersGETParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/parameters/{jobName}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n jobCronValidationPostByCronExpression(params?:IParametersPOSTParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/cron/validation/{cronExpression}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n jobParametersPostByTriggerName(triggerName: string, body: JobSaveParametersModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/parameters/{triggerName}\";\n _url = ApiService.getDynamicUrl(_url, { triggerName, body });\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n jobSettingsPostByJobName(jobName: string, body: JobSaveParametersModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/settings/{jobName}\";\n _url = ApiService.getDynamicUrl(_url, { jobName, body });\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n jobCreatePost(body: JobSaveParametersModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/create\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n jobDeleteDelete(params?:IDelete5Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/delete\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n jobCheckTriggerNameGet(params?:IIsTriggerNameUniqueParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/check-trigger-name\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n jobStopPostByJobNameJobExecutionId(params?:IStopParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Job/stop/{jobName}/{jobExecutionId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n licenseManagementLicenseListPost(body: LicenseManagementFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/LicenseManagement/license-list\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n licenseManagementGet(params?:IGetLicenseParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/LicenseManagement\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n licenseManagementPost(body: LicenseManagementDialogModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/LicenseManagement\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n licenseManagementPut(body: LicenseManagementDialogModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/LicenseManagement\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n licenseManagementDelete(params?:IDeleteLicenseParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/LicenseManagement\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n licenseManagementLicenseManagementOptionsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/LicenseManagement/license-management-options\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n logbookPost(body: LogbookFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Logbook\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n logbookExportPost(body: ExportLogbookModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Logbook/export\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n maintenanceNotificationPut(body: MaintenanceModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Maintenance/notification\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n maintenancePut(body: MaintenanceModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Maintenance\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n maintenanceGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Maintenance\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n maintenanceCanBypassMaintenanceGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Maintenance/can-bypass-maintenance\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n maintenancePingGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Maintenance/ping\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n offdaysReportPost(body: OffDaysReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/OffdaysReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n onlinePrincipalConnectedClientsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/OnlinePrincipal/connected-clients\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n onlinePrincipalRosterActivityGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/OnlinePrincipal/roster-activity\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n permissionGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Permission\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n permissionRoleGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Permission/role\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n permissionRoleGetByRoleId(params?:IGetForRoleParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Permission/role/{roleId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personGet(params?:IGetAll14Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRevalidatePost(body: RevalidatePersonModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/revalidate\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personPublishPost(body: RevalidatePersonModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/publish\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personLookupPost(body: PersonFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/lookup\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personLookupByPhoneGet(params?:IGetGET6Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/lookup-by-phone\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRelatedPersonGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/related-person\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personSmsPost(body: SendSmsBody, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/sms\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personSmsCrewGet(params?:IGetCrewSmsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/sms-crew\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personLicensesPost(params?:IGetSeatHistoryParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/licenses\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n personMintLicensesPost(params?:IGetMintLicensesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/mint-licenses\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n personMintLicenseInactivationsPost(params?:IGetMintLicenseInactivationsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/mint-license-inactivations\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n personEntriesPost(params?:IGetPersonEntriesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/entries\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n personFunctionsPost(params?:IGetPersonFunctionsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/functions\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n personPlanningFunctionOverrulesPost(params?:IGetPlanningFunctionOverrulesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/planning-function-overrules\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n personAircraftActivitiesGet(params?:IGetAircraftActivitiesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/aircraft-activities\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personAirportsGet(params?:IGetSpecialAirportsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/airports\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personExperienceGet(params?:IGetPersonExperienceSummaryParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/experience\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personShowMyScheduleGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/show-my-schedule\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personShowMySchedulePut(body: ShowSettingModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/show-my-schedule\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personAllowSecondReserveGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/allow-second-reserve\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personAllowSecondReservePut(body: ShowSettingModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/allow-second-reserve\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personShowMyPhoneGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/show-my-phone\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personShowMyPhonePut(body: ShowSettingModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/show-my-phone\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personOptInShowEfaScheduleGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/opt-in-show-efa-schedule\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personOptInShowEfaSchedulePut(body: ShowSettingModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/opt-in-show-efa-schedule\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personOptInShowAeropersScheduleGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/opt-in-show-aeropers-schedule\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personOptInShowAeropersSchedulePut(body: ShowSettingModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/opt-in-show-aeropers-schedule\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personMessagesGet(params?:IServiceBusMessagesForPersonDay3Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/messages\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personPersonModificationsGetByPersonId(params?:IGetPersonModificationsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Person/person-modifications/{personId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personAircraftTypeExperienceGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonAircraftTypeExperience\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personAircraftTypeExperiencePost(body: PersonAircraftTypeExperienceOverrule, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonAircraftTypeExperience\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personAircraftTypeExperiencePut(body: PersonAircraftTypeExperienceOverrule, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonAircraftTypeExperience\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personAircraftTypeExperienceDelete(params?:IDelete6Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonAircraftTypeExperience\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personAircraftTypeExperienceGetByPersonIdAircraftTypeGroupActivityDate(params?:IGetGET7Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonAircraftTypeExperience/{personId}/{aircraftTypeGroup}/{activity}/{date}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personAircraftTypeExperienceOverruleGetByPersonIdAircraftTypeGroupActivity(params?:IGetOverruleParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonAircraftTypeExperience/overrule/{personId}/{aircraftTypeGroup}/{activity}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personChangeLogGet(params?:IGetAll16Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonChangeLog\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personChangeLogLastGet(params?:IGetLastParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonChangeLog/last\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personChangeLogConfirmPut(body: PersonChangeLogConfirmModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonChangeLog/confirm\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personInfoGet(params?:IGetPersonInfoParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personInfoQuarterGet(params?:IPersonQuarterInfosParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/quarter\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personInfoSummaryFiguresGet(params?:IPersonSummaryFiguresInfosParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/summary-figures\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personInfoDeltaFiguresGet(params?:IPersonDeltaFiguresInfosParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/delta-figures\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personInfoConsecutive3monthFiguresGet(params?:IPersonConsecutiveMonthsDaysOffInfosParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/consecutive3month-figures\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personInfoDutyPeriodsGet(params?:IPersonDutyPeriodInfosParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/duty-periods\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personInfoDutyFiguresPost(body: PersonDayDutyFiguresFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/duty-figures\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personInfoDayStatusPut(body: PlanningGroupDayStatusRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/day-status\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personInfoCicoChangePost(body: ChangeCheckInCheckOutModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/cico/change\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personInfoCicoResetPost(body: CheckInCheckOutModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/cico/reset\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personInfoCicoGet(params?:IGetCustomCheckInCheckOutInfoParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/cico\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personInfoCicoSetByEstimatedPost(body: SetEstimatedCiCoModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/cico/set-by-estimated\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personInfoPopupDataGet(params?:IPersonDatePopupDataParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/popup-data\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personInfoLocationGet(params?:IGetLocationParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonInfo/location\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personLicenseAirbusTypesGet(params?:IGetLicenseDistinctNamesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonLicense/airbus-types\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestPointsBalanceGet(params?:IGetPointsBalanceParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/points-balance\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestValidateOffGet(params?:IValidateRequestOffParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/validate-off\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestOffPost(body: PersonOffRequestCreate, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/off\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestOffPut(id: string, body: PersonOffRequestUpdate, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/off\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personRequestOffDelete(params?:ICancelRequestsOffParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/off\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestOffGet(params?:IGetRequestsOffParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/off\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestResolvePost(params?:IResolveRequestParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/resolve\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n personRequestAvailableFlightsGet(params?:IGetRequestsFlightsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/available-flights\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFlightGet(params?:IGetRequestsFlightParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/flight\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFlightPost(body: PersonFlightRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/flight\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestFlightDelete(params?:IDeleteFlightParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/flight\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestGrantJobStatusGet(params?:IGetJobTriggersStatusesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/grant-job-status\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFlightRejectedByPlannerPost(body: PersonRequestFlightRejectModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/flight/rejected-by-planner\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestRequestsGet(params?:IGetRequestsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/requests\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestPointsLogGet(params?:IGetPointsLogParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/points-log\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestPointsPeriodsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/points-periods\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestPersonInfoGet(params?:IPersonRequestPersonInfoDtoParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/person-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestAvailableRequestRangeGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/available-request-range\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestOffLimitsGet(params?:IGetOffLimitsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/off-limits\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFlightLimitsCockpitGet(params?:IGetFrLimitsCockpitParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/flight-limits-cockpit\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFlightLimitsCabinGet(params?:IGetFrLimitsCabinParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/flight-limits-cabin\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFlightLimitsLogsCabinGet(params?:IGetFrLimitsLogsCabinParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/flight-limits-logs-cabin\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFlightLimitsLogsCockpitGet(params?:IGetFrLimitsLogsCockpitParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/flight-limits-logs-cockpit\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFlightLimitsCorrectionPost(body: FlightLimitsCorrectionModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/flight-limits-correction\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestIsConstantFreelancerGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/is-constant-freelancer\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestRotationOffsPost(body: RotationOffsRequestModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/rotation-offs\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestManualCorrectionPut(body: PointsManualCorrectionModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequest/manual-correction\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personRequestBlockingFlightFlightPost(body: PersonRequestBlockedFlightDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestBlockingFlight/flight\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestBlockingFlightFlightDelete(params?:IDelete7Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestBlockingFlight/flight\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestBlockingFlightFlightGet(params?:IGetAll17Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestBlockingFlight/flight\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestBlockingPeriodDayPost(body: PersonRequestBlockedDayDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestBlockingPeriod/day\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestBlockingPeriodDayPut(body: PersonRequestBlockedDayDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestBlockingPeriod/day\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personRequestBlockingPeriodDayDelete(params?:IDeleteBlockedDayParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestBlockingPeriod/day\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestBlockingPeriodDayGet(params?:IGetBlockedDaysParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestBlockingPeriod/day\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFreelanceFreelanceYearsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestFreelance/freelance-years\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestFreelanceContractInfoGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestFreelance/contract-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestFreelanceValidateGet(params?:IValidateAllParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestFreelance/validate\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFreelancePeriodExportGet(params?:IGetPeriodExportParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestFreelance/period-export\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestFreelanceConfirmPost(body: PersonRequestFreelanceConfirmModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestFreelance/confirm\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestFreelanceDeviatePost(body: PersonRequestFreelanceDeviateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestFreelance/deviate\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestFreelancePut(body: PersonRequestFreelanceCreateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestFreelance\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personRequestNbuPost(body: PersonNbuFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestNbu\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestNbuDutyPost(body: PersonNbuUpdateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestNbu/duty\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestNbuDutyPut(body: PersonNbuUpdateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestNbu/duty\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personRequestNbuDutyDeleteById(params?:IDeleteNbuParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestNbu/duty/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestNbuErrorSuppressPost(body: SuppressValidationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestNbu/error/suppress\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestNbuErrorResumePost(body: ResumeValidationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestNbu/error/resume\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestNbuMonthGet(params?:IGetMonthParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestNbu/month\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestNbuMonthPut(body: UpdateNbuMonthRequest, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestNbu/month\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personRequestReserveGet(params?:IGetReserveRequestsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestReserve\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestReservePost(body: PersonReserveRequestCreate, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestReserve\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestReserveDelete(params?:IDeleteRequestParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestReserve\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestReserveReserveRequestAvailableGet(params?:IGetReserveRequestAvailableParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestReserve/reserve-request-available\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestReserveReserveBlocksGet(params?:IGetReserveBlocksAllParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestReserve/reserve-blocks\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestReserveReservePeriodsGet(params?:IGetReservePeriodsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestReserve/reserve-periods\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestReserveReserveDutyBlocksGet(params?:IGetPersonDutyBlocksParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestReserve/reserve-duty-blocks\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestReserveBalanceGet(params?:IGetBalanceParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestReserve/balance\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestSeniorityFlightHoursOverviewGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestSeniority/flight-hours-overview\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestSeniorityWishTypesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestSeniority/wish-types\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestSeniorityWishGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestSeniority/wish\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestSeniorityWishPost(body: PersonWishCreateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestSeniority/wish\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestSeniorityWishDeleteById(params?:IDeleteWishParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestSeniority/wish/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestSeniorityWishHistoryGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestSeniority/wish-history\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestTzvTzvYearsGet(params?:IGetTzvYearsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/tzv-years\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestTzvTzvBalanceInfoGet(params?:IGetTzvBalanceInfoParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/tzv-balance-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestTzvTzvBalanceInfoTotalGet(params?:IGetTzvBalanceTotalParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/tzv-balance-info/total\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestTzvHasTzvContractGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/has-tzv-contract\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestTzvTzvBlocksGet(params?:IGetPersonAbsenceDaysParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/tzv-blocks\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestTzvContractInfoGet(params?:IGetContractInfos2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/contract-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestTzvBalanceManualCorrectionPut(body: DaysManualCorrectionModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/balance/manual-correction\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personRequestTzvBalanceManualCorrectionPost(body: DaysManualCorrectionModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/balance/manual-correction\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestTzvBalanceManualCorrectionDeleteById(params?:IDeleteTzvManualCorrectionParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/balance/manual-correction/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestTzvTzvAssignmentGet(params?:IGetPersonTzvDayAssignmentModelsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/tzv-assignment\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestTzvTzvAssignmentPost(body: TzvDayAssigmentCreateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/tzv-assignment\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestTzvTzvAssignmentDeleteById(params?:IDeleteTzvAssignmentDayParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestTzv/tzv-assignment/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestVacValidationGet(params?:IValidateVacRequestParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/validation\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestVacPost(body: PersonRequestVacCreate, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestVacPut(body: PersonRequestVacUpdate, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personRequestVacGet(params?:IGetVacRequestsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestVacRequestBlockPut(body: PersonRequestVacBlockPersonAnswerModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/request-block\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personRequestVacDeleteById(params?:IDeleteRequestVacParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestVacRulesStatusGet(params?:IVacRulesStatusParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/rules-status\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestVacVacSDeadlineInfoGet(params?:IGetAvailableVacSDaysAndDeadlineParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/vac-s-deadline-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestVacVacPDeadlineInfoGet(params?:IGetAvailableVacPDaysAndDeadlineParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/vac-p-deadline-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestVacAvailableTypesGet(params?:IGetAvailableVacTypesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/available-types\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestVacBalanceInfoGet(params?:IGetVacationBalanceInfoParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/balance-info\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestVacBalanceInfoTotalGet(params?:IGetVacationBalanceTotalParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/balance-info/total\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestVacBalanceManualCorrectionPut(body: DaysManualCorrectionModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/balance/manual-correction\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n personRequestVacBalanceManualCorrectionPost(body: DaysManualCorrectionModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/balance/manual-correction\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestVacBalanceManualCorrectionDeleteById(params?:IDeleteVacationDaysManualCorrectionParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/balance/manual-correction/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n personRequestVacVacationPeriodsGet(params?:IGetVacationPeriodsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/vacation-periods\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestVacVacationYearsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/vacation-years\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personRequestVacRequestBlockAlternativesCrewDecisionPostByRequestBlockIdRequestId(requestId: string, requestBlockId: string, body: PersonDecisionModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/request-block/{requestBlockId}/alternatives/{requestId}/crew-decision\";\n _url = ApiService.getDynamicUrl(_url, { requestId, requestBlockId, body });\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personRequestVacVacBlocksGet(params?:IGetPersonAbsenceDays2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/vac-blocks\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personRequestVacRequestBlockLogGetByRequestBlockId(params?:IGetRequestVacLogParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonRequestVac/request-block/{requestBlockId}/log\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n personsReportPost(body: PersonReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonsReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n personViewGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonView\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personViewCabinRecencyGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonView/cabin-recency\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n personViewCockpitRecencyGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PersonView/cockpit-recency\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n plannedTrainingsReportPost(body: PlannedTrainingsReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/PlannedTrainingsReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n planningFlightActivityCandidatesGet(params?:IGetCandidatesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Planning/flight-activity-candidates\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n planningValidateFlightCandidateGet(params?:IValidateCandidateParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Planning/validate-flight-candidate\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n planningRestDeltaTimesPost(body: DutyRestTimeDeltaRequestModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Planning/rest-delta-times\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n positioningGet(params?:IGetById2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Positioning\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n positioningForDayGet(params?:IGetForDayParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Positioning/for-day\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n positioningCodesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Positioning/codes\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n positioningFlightsGet(params?:IGetFlights5Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Positioning/flights\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n positioningAvailableDirectionsGet(params?:IGetAvailableDirectionForADayParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Positioning/available-directions\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n positioningCustomsGet(params?:IGetCustomsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Positioning/customs\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n positioningDiffToLtGet(params?:IGetDateTimeDiffToLtParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Positioning/diff-to-lt\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n qualityLoopExportGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/QualityLoopExport\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n qualityLoopExportPost(body: QualityLoopJobStartModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/QualityLoopExport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n qualityLoopExportDataGetByReportId(params?:IGetReportDataParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/QualityLoopExport/data/{reportId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n qualityLoopExportIdMappingGetByReportId(params?:IGetReportMappingParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/QualityLoopExport/id-mapping/{reportId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n recencyGetByPersonId(params?:IGetGET8Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Recency/{personId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n recurrentTrainingReportPost(body: ReccurentTrainingReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/RecurrentTrainingReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n releaseHistoryReleaseGroupsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseHistory/release-groups\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n releaseHistoryReleasePeriodsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseHistory/release-periods\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n releaseHistoryNotFullPersonsGet(params?:IGetPersonsWithNotFullDutyMonthParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseHistory/not-full-persons\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n releaseHistoryReleasePut(params?:IHistorizeParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseHistory/release\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, params, requestOptions);\n }\n releaseHistoryReleaseStatusGet(params?:IGetIsReleasedParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseHistory/release-status\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n releaseHistoryReleaseDateGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseHistory/release-date\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n releaseNotesGet(params?:IGetAll18Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseNotes\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n releaseNotesPost(body: ReleaseNoteModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseNotes\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n releaseNotesGetById(params?:IGetGET9Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseNotes/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n releaseNotesPutById(id: string, body: ReleaseNoteModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseNotes/{id}\";\n _url = ApiService.getDynamicUrl(_url, { id, body });\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n releaseNotesDeleteById(params?:IDelete8Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseNotes/{id}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n releaseNotesMarkAsReadPost(params?:IMarkReadParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReleaseNotes/mark-as-read\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n requestCapacityToolAnalyzePost(formFile: FileParameter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/RequestCapacityTool/analyze\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, formFile, requestOptions);\n }\n requestCapacityToolImportPost(body: RequestCapacityAnalyzedModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/RequestCapacityTool/import\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n requestCapacityToolOverviewGet(params?:IGetCapacityToolOverviewParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/RequestCapacityTool/overview\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n reserveManagementRequestsPost(body: ReserveManagementReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/requests\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n reserveManagementReservePeriodsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/reserve-periods\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n reserveManagementReservePeriodsPutByReserveYearPeriodId(reserveYearPeriodId: string, body: ReservePeriodChangeStatusModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/reserve-periods/{reserveYearPeriodId}\";\n _url = ApiService.getDynamicUrl(_url, { reserveYearPeriodId, body });\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n reserveManagementRequestApprovePost(body: ApproveReserveRequestModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/request/approve\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n reserveManagementRequestInformPost(body: InformReserveRequestModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/request/inform\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n reserveManagementRequestRejectPost(body: RejectReserveRequestModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/request/reject\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n reserveManagementRequestUndoPost(body: ReserveRequestModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/request/undo\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n reserveManagementRequestPlannerCommentPut(body: ReserveRequestChangePlannersCommentModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/request/planner-comment\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n reserveManagementYearPeriodsFilterOptionsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/year-periods-filter-options\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n reserveManagementReserveBlocksPost(body: ReserveBlocksFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/reserve-blocks\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n reserveManagementReserveBlocksPut(body: CreateReserveBlockModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/reserve-blocks\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n reserveManagementReserveBlocksDelete(params?:IDeleteReserveBlockParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/ReserveManagement/reserve-blocks\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n rotationForDayGetByYearMonthDay(params?:IForDay2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/for-day/{year}/{month}/{day}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationLongHaulGetByYearMonthDay(params?:ILonghaulParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/long-haul/{year}/{month}/{day}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationLongHaulForPeriodGet(params?:ILonghaulForPeriodParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/long-haul/for-period\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationLongHaulSingleGet(params?:IGetInfoByIdParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/long-haul/single\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationDirectionsGet(params?:IGetDirectionsListParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/directions\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationDatesGet(params?:IGetApplicableCopyDatesListParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/dates\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationFlightDatesGet(params?:IGetApplicableFlightDatesListParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/flight-dates\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationAvailableFlightsGet(params?:IGetAvailableFlightsListParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/available-flights\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationInitRotationGet(params?:IInitRotationParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/init-rotation\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationPut(body: RotationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n rotationGet(params?:IGetById3Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationRotationIdGet(params?:IGetIdByRotationKeyParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/rotation-id\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n rotationCopyPost(body: RotationCopyModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/copy\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n rotationBuildPost(body: RotationModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/build\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n rotationDeleteDelete(params?:IDelete9Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/delete\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n rotationFlightPostByFlightId(params?:IGetRotationsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/flight/{flightId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n rotationAircraftGet(params?:IGetAircraftRotations2Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Rotation/aircraft\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n sectorsReportPost(body: SectorsReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SectorsReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n monitoringGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/monitoring\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n monitoringSendingQueuePersonDayGet(params?:IMonitoringSendingQueuePersonDayParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/monitoring/sending-queue/person-day\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n monitoringJobGetByJobName(params?:IMonitoringJobParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/monitoring/job/{jobName}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n selfTestJobsPost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/jobs\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n monitoringJobsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/monitoring/jobs\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n selfTestSignalrPost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/signalr\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n monitoringSignalrGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/monitoring/signalr\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n selfTestDatabasePost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/database\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n monitoringDatabaseGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/monitoring/database\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n selfTestUpdateDatabasePost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/update-database\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n selfTestPersondayqueuePost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/persondayqueue\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n selfTestNetlineOpsQueuePost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/netline-ops-queue\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n selfTestPersonMessageBusQueuePost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/person-message-bus-queue\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n selfTestCrewApiQueuePost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/crew-api-queue\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n selfTestCrewApiMclQueuePost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/crew-api-mcl-queue\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n selfTestPersonrevalidatePost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/personrevalidate\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n selfTestEmailqueuePost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SelfTest/emailqueue\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n seniorityReportPost(body: SeniorityReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SeniorityReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n seniorityReportSeniorityCommentPut(body: SeniorityCommentModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SeniorityReport/seniority-comment\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n seniorityReportSeniorityExitDatePut(body: SeniorityExitDateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SeniorityReport/seniority-exit-date\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n seniorityReportSeniorityEntryDatePut(body: SeniorityEntryDateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SeniorityReport/seniority-entry-date\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n serviceDownloadMessagesGet(params?:IDownloadMessagesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/download-messages\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n serviceMessageLabelsGet(params?:IGetMessageLabelsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/message-labels\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n serviceMessageTagsGet(params?:IGetMessageTagsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/message-tags\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n serviceDownloadFullLogsGet(params?:IDownloadFullLogsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/download-full-logs\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n serviceDownloadDayLogsGet(params?:IDownloadDayLogsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/download-day-logs\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n serviceDownloadDeadlettersGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/download-deadletters\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n serviceMessageStatisticsGet(params?:IMessageStatisticsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/message-statistics\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n serviceOperationsGet(params?:IOperationsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/operations\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n serviceLogsDatesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/logs-dates\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n serviceMessagesDatesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/messages-dates\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n serviceRestartSchedulerPost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/restart-scheduler\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n serviceInputQueueStatisticsPost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/input-queue-statistics\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n serviceInputQueueDeadlettersPost( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/input-queue-deadletters\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, null, requestOptions);\n }\n serviceInputQueueDeadlettersDelete(params?:IDeleteDeadletterParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Service/input-queue-deadletters\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n simulationGet(params?:IGetGET10Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n simulationPost(body: SimulationReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n simulationActivityPlannedGet(params?:IPlannedAircraftActivitiesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation/activity/planned\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n simulationTraineeCandidatesGet(params?:IGetTraineeCandidatesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation/trainee-candidates\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n simulationSimOverviewGet(params?:IGetSimOverviewParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation/sim-overview\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n simulationSimOverviewPut(body: SimulationCourseDto, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation/sim-overview\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n simulationSimOverviewDelete(params?:IDeleteSimulationCourseParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation/sim-overview\";\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n simulationEbtModulesGet(params?:IGetEbtModulesParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation/ebt-modules\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n simulationHistoryPost(params?:IGetSimHistoryParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation/history\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n simulationPositionHistoryPost(params?:IGetPositionSimHistoryParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation/position-history\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n simulationPositionHistoryLogPost(params?:IGetPositionLogSimHistoryParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation/position-history-log\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n simulationDeletionHistoryPost(params?:IGetSimDeletionHistoryParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Simulation/deletion-history\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n simulatorLicenseStatusReportPost(body: SimulatorLicenseStatusReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/SimulatorLicenseStatusReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n standbyReportPost(body: StandbyReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/StandbyReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n standbyReportFunctionsGet(params?:IGetReportFunctionsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/StandbyReport/functions\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n standbyReportDownloadEmailGet(params?:ICreateStandbyReportAutomationEmailParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/StandbyReport/download-email\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n tempFilePost(label: string, name: string, contentType: string, file: FileParameter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TempFile\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, file, requestOptions);\n }\n tempFileGetByIdName(params?:IGetGET11Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TempFile/{id}/{name}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n tempFileOutageRosterReportGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TempFile/outage-roster-report\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n tempFileRecentlyGetByLabel(params?:IGetRecentlySavedFileParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TempFile/recently/{label}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n templatesManagementCodesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TemplatesManagement/codes\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n templatesManagementGetByGroupCode(params?:IGetByCode3Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TemplatesManagement/{group}/{code}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n templatesManagementPostByGroupCode(group: string, code: string, body: TemplateFormattingModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TemplatesManagement/{group}/{code}\";\n _url = ApiService.getDynamicUrl(_url, { group, code, body });\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n templatesManagementPutByGroupCode(group: string, code: string, body: TemplateModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TemplatesManagement/{group}/{code}\";\n _url = ApiService.getDynamicUrl(_url, { group, code, body });\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n templatesManagementModelGetByGroupCode(params?:IGetTemplateDataModelParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TemplatesManagement/{group}/{code}/model\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n timeLocalToUtcPost(body: TimeModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Time/local-to-utc\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n timeUtcToLocalPost(body: TimeModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Time/utc-to-local\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n timeAvailableTimezonesPost(body: TimeModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Time/available-timezones\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n timeTimezoneOffsetsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Time/timezone-offsets\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n timeDefaultTimezoneGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Time/default-timezone\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n timeCalendarMonthGet(params?:ICalendarMonthParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Time/calendar-month\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n timeSwissTransitionsGet(params?:IGetSwissTimeTransitionsParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/Time/swiss-transitions\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n tradeUnionInterfaceDownloadFileGet(params?:IGetFileParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TradeUnionInterface/download-file\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n tradeUnionInterfaceExportInfoGetByType(params?:IGetExportIfoParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TradeUnionInterface/export-info/{type}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n tradeUnionInterfaceExportsPostByType(type: TradeUnionExportType, body: TradeUnionExportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TradeUnionInterface/exports/{type}\";\n _url = ApiService.getDynamicUrl(_url, { type, body });\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n tradeUnionInterfaceFileDataGet(params?:IGetAeroPersExportFileDataParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TradeUnionInterface/file-data\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n typeRatingFilterGet(params?:IGetGET12Params, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TypeRatingFilter\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n tzvYearOverviewReportPost(body: TzvYearOverviewFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TzvYearOverviewReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n tzvYearOverviewReportTzvYearsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TzvYearOverviewReport/tzv-years\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n tzvYearOverviewReportFleetTypesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TzvYearOverviewReport/fleet-types\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n tzvYearOverviewReportPlannerCommentPut(body: TzvYearPlannersCommentModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/TzvYearOverviewReport/planner-comment\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n vacManagementRequestsPost(body: VacManagementReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/requests\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n vacManagementRequestBlockPlannerCommentGetByRequestBlockId(params?:IGetPlannerCommentParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/request-block/{requestBlockId}/planner-comment\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n vacManagementRequestBlockPlannerCommentPutByRequestBlockId(requestBlockId: string, body: VacRequestChangePlannersCommentModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/request-block/{requestBlockId}/planner-comment\";\n _url = ApiService.getDynamicUrl(_url, { requestBlockId, body });\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n vacManagementRequestBlockPointsPutByRequestBlockId(requestBlockId: string, body: VacRequestChangePlannersPointsModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/request-block/{requestBlockId}/points\";\n _url = ApiService.getDynamicUrl(_url, { requestBlockId, body });\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n vacManagementRequestBlockGetByRequestBlockId(params?:IGetVacRequestInfoParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/request-block/{requestBlockId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n vacManagementRequestBlockAlternativesPostByRequestBlockId(requestBlockId: string, body: PersonRequestVacAlternativeCreate, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/request-block/{requestBlockId}/alternatives\";\n _url = ApiService.getDynamicUrl(_url, { requestBlockId, body });\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n vacManagementRequestsDeleteByRequestId(params?:IDeleteAlternativeVacRequestParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/requests/{requestId}\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.DELETE, _url, params, requestOptions);\n }\n vacManagementRequestsApprovePostByRequestId(requestId: string, body: PersonRequestVacApproveModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/requests/{requestId}/approve\";\n _url = ApiService.getDynamicUrl(_url, { requestId, body });\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n vacManagementRequestBlockRejectPostByRequestBlockId(requestBlockId: string, body: RejectRequestModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/request-block/{requestBlockId}/reject\";\n _url = ApiService.getDynamicUrl(_url, { requestBlockId, body });\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n vacManagementSelectedRangeValidationGet(params?:IValidateSelectedRangeParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/selected-range-validation\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n vacManagementUpdateSelectedRangePost(body: VacRequestUpdateSelectedRangeModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/update-selected-range\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n vacManagementRequestBlockInformedPostByRequestBlockId(requestBlockId: string, body: PersonRequestVacInformModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/request-block/{requestBlockId}/informed\";\n _url = ApiService.getDynamicUrl(_url, { requestBlockId, body });\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n vacManagementRequestBlockStatusRollbackPostByRequestBlockId(params?:IStatusRollbackParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/request-block/{requestBlockId}/status-rollback\";\n _url = ApiService.getDynamicUrl(_url, params);\n return ApiService.sendRequest(AxiosMethod.POST, _url, params, requestOptions);\n }\n vacManagementVacTypesGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/vac-types\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n vacManagementVacationYearsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/vacation-years\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n vacManagementVacationYearPeriodsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/vacation-year-periods\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n vacManagementVacationYearPeriodsFilterOptionsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/vacation-year-periods-filter-options\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n vacManagementVacationPeriodsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/vacation-periods\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n vacManagementVacationPeriodsPutByVacYearPeriodId(vacYearPeriodId: string, body: VacPeriodChangeStatusModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/vacation-periods/{vacYearPeriodId}\";\n _url = ApiService.getDynamicUrl(_url, { vacYearPeriodId, body });\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n vacManagementCapacityFiguresGet(params?:IGetVacationCapacityFiguresParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/capacity-figures\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n vacManagementCapacityMonthFiguresGet(params?:IGetVacationCapacityMonthFiguresParams, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/capacity-month-figures\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, params, requestOptions);\n }\n vacManagementMonthFromOptionsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/month-from-options\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n vacManagementMonthToOptionsGet( requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/month-to-options\";\n return ApiService.sendRequest(AxiosMethod.GET, _url, null, requestOptions);\n }\n vacManagementPersonVacYearDetailsPost(body: VacManagementPersonVacDetailsFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/VacManagement/person-vac-year-details\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n xStarMonitoringReportPost(body: XStarMonitoringReportFilter, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/XStarMonitoringReport\";\n return ApiService.sendRequest(AxiosMethod.POST, _url, body, requestOptions);\n }\n xStarMonitoringReportCommentPut(body: XStarCommentModel, requestOptions?: IAjaxOptions): AxiosPromise {\n let _url = this.baseUrl + \"/api/XStarMonitoringReport/comment\";\n return ApiService.sendRequest(AxiosMethod.PUT, _url, body, requestOptions);\n }\n}\nexport enum AcclimatisationStatus {\n B = \"B\",\n D = \"D\",\n Invalid = \"Invalid\",\n NotDefined = \"NotDefined\",\n X = \"X\",\n XStar = \"XStar\",\n}\n\nexport enum ActivityType {\n Action = \"Action\",\n Calculated = \"Calculated\",\n FlagDuty = \"FlagDuty\",\n FlagNonDuty = \"FlagNonDuty\",\n FlightRelated = \"FlightRelated\",\n NonFlight = \"NonFlight\",\n}\n\nexport interface IAircraftDto {\n id: string;\n registrationNumber: string;\n aircraftTypeRcd: string;\n inServiceDateFrom: Date;\n inServiceDateTo?: Date;\n isInUseActually: boolean;\n}\nexport class AircraftDto extends BaseApiModelClass< IAircraftDto > implements IAircraftDto {\n id: string;\n registrationNumber: string;\n aircraftTypeRcd: string;\n inServiceDateFrom: Date;\n inServiceDateTo?: Date;\n isInUseActually: boolean;\n}\n\nexport interface IAircraftMaintenanceDto {\n id: string;\n aircraftId: string;\n dateTimeFromUtc: Date;\n dateTimeToUtc: Date;\n title: string;\n}\nexport class AircraftMaintenanceDto extends BaseApiModelClass< IAircraftMaintenanceDto > implements IAircraftMaintenanceDto {\n id: string;\n aircraftId: string;\n dateTimeFromUtc: Date;\n dateTimeToUtc: Date;\n title: string;\n}\n\nexport interface IAircraftRotation {\n items: AircraftRotationItem[];\n}\nexport class AircraftRotation extends BaseApiModelClass< IAircraftRotation > implements IAircraftRotation {\n items: AircraftRotationItem[];\n}\n\nexport interface IAircraftRotationItem {\n flightId: string;\n airlineRcd: string;\n flightNumber: number;\n departureDateTimeUtc: Date;\n departureDateTimeDiffToLt: string;\n arrivalDateTimeUtc: Date;\n arrivalDateTimeDiffToLt: string;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n outOfTheGateDateTimeUtc?: Date;\n aircraftRegistrationNumber?: string;\n originRcd: string;\n destinationRcd: string;\n aircraftTypeRcd?: string;\n isLongHaul: boolean;\n}\nexport class AircraftRotationItem extends BaseApiModelClass< IAircraftRotationItem > implements IAircraftRotationItem {\n flightId: string;\n airlineRcd: string;\n flightNumber: number;\n departureDateTimeUtc: Date;\n departureDateTimeDiffToLt: string;\n arrivalDateTimeUtc: Date;\n arrivalDateTimeDiffToLt: string;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n outOfTheGateDateTimeUtc?: Date;\n aircraftRegistrationNumber?: string;\n originRcd: string;\n destinationRcd: string;\n aircraftTypeRcd?: string;\n isLongHaul: boolean;\n}\n\nexport enum AircraftType {\n A320 = \"A320\",\n A330 = \"A330\",\n A334 = \"A334\",\n A340 = \"A340\",\n None = \"None\",\n}\n\nexport interface IAircraftTypeRecencyCockpitReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personCode: string;\n personName?: string;\n personFunction?: string;\n personContract?: string;\n aircraftType: string;\n actualRecencyTillDate?: Date;\n actualLandingRecencyTillDate?: Date;\n actualTakeoffRecencyTillDate?: Date;\n plannedRecencyTillDate?: Date;\n plannedLandingRecencyTillDate?: Date;\n plannedTakeoffRecencyTillDate?: Date;\n last1stLandingDate?: Date;\n last2ndLandingDate?: Date;\n last3rdLandingDate?: Date;\n next1stLandingDate?: Date;\n next2ndLandingDate?: Date;\n next3rdLandingDate?: Date;\n last1stTakeoffDate?: Date;\n last2ndTakeoffDate?: Date;\n last3rdTakeoffDate?: Date;\n next1stTakeoffDate?: Date;\n next2ndTakeoffDate?: Date;\n next3rdTakeoffDate?: Date;\n typeRating?: string;\n lastRecencyTillDate?: Date;\n lastLandingRecencyTillDate?: Date;\n lastTakeoffRecencyTillDate?: Date;\n}\nexport class AircraftTypeRecencyCockpitReportModel extends BaseApiModelClass< IAircraftTypeRecencyCockpitReportModel > implements IAircraftTypeRecencyCockpitReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personCode: string;\n personName?: string;\n personFunction?: string;\n personContract?: string;\n aircraftType: string;\n actualRecencyTillDate?: Date;\n actualLandingRecencyTillDate?: Date;\n actualTakeoffRecencyTillDate?: Date;\n plannedRecencyTillDate?: Date;\n plannedLandingRecencyTillDate?: Date;\n plannedTakeoffRecencyTillDate?: Date;\n last1stLandingDate?: Date;\n last2ndLandingDate?: Date;\n last3rdLandingDate?: Date;\n next1stLandingDate?: Date;\n next2ndLandingDate?: Date;\n next3rdLandingDate?: Date;\n last1stTakeoffDate?: Date;\n last2ndTakeoffDate?: Date;\n last3rdTakeoffDate?: Date;\n next1stTakeoffDate?: Date;\n next2ndTakeoffDate?: Date;\n next3rdTakeoffDate?: Date;\n typeRating?: string;\n lastRecencyTillDate?: Date;\n lastLandingRecencyTillDate?: Date;\n lastTakeoffRecencyTillDate?: Date;\n}\n\nexport interface IAircraftTypeRecencyCockpitReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class AircraftTypeRecencyCockpitReportModelDataSourceLoadOptions extends BaseApiModelClass< IAircraftTypeRecencyCockpitReportModelDataSourceLoadOptions > implements IAircraftTypeRecencyCockpitReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport enum AircraftTypeRecencyLandingType {\n CustomLanding = \"CustomLanding\",\n SIM = \"SIM\",\n SimpleLanding = \"SimpleLanding\",\n Training = \"Training\",\n}\n\nexport interface IAircraftTypeRecencyReportCockpitFilter {\n rowLimit?: number;\n functionId: string;\n personId?: string;\n isCloseExpiry: boolean;\n}\nexport class AircraftTypeRecencyReportCockpitFilter extends BaseApiModelClass< IAircraftTypeRecencyReportCockpitFilter > implements IAircraftTypeRecencyReportCockpitFilter {\n rowLimit?: number;\n functionId: string;\n personId?: string;\n isCloseExpiry: boolean;\n}\n\nexport interface IAircraftTypeRecencyReportFilter {\n rowLimit?: number;\n date: Date;\n functionId: string;\n personId?: string;\n}\nexport class AircraftTypeRecencyReportFilter extends BaseApiModelClass< IAircraftTypeRecencyReportFilter > implements IAircraftTypeRecencyReportFilter {\n rowLimit?: number;\n date: Date;\n functionId: string;\n personId?: string;\n}\n\nexport interface IAircraftTypeRecencyReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personCrewId?: string;\n personCode: string;\n personName?: string;\n personFunction?: string;\n personContract?: string;\n aircraftTypeGroup?: string;\n recencyTillDate?: Date;\n easaRecencyTillDate?: Date;\n recencyDescription?: string;\n personEntryDateFrom?: Date;\n personEntryDateTo?: Date;\n recencyLandings: PersonAircraftTypeRecencyLandingModel[];\n}\nexport class AircraftTypeRecencyReportModel extends BaseApiModelClass< IAircraftTypeRecencyReportModel > implements IAircraftTypeRecencyReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personCrewId?: string;\n personCode: string;\n personName?: string;\n personFunction?: string;\n personContract?: string;\n aircraftTypeGroup?: string;\n recencyTillDate?: Date;\n easaRecencyTillDate?: Date;\n recencyDescription?: string;\n personEntryDateFrom?: Date;\n personEntryDateTo?: Date;\n recencyLandings: PersonAircraftTypeRecencyLandingModel[];\n}\n\nexport interface IAircraftTypeRecencyReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class AircraftTypeRecencyReportModelDataSourceLoadOptions extends BaseApiModelClass< IAircraftTypeRecencyReportModelDataSourceLoadOptions > implements IAircraftTypeRecencyReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IAirportDetailsLicenseActivityModel {\n activityRcd: string;\n licenseIds: string[];\n}\nexport class AirportDetailsLicenseActivityModel extends BaseApiModelClass< IAirportDetailsLicenseActivityModel > implements IAirportDetailsLicenseActivityModel {\n activityRcd: string;\n licenseIds: string[];\n}\n\nexport interface IAirportDetailsModel {\n fourLetterCode: string;\n threeLetterCode: string;\n name: string;\n countryCode?: string;\n isDisabled: boolean;\n latitude?: number;\n longitude?: number;\n countryName?: string;\n countryRegion?: string;\n isHandoverRelated: boolean;\n stationManagerEmail?: string;\n stationManagerFirstname?: string;\n stationManagerLastname?: string;\n stationManagerPhone?: string;\n activityLicenses: AirportDetailsLicenseActivityModel[];\n rules: AirportExperienceRuleInfo[];\n hotelDetails: AirportHotelDetailsModel[];\n}\nexport class AirportDetailsModel extends BaseApiModelClass< IAirportDetailsModel > implements IAirportDetailsModel {\n fourLetterCode: string;\n threeLetterCode: string;\n name: string;\n countryCode?: string;\n isDisabled: boolean;\n latitude?: number;\n longitude?: number;\n countryName?: string;\n countryRegion?: string;\n isHandoverRelated: boolean;\n stationManagerEmail?: string;\n stationManagerFirstname?: string;\n stationManagerLastname?: string;\n stationManagerPhone?: string;\n activityLicenses: AirportDetailsLicenseActivityModel[];\n rules: AirportExperienceRuleInfo[];\n hotelDetails: AirportHotelDetailsModel[];\n}\n\nexport interface IAirportExperienceConditionInfo {\n activityCode: string;\n conditionType: AirportExperienceConditionType;\n value: string;\n andGroup?: number;\n}\nexport class AirportExperienceConditionInfo extends BaseApiModelClass< IAirportExperienceConditionInfo > implements IAirportExperienceConditionInfo {\n activityCode: string;\n conditionType: AirportExperienceConditionType;\n value: string;\n andGroup?: number;\n}\n\nexport enum AirportExperienceConditionType {\n BlockHours = \"BlockHours\",\n CheckerTraineeFunction = \"CheckerTraineeFunction\",\n HasAircraftExperience = \"HasAircraftExperience\",\n InexperiencedPilotsLimit = \"InexperiencedPilotsLimit\",\n LicenseGroup = \"LicenseGroup\",\n LicenseId = \"LicenseId\",\n RecentMonthsLanding = \"RecentMonthsLanding\",\n RecentMonthsLandingAndTakeoffs = \"RecentMonthsLandingAndTakeoffs\",\n}\n\nexport interface IAirportExperienceRuleInfo {\n id: string;\n name: string;\n isActive: boolean;\n dataPeriodFrom?: Date;\n periodFrom?: Date;\n periodTo?: Date;\n applicableActivityCode?: string;\n isForLanding?: boolean;\n isForReleased: boolean;\n errorMessage: string;\n errorType: string;\n airportThreeLetterCodes: string[];\n conditions: AirportExperienceConditionInfo[];\n}\nexport class AirportExperienceRuleInfo extends BaseApiModelClass< IAirportExperienceRuleInfo > implements IAirportExperienceRuleInfo {\n id: string;\n name: string;\n isActive: boolean;\n readonly dataPeriodFrom?: Date;\n periodFrom?: Date;\n periodTo?: Date;\n applicableActivityCode?: string;\n isForLanding?: boolean;\n isForReleased: boolean;\n errorMessage: string;\n errorType: string;\n airportThreeLetterCodes: string[];\n conditions: AirportExperienceConditionInfo[];\n}\n\nexport interface IAirportHotelDetailsModel {\n type: HotelDetailType;\n value?: string;\n}\nexport class AirportHotelDetailsModel extends BaseApiModelClass< IAirportHotelDetailsModel > implements IAirportHotelDetailsModel {\n type: HotelDetailType;\n value?: string;\n}\n\nexport interface IAirportModel {\n fourLetterCode: string;\n threeLetterCode: string;\n name: string;\n countryCode?: string;\n isActive: boolean;\n latitude?: number;\n longitude?: number;\n}\nexport class AirportModel extends BaseApiModelClass< IAirportModel > implements IAirportModel {\n fourLetterCode: string;\n threeLetterCode: string;\n name: string;\n countryCode?: string;\n isActive: boolean;\n latitude?: number;\n longitude?: number;\n}\n\nexport interface IAirportRecencyReportFilter {\n rowLimit?: number;\n referenceDate?: Date;\n personId?: string;\n}\nexport class AirportRecencyReportFilter extends BaseApiModelClass< IAirportRecencyReportFilter > implements IAirportRecencyReportFilter {\n rowLimit?: number;\n referenceDate?: Date;\n personId?: string;\n}\n\nexport interface IAirportRecencyReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode: string;\n personName: string;\n personContract: string;\n functionName: string;\n fleetType?: FleetType;\n licenseFleet?: string;\n airportRcd: string;\n lastDutyLandingDate?: Date;\n lastSimTrainingDate?: Date;\n lastCustomLandingDate?: Date;\n lastDutyTakeoffDate?: Date;\n lastCustomTakeoffDate?: Date;\n lastAirportLandingDate?: Date;\n lastAirportTakeoffDate?: Date;\n recencyMonths: number;\n recencyMonthsEom: boolean;\n typeId: AirportExperienceConditionType;\n actualAirportRecencyExpiration3MonthsDate?: Date;\n actualAirportRecencyExpirationFinalDate?: Date;\n nextDutyLandingDate?: Date;\n nextSimTrainingDate?: Date;\n nextCustomLandingDate?: Date;\n nextDutyTakeoffDate?: Date;\n nextCustomTakeoffDate?: Date;\n nextAirportLandingDate?: Date;\n nextAirportTakeoffDate?: Date;\n plannedAirportRecencyExpiration3MonthsDate?: Date;\n plannedAirportRecencyExpirationFinalDate?: Date;\n}\nexport class AirportRecencyReportModel extends BaseApiModelClass< IAirportRecencyReportModel > implements IAirportRecencyReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode: string;\n personName: string;\n personContract: string;\n functionName: string;\n fleetType?: FleetType;\n licenseFleet?: string;\n airportRcd: string;\n lastDutyLandingDate?: Date;\n lastSimTrainingDate?: Date;\n lastCustomLandingDate?: Date;\n lastDutyTakeoffDate?: Date;\n lastCustomTakeoffDate?: Date;\n readonly lastAirportLandingDate?: Date;\n readonly lastAirportTakeoffDate?: Date;\n recencyMonths: number;\n recencyMonthsEom: boolean;\n typeId: AirportExperienceConditionType;\n readonly actualAirportRecencyExpiration3MonthsDate?: Date;\n readonly actualAirportRecencyExpirationFinalDate?: Date;\n nextDutyLandingDate?: Date;\n nextSimTrainingDate?: Date;\n nextCustomLandingDate?: Date;\n nextDutyTakeoffDate?: Date;\n nextCustomTakeoffDate?: Date;\n readonly nextAirportLandingDate?: Date;\n readonly nextAirportTakeoffDate?: Date;\n readonly plannedAirportRecencyExpiration3MonthsDate?: Date;\n readonly plannedAirportRecencyExpirationFinalDate?: Date;\n}\n\nexport interface IAirportRecencyReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class AirportRecencyReportModelDataSourceLoadOptions extends BaseApiModelClass< IAirportRecencyReportModelDataSourceLoadOptions > implements IAirportRecencyReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IAirportShortInfo {\n threeLetterCode: string;\n fourLetterCode: string;\n aircraftTypes: string[];\n}\nexport class AirportShortInfo extends BaseApiModelClass< IAirportShortInfo > implements IAirportShortInfo {\n threeLetterCode: string;\n fourLetterCode: string;\n aircraftTypes: string[];\n}\n\nexport interface IApiV1Job {\n id: string;\n name: string;\n description?: string;\n jobType: string;\n lastRunDateTimeUtc?: Date;\n nextRunDateTimeUtc?: Date;\n lastRunTriggerName?: string;\n nextRunTriggerName?: string;\n lastErrorMessage?: string;\n lastStatus?: JobStatus;\n timestampDateTimeUtc: Date;\n triggers: JobTriggerShortInfo[];\n permissionName?: string;\n lastExecutionInfoMessage?: string;\n}\nexport class ApiV1Job extends BaseApiModelClass< IApiV1Job > implements IApiV1Job {\n id: string;\n name: string;\n description?: string;\n jobType: string;\n lastRunDateTimeUtc?: Date;\n nextRunDateTimeUtc?: Date;\n lastRunTriggerName?: string;\n nextRunTriggerName?: string;\n lastErrorMessage?: string;\n lastStatus?: JobStatus;\n timestampDateTimeUtc: Date;\n triggers: JobTriggerShortInfo[];\n permissionName?: string;\n lastExecutionInfoMessage?: string;\n}\n\nexport interface IApiV1JobList {\n jobs: ApiV1Job[];\n status?: SchedulerStatus;\n startupException?: string;\n}\nexport class ApiV1JobList extends BaseApiModelClass< IApiV1JobList > implements IApiV1JobList {\n jobs: ApiV1Job[];\n status?: SchedulerStatus;\n startupException?: string;\n}\n\nexport interface IApiV1JobTrigger {\n executionId?: string;\n id: string;\n nextRunDateTime?: Date;\n lastRunDateTime?: Date;\n lastErrorMessage?: string;\n status?: JobStatus;\n isActive: boolean;\n cronSchedule?: string;\n progressMessage?: string;\n}\nexport class ApiV1JobTrigger extends BaseApiModelClass< IApiV1JobTrigger > implements IApiV1JobTrigger {\n executionId?: string;\n id: string;\n nextRunDateTime?: Date;\n lastRunDateTime?: Date;\n lastErrorMessage?: string;\n status?: JobStatus;\n isActive: boolean;\n cronSchedule?: string;\n progressMessage?: string;\n}\n\nexport interface IApproveReserveRequestModel {\n id: string;\n ignoreValidationWarnings: boolean;\n}\nexport class ApproveReserveRequestModel extends BaseApiModelClass< IApproveReserveRequestModel > implements IApproveReserveRequestModel {\n id: string;\n ignoreValidationWarnings: boolean;\n}\n\nexport interface IAreaRouteCompetenceAirportDto {\n airportThreeLetterCode: string;\n routeCompetenceId: string;\n}\nexport class AreaRouteCompetenceAirportDto extends BaseApiModelClass< IAreaRouteCompetenceAirportDto > implements IAreaRouteCompetenceAirportDto {\n airportThreeLetterCode: string;\n routeCompetenceId: string;\n}\n\nexport interface IAreaRouteCompetenceDate {\n competenceId: string;\n competenceName: string;\n competencyDate?: Date;\n competencyFlightDate?: Date;\n plannedDate?: Date;\n}\nexport class AreaRouteCompetenceDate extends BaseApiModelClass< IAreaRouteCompetenceDate > implements IAreaRouteCompetenceDate {\n competenceId: string;\n competenceName: string;\n competencyDate?: Date;\n competencyFlightDate?: Date;\n plannedDate?: Date;\n}\n\nexport interface IAreaRouteCompetenceDto {\n id: string;\n displayName: string;\n sortOrder: number;\n}\nexport class AreaRouteCompetenceDto extends BaseApiModelClass< IAreaRouteCompetenceDto > implements IAreaRouteCompetenceDto {\n id: string;\n displayName: string;\n sortOrder: number;\n}\n\nexport interface IAreaRouteCompetenceReportFilter {\n rowLimit?: number;\n referenceDate?: Date;\n personId?: string;\n}\nexport class AreaRouteCompetenceReportFilter extends BaseApiModelClass< IAreaRouteCompetenceReportFilter > implements IAreaRouteCompetenceReportFilter {\n rowLimit?: number;\n referenceDate?: Date;\n personId?: string;\n}\n\nexport interface IAreaRouteCompetenceReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode: string;\n crewId: string;\n personName: string;\n functionName: string;\n fleetType?: FleetType;\n licenseFleet: string;\n hasCrpLicense: boolean;\n competencies: string[];\n competenciesCount: number;\n competenceDates: AreaRouteCompetenceDate[];\n expirationDate?: Date;\n expirationFlightDate?: Date;\n}\nexport class AreaRouteCompetenceReportModel extends BaseApiModelClass< IAreaRouteCompetenceReportModel > implements IAreaRouteCompetenceReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode: string;\n readonly crewId: string;\n personName: string;\n functionName: string;\n fleetType?: FleetType;\n licenseFleet: string;\n hasCrpLicense: boolean;\n competencies: string[];\n readonly competenciesCount: number;\n competenceDates: AreaRouteCompetenceDate[];\n readonly expirationDate?: Date;\n readonly expirationFlightDate?: Date;\n}\n\nexport interface IAreaRouteCompetenceReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class AreaRouteCompetenceReportModelDataSourceLoadOptions extends BaseApiModelClass< IAreaRouteCompetenceReportModelDataSourceLoadOptions > implements IAreaRouteCompetenceReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IAreaRouteCompetenceRulesDto {\n areaRouteCompetences: AreaRouteCompetenceDto[];\n airportThreeLetterCodes: string[];\n}\nexport class AreaRouteCompetenceRulesDto extends BaseApiModelClass< IAreaRouteCompetenceRulesDto > implements IAreaRouteCompetenceRulesDto {\n areaRouteCompetences: AreaRouteCompetenceDto[];\n airportThreeLetterCodes: string[];\n}\n\nexport interface IAreaRouteCompetenceRulesReportFilter {\n rowLimit?: number;\n personId?: string;\n}\nexport class AreaRouteCompetenceRulesReportFilter extends BaseApiModelClass< IAreaRouteCompetenceRulesReportFilter > implements IAreaRouteCompetenceRulesReportFilter {\n rowLimit?: number;\n personId?: string;\n}\n\nexport interface IAreaRouteCompetenceRulesReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n airportThreeLetterCode: string;\n routeCompetenceId: string;\n}\nexport class AreaRouteCompetenceRulesReportModel extends BaseApiModelClass< IAreaRouteCompetenceRulesReportModel > implements IAreaRouteCompetenceRulesReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n airportThreeLetterCode: string;\n routeCompetenceId: string;\n}\n\nexport interface IAreaRouteCompetenceRulesReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class AreaRouteCompetenceRulesReportModelDataSourceLoadOptions extends BaseApiModelClass< IAreaRouteCompetenceRulesReportModelDataSourceLoadOptions > implements IAreaRouteCompetenceRulesReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IAssignFlightValidationResult {\n isValid: boolean;\n rotationStartDate: Date;\n rotationEndDate: Date;\n person?: PersonInfoModel;\n bh28DaysSecs?: number;\n blockHours12MSecs?: number;\n blockHours1YearSecs?: number;\n dh28DaysSecs?: number;\n dh14DaysSecs?: number;\n dh7DaysSecs?: number;\n score: number;\n}\nexport class AssignFlightValidationResult extends BaseApiModelClass< IAssignFlightValidationResult > implements IAssignFlightValidationResult {\n isValid: boolean;\n rotationStartDate: Date;\n rotationEndDate: Date;\n person?: PersonInfoModel;\n bh28DaysSecs?: number;\n blockHours12MSecs?: number;\n blockHours1YearSecs?: number;\n dh28DaysSecs?: number;\n dh14DaysSecs?: number;\n dh7DaysSecs?: number;\n score: number;\n}\n\nexport interface IAssignedFlight {\n flightNumber: number;\n originRcd: string;\n destinationRcd: string;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n isIncompleteOooi: boolean;\n isIntroFlight: boolean;\n isObserverFlight: boolean;\n}\nexport class AssignedFlight extends BaseApiModelClass< IAssignedFlight > implements IAssignedFlight {\n flightNumber: number;\n originRcd: string;\n destinationRcd: string;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n isIncompleteOooi: boolean;\n isIntroFlight: boolean;\n isObserverFlight: boolean;\n}\n\nexport interface IAvailableDirectionModel {\n originRcds: string[];\n destinationRcds: string[];\n}\nexport class AvailableDirectionModel extends BaseApiModelClass< IAvailableDirectionModel > implements IAvailableDirectionModel {\n originRcds: string[];\n destinationRcds: string[];\n}\n\nexport interface IAvailableFlightModel {\n id: string;\n flightNumber: number;\n date: Date;\n isForCockpit: boolean;\n isForCabin: boolean;\n isInbound: boolean;\n}\nexport class AvailableFlightModel extends BaseApiModelClass< IAvailableFlightModel > implements IAvailableFlightModel {\n id: string;\n flightNumber: number;\n date: Date;\n isForCockpit: boolean;\n isForCabin: boolean;\n isInbound: boolean;\n}\n\nexport interface IAvailableRequestRange {\n shortTermOffStartDate?: Date;\n shortTermOffEndDate?: Date;\n longTermOffStartDate?: Date;\n longTermOffEndDate?: Date;\n flightStartDate: Date;\n flightEndDate: Date;\n}\nexport class AvailableRequestRange extends BaseApiModelClass< IAvailableRequestRange > implements IAvailableRequestRange {\n shortTermOffStartDate?: Date;\n shortTermOffEndDate?: Date;\n longTermOffStartDate?: Date;\n longTermOffEndDate?: Date;\n flightStartDate: Date;\n flightEndDate: Date;\n}\n\nexport enum BlockedDayType {\n All = \"All\",\n Flights = \"Flights\",\n OFFs = \"OFFs\",\n}\n\nexport interface IBulkUndoModel {\n operationIds: string[];\n allowUndoSystemOperation: boolean;\n}\nexport class BulkUndoModel extends BaseApiModelClass< IBulkUndoModel > implements IBulkUndoModel {\n operationIds: string[];\n allowUndoSystemOperation: boolean;\n}\n\nexport interface IBulkUpdateResponseItem {\n operationId: string;\n errorMessage?: string;\n}\nexport class BulkUpdateResponseItem extends BaseApiModelClass< IBulkUpdateResponseItem > implements IBulkUpdateResponseItem {\n operationId: string;\n errorMessage?: string;\n}\n\nexport interface ICabinCrewAttestationModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id?: string;\n refName: string;\n personId: string;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n personBirthDate?: Date;\n personPlaceOfBirth?: string;\n personNationality?: string;\n courseId: string;\n courseName: string;\n courseStart: Date;\n courseEnd: Date;\n courseStatus: CourseStatus;\n isAvailableCCA: boolean;\n hasCompleteCourse: boolean;\n personSignatureId?: string;\n status: CabinCrewAttestationStatus;\n}\nexport class CabinCrewAttestationModel extends BaseApiModelClass< ICabinCrewAttestationModel > implements ICabinCrewAttestationModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id?: string;\n refName: string;\n personId: string;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n personBirthDate?: Date;\n personPlaceOfBirth?: string;\n personNationality?: string;\n courseId: string;\n courseName: string;\n courseStart: Date;\n courseEnd: Date;\n courseStatus: CourseStatus;\n isAvailableCCA: boolean;\n hasCompleteCourse: boolean;\n personSignatureId?: string;\n status: CabinCrewAttestationStatus;\n}\n\nexport interface ICabinCrewAttestationModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class CabinCrewAttestationModelDataSourceLoadOptions extends BaseApiModelClass< ICabinCrewAttestationModelDataSourceLoadOptions > implements ICabinCrewAttestationModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface ICabinCrewAttestationReportFilter {\n rowLimit?: number;\n}\nexport class CabinCrewAttestationReportFilter extends BaseApiModelClass< ICabinCrewAttestationReportFilter > implements ICabinCrewAttestationReportFilter {\n rowLimit?: number;\n}\n\nexport enum CabinCrewAttestationStatus {\n Cancelled = \"Cancelled\",\n Created = \"Created\",\n Incorrect = \"Incorrect\",\n Paused = \"Paused\",\n Ready = \"Ready\",\n Signed = \"Signed\",\n Uploaded = \"Uploaded\",\n}\n\nexport interface ICalendarMonthDto {\n month: number;\n year: number;\n name: string;\n}\nexport class CalendarMonthDto extends BaseApiModelClass< ICalendarMonthDto > implements ICalendarMonthDto {\n month: number;\n year: number;\n name: string;\n}\n\nexport enum CalendarType {\n Fdr = \"Fdr\",\n InstructorFdr = \"InstructorFdr\",\n}\n\nexport enum CapacityLevel {\n High = \"High\",\n Low = \"Low\",\n None = \"None\",\n}\n\nexport interface ICapacityModel {\n date: Date;\n value: number;\n}\nexport class CapacityModel extends BaseApiModelClass< ICapacityModel > implements ICapacityModel {\n date: Date;\n value: number;\n}\n\nexport interface ICateringReportCreateModel {\n periodFrom?: Date;\n periodTo?: Date;\n reportType: MealReportType;\n}\nexport class CateringReportCreateModel extends BaseApiModelClass< ICateringReportCreateModel > implements ICateringReportCreateModel {\n periodFrom?: Date;\n periodTo?: Date;\n reportType: MealReportType;\n}\n\nexport interface ICateringReportItem {\n id: string;\n createdAtUtc: Date;\n createdBy?: string;\n periodFrom: Date;\n periodTo: Date;\n type: MealReportType;\n fileName: string;\n}\nexport class CateringReportItem extends BaseApiModelClass< ICateringReportItem > implements ICateringReportItem {\n id: string;\n createdAtUtc: Date;\n createdBy?: string;\n periodFrom: Date;\n periodTo: Date;\n type: MealReportType;\n fileName: string;\n}\n\nexport interface IChangeCheckInCheckOutModel {\n date: Date;\n personId: string;\n isCo: boolean;\n checkInDateTime?: Date;\n checkOutDateTime?: Date;\n}\nexport class ChangeCheckInCheckOutModel extends BaseApiModelClass< IChangeCheckInCheckOutModel > implements IChangeCheckInCheckOutModel {\n date: Date;\n personId: string;\n isCo: boolean;\n checkInDateTime?: Date;\n checkOutDateTime?: Date;\n}\n\nexport interface IChangeDutyHoursModel {\n personId: string;\n date: Date;\n activityRcd: string;\n dutyTimeSec?: number;\n}\nexport class ChangeDutyHoursModel extends BaseApiModelClass< IChangeDutyHoursModel > implements IChangeDutyHoursModel {\n personId: string;\n date: Date;\n activityRcd: string;\n dutyTimeSec?: number;\n}\n\nexport interface IChangeField {\n name: string;\n oldValue?: string;\n newValue?: string;\n}\nexport class ChangeField extends BaseApiModelClass< IChangeField > implements IChangeField {\n name: string;\n oldValue?: string;\n newValue?: string;\n}\n\nexport interface IChangeLogFilter {\n rowLimit?: number;\n ids: string[];\n changeLogStatuses: ChangeLogStatus[];\n dateFrom?: Date;\n dateTo?: Date;\n}\nexport class ChangeLogFilter extends BaseApiModelClass< IChangeLogFilter > implements IChangeLogFilter {\n rowLimit?: number;\n ids: string[];\n changeLogStatuses: ChangeLogStatus[];\n dateFrom?: Date;\n dateTo?: Date;\n}\n\nexport interface IChangeLogModel {\n personId: string;\n date: Date;\n oldDuty: string;\n newDuty: string;\n reason?: string;\n alertTypeId?: number;\n}\nexport class ChangeLogModel extends BaseApiModelClass< IChangeLogModel > implements IChangeLogModel {\n personId: string;\n date: Date;\n oldDuty: string;\n newDuty: string;\n reason?: string;\n alertTypeId?: number;\n}\n\nexport interface IChangeLogReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n personId: string;\n personCode: string;\n personName?: string;\n personFunction?: string;\n personPhoneNumber?: string;\n personPhone?: string;\n personPhoneMobile?: string;\n personPhoneMobilePrivate?: string;\n personPhonePrivate?: string;\n personEmail?: string;\n dutyDate: Date;\n oldDuty: string;\n newDuty: string;\n reason: string;\n createdDate: Date;\n createdByPrincipal: string;\n isConfirmedByPlanningTeam: boolean;\n confirmedByPlanningTeamAtDate?: Date;\n confirmedByCrewAtDate?: Date;\n confirmedBy?: string;\n totalUnconfirmedCount?: number;\n}\nexport class ChangeLogReportModel extends BaseApiModelClass< IChangeLogReportModel > implements IChangeLogReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n personId: string;\n personCode: string;\n personName?: string;\n personFunction?: string;\n personPhoneNumber?: string;\n personPhone?: string;\n personPhoneMobile?: string;\n personPhoneMobilePrivate?: string;\n personPhonePrivate?: string;\n personEmail?: string;\n dutyDate: Date;\n oldDuty: string;\n newDuty: string;\n reason: string;\n createdDate: Date;\n createdByPrincipal: string;\n isConfirmedByPlanningTeam: boolean;\n confirmedByPlanningTeamAtDate?: Date;\n confirmedByCrewAtDate?: Date;\n confirmedBy?: string;\n totalUnconfirmedCount?: number;\n}\n\nexport interface IChangeLogReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class ChangeLogReportModelDataSourceLoadOptions extends BaseApiModelClass< IChangeLogReportModelDataSourceLoadOptions > implements IChangeLogReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport enum ChangeLogStatus {\n Confirmed = \"Confirmed\",\n NotConfirmed = \"NotConfirmed\",\n}\n\nexport interface IChangeLogUpdateConfirmationModel {\n isConfirmedByPlanningTeam: boolean;\n confirmedAt?: Date;\n confirmedBy?: string;\n}\nexport class ChangeLogUpdateConfirmationModel extends BaseApiModelClass< IChangeLogUpdateConfirmationModel > implements IChangeLogUpdateConfirmationModel {\n isConfirmedByPlanningTeam: boolean;\n confirmedAt?: Date;\n confirmedBy?: string;\n}\n\nexport interface ICheckInCheckOutModel {\n date: Date;\n personId: string;\n isCo: boolean;\n}\nexport class CheckInCheckOutModel extends BaseApiModelClass< ICheckInCheckOutModel > implements ICheckInCheckOutModel {\n date: Date;\n personId: string;\n isCo: boolean;\n}\n\nexport enum CheckerTraineeFunction {\n Cl = \"Cl\",\n ClEf = \"ClEf\",\n CompetencyCheck = \"CompetencyCheck\",\n CrpLc = \"CrpLc\",\n Ef = \"Ef\",\n FLc = \"FLc\",\n Lc = \"Lc\",\n Le = \"Le\",\n Lifus = \"Lifus\",\n Lpl4 = \"Lpl4\",\n None = \"None\",\n Refam = \"Refam\",\n SafetyPilot = \"SafetyPilot\",\n ScEf = \"ScEf\",\n Sf = \"Sf\",\n}\n\nexport enum CheckerTraineeFunctionCrewType {\n Cabin = \"Cabin\",\n Cockpit = \"Cockpit\",\n Ground = \"Ground\",\n}\n\nexport interface ICheckerTraineeFunctionModel {\n value: number;\n name: string;\n description: string;\n crewType: CheckerTraineeFunctionCrewType;\n isSingleFunction: boolean;\n}\nexport class CheckerTraineeFunctionModel extends BaseApiModelClass< ICheckerTraineeFunctionModel > implements ICheckerTraineeFunctionModel {\n value: number;\n name: string;\n description: string;\n crewType: CheckerTraineeFunctionCrewType;\n isSingleFunction: boolean;\n}\n\nexport interface IClientErrorModel {\n message?: string;\n source?: string;\n url?: string;\n navigatorUserAgent?: string;\n navigatorVendor?: string;\n screenSize?: string;\n}\nexport class ClientErrorModel extends BaseApiModelClass< IClientErrorModel > implements IClientErrorModel {\n message?: string;\n source?: string;\n url?: string;\n navigatorUserAgent?: string;\n navigatorVendor?: string;\n screenSize?: string;\n}\n\nexport enum CommentCategory {\n Day = \"Day\",\n Duty = \"Duty\",\n Flight = \"Flight\",\n Person = \"Person\",\n PlanningNote = \"PlanningNote\",\n Seniority = \"Seniority\",\n TzvYear = \"TzvYear\",\n Validation = \"Validation\",\n XStar = \"XStar\",\n}\n\nexport interface ICommentReportFilter {\n rowLimit?: number;\n dateFrom?: Date;\n dateTo?: Date;\n}\nexport class CommentReportFilter extends BaseApiModelClass< ICommentReportFilter > implements ICommentReportFilter {\n rowLimit?: number;\n dateFrom?: Date;\n dateTo?: Date;\n}\n\nexport interface ICommentReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n personCode: string;\n personName?: string;\n date?: Date;\n text: string;\n category: CommentCategory;\n validTillDate?: Date;\n createdDateUtc: Date;\n createdBy: string;\n}\nexport class CommentReportModel extends BaseApiModelClass< ICommentReportModel > implements ICommentReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n personCode: string;\n personName?: string;\n date?: Date;\n text: string;\n category: CommentCategory;\n validTillDate?: Date;\n createdDateUtc: Date;\n createdBy: string;\n}\n\nexport interface ICommentReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class CommentReportModelDataSourceLoadOptions extends BaseApiModelClass< ICommentReportModelDataSourceLoadOptions > implements ICommentReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface ICommentShortDto {\n id: string;\n text: string;\n}\nexport class CommentShortDto extends BaseApiModelClass< ICommentShortDto > implements ICommentShortDto {\n id: string;\n text: string;\n}\n\nexport enum ConfigType {\n Boolean = \"Boolean\",\n Date = \"Date\",\n DateTime = \"DateTime\",\n Html = \"Html\",\n Number = \"Number\",\n Select = \"Select\",\n Text = \"Text\",\n Uri = \"Uri\",\n}\n\nexport interface IConfigurationModel {\n key: string;\n group: string;\n value: string;\n description?: string;\n type?: ConfigType;\n isSystem?: boolean;\n options?: string;\n permission?: string;\n}\nexport class ConfigurationModel extends BaseApiModelClass< IConfigurationModel > implements IConfigurationModel {\n key: string;\n group: string;\n value: string;\n description?: string;\n type?: ConfigType;\n isSystem?: boolean;\n options?: string;\n permission?: string;\n}\n\nexport interface IConnectedClientModel {\n identity: string;\n fullName?: string;\n roles: string[];\n locations: PageLocation[];\n}\nexport class ConnectedClientModel extends BaseApiModelClass< IConnectedClientModel > implements IConnectedClientModel {\n identity: string;\n fullName?: string;\n roles: string[];\n locations: PageLocation[];\n}\n\nexport interface IConstantFreelanceContractResponse {\n isConstantFreelancer: boolean;\n hasFreelancerContract: boolean;\n}\nexport class ConstantFreelanceContractResponse extends BaseApiModelClass< IConstantFreelanceContractResponse > implements IConstantFreelanceContractResponse {\n isConstantFreelancer: boolean;\n hasFreelancerContract: boolean;\n}\n\nexport enum ContractFlagType {\n Fix = \"Fix\",\n Freelance = \"Freelance\",\n Fse = \"Fse\",\n GroundOnly = \"GroundOnly\",\n None = \"None\",\n Tzv = \"Tzv\",\n}\n\nexport interface IContractFlagTypeModel {\n name: string;\n value: number;\n}\nexport class ContractFlagTypeModel extends BaseApiModelClass< IContractFlagTypeModel > implements IContractFlagTypeModel {\n name: string;\n value: number;\n}\n\nexport enum ContractModelType {\n FL_A = \"FL_A\",\n FL_B = \"FL_B\",\n FL_C = \"FL_C\",\n FL_S = \"FL_S\",\n None = \"None\",\n TZV_Day = \"TZV_Day\",\n TZV_FixBlock = \"TZV_FixBlock\",\n TZV_FixDay = \"TZV_FixDay\",\n TZV_Ground = \"TZV_Ground\",\n TZV_Month = \"TZV_Month\",\n TZV_Spez = \"TZV_Spez\",\n TZV_VariableBlock = \"TZV_VariableBlock\",\n TZV_VariableDay = \"TZV_VariableDay\",\n}\n\nexport enum ContractType {\n Fix = \"Fix\",\n Freelance = \"Freelance\",\n Fse = \"Fse\",\n None = \"None\",\n Tzv = \"Tzv\",\n}\n\nexport interface IContractTypeModel {\n name: string;\n value: number;\n}\nexport class ContractTypeModel extends BaseApiModelClass< IContractTypeModel > implements IContractTypeModel {\n name: string;\n value: number;\n}\n\nexport interface ICopyDutyData {\n sourceDutyIds: string[];\n destinationCells: DutyCellModel[];\n}\nexport class CopyDutyData extends BaseApiModelClass< ICopyDutyData > implements ICopyDutyData {\n sourceDutyIds: string[];\n destinationCells: DutyCellModel[];\n}\n\nexport interface ICopyDutyModel {\n commentIdsToDelete: string[];\n operations: CopyDutyData[];\n overrideAllowed: boolean;\n isMoving: boolean;\n}\nexport class CopyDutyModel extends BaseApiModelClass< ICopyDutyModel > implements ICopyDutyModel {\n commentIdsToDelete: string[];\n operations: CopyDutyData[];\n overrideAllowed: boolean;\n isMoving: boolean;\n}\n\nexport interface ICountryItem {\n name: string;\n threeLetterCode: string;\n twoLetterCode: string;\n region?: string;\n subRegion?: string;\n intermediateRegion?: string;\n}\nexport class CountryItem extends BaseApiModelClass< ICountryItem > implements ICountryItem {\n name: string;\n threeLetterCode: string;\n twoLetterCode: string;\n region?: string;\n subRegion?: string;\n intermediateRegion?: string;\n}\n\nexport interface ICourseDto {\n id?: string;\n name: string;\n startDate: Date;\n endDate: Date;\n type: CourseType;\n status: CourseStatus;\n persons: PersonCourseDto[];\n}\nexport class CourseDto extends BaseApiModelClass< ICourseDto > implements ICourseDto {\n id?: string;\n name: string;\n startDate: Date;\n endDate: Date;\n type: CourseType;\n status: CourseStatus;\n persons: PersonCourseDto[];\n}\n\nexport interface ICourseImportResultModel {\n courses: CourseDto[];\n errors: string[];\n}\nexport class CourseImportResultModel extends BaseApiModelClass< ICourseImportResultModel > implements ICourseImportResultModel {\n courses: CourseDto[];\n errors: string[];\n}\n\nexport interface ICourseManagementFilter {\n rowLimit?: number;\n}\nexport class CourseManagementFilter extends BaseApiModelClass< ICourseManagementFilter > implements ICourseManagementFilter {\n rowLimit?: number;\n}\n\nexport interface ICourseManagementModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n name: string;\n startDate: Date;\n endDate: Date;\n type: CourseType;\n status: CourseStatus;\n isBazlSent: boolean;\n bazlMailAttachmentId?: string;\n bazlMailFileName?: string;\n}\nexport class CourseManagementModel extends BaseApiModelClass< ICourseManagementModel > implements ICourseManagementModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n name: string;\n startDate: Date;\n endDate: Date;\n type: CourseType;\n status: CourseStatus;\n isBazlSent: boolean;\n bazlMailAttachmentId?: string;\n bazlMailFileName?: string;\n}\n\nexport interface ICourseManagementModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class CourseManagementModelDataSourceLoadOptions extends BaseApiModelClass< ICourseManagementModelDataSourceLoadOptions > implements ICourseManagementModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport enum CourseStatus {\n Cancelled = \"Cancelled\",\n Closed = \"Closed\",\n InProgress = \"InProgress\",\n Open = \"Open\",\n}\n\nexport enum CourseType {\n InitialCourse = \"InitialCourse\",\n}\n\nexport interface ICreateHomeStudyFilter {\n rowLimit?: number;\n ids?: string[];\n functionFromDate?: Date;\n referenceDate?: Date;\n functionId?: string;\n contractTypes?: ContractType[];\n}\nexport class CreateHomeStudyFilter extends BaseApiModelClass< ICreateHomeStudyFilter > implements ICreateHomeStudyFilter {\n rowLimit?: number;\n ids?: string[];\n functionFromDate?: Date;\n referenceDate?: Date;\n functionId?: string;\n contractTypes?: ContractType[];\n}\n\nexport interface ICreatePlaningNoteModel {\n selectedCells: PersonDayDto[];\n planningNote: string;\n}\nexport class CreatePlaningNoteModel extends BaseApiModelClass< ICreatePlaningNoteModel > implements ICreatePlaningNoteModel {\n selectedCells: PersonDayDto[];\n planningNote: string;\n}\n\nexport interface ICreateReserveBlockModel {\n dateFrom: Date;\n dateTo: Date;\n rsvGroup: PersonRequestReserveGroupType;\n function: string;\n}\nexport class CreateReserveBlockModel extends BaseApiModelClass< ICreateReserveBlockModel > implements ICreateReserveBlockModel {\n dateFrom: Date;\n dateTo: Date;\n rsvGroup: PersonRequestReserveGroupType;\n function: string;\n}\n\nexport interface ICrewApiConfigReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n countryTwoLetterCode: string;\n countryThreeLetterCode: string;\n countryName: string;\n triggerType: FlightTriggerType;\n isInbound: boolean;\n messageFormat: CrewApiMessageFormat;\n deliveryMethod: CrewApiDeliveryMethod;\n isActive: boolean;\n}\nexport class CrewApiConfigReportModel extends BaseApiModelClass< ICrewApiConfigReportModel > implements ICrewApiConfigReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n countryTwoLetterCode: string;\n countryThreeLetterCode: string;\n countryName: string;\n triggerType: FlightTriggerType;\n isInbound: boolean;\n messageFormat: CrewApiMessageFormat;\n deliveryMethod: CrewApiDeliveryMethod;\n isActive: boolean;\n}\n\nexport interface ICrewApiConfigurationDeliveryModel {\n method: CrewApiDeliveryMethod;\n configuration: string;\n}\nexport class CrewApiConfigurationDeliveryModel extends BaseApiModelClass< ICrewApiConfigurationDeliveryModel > implements ICrewApiConfigurationDeliveryModel {\n method: CrewApiDeliveryMethod;\n configuration: string;\n}\n\nexport interface ICrewApiConfigurationModel {\n threeLetterCode: string;\n twoLetterCode: string;\n name: string;\n region?: string;\n subRegion?: string;\n intermediateRegion?: string;\n isActive: boolean;\n messageFormat: CrewApiMessageFormat;\n messageFormatConfiguration?: string;\n deliveryMethods: CrewApiConfigurationDeliveryModel[];\n triggersInbound: FlightTriggerType[];\n triggersOutbound: FlightTriggerType[];\n relatedAirports: string[];\n countryAirports: string[];\n hasMcl: boolean;\n}\nexport class CrewApiConfigurationModel extends BaseApiModelClass< ICrewApiConfigurationModel > implements ICrewApiConfigurationModel {\n threeLetterCode: string;\n twoLetterCode: string;\n name: string;\n region?: string;\n subRegion?: string;\n intermediateRegion?: string;\n isActive: boolean;\n messageFormat: CrewApiMessageFormat;\n messageFormatConfiguration?: string;\n deliveryMethods: CrewApiConfigurationDeliveryModel[];\n triggersInbound: FlightTriggerType[];\n triggersOutbound: FlightTriggerType[];\n relatedAirports: string[];\n countryAirports: string[];\n hasMcl: boolean;\n}\n\nexport enum CrewApiDeliveryMethod {\n EAPIS = \"eAPIS\",\n EmailPlaintextBody = \"EmailPlaintextBody\",\n EmailWithTextAttachment = \"EmailWithTextAttachment\",\n ManualWebUpload = \"ManualWebUpload\",\n WebRequest = \"WebRequest\",\n}\n\nexport interface ICrewApiDeliveryMethodModel {\n name: string;\n value: CrewApiDeliveryMethod;\n}\nexport class CrewApiDeliveryMethodModel extends BaseApiModelClass< ICrewApiDeliveryMethodModel > implements ICrewApiDeliveryMethodModel {\n name: string;\n value: CrewApiDeliveryMethod;\n}\n\nexport interface ICrewApiFlightEventStatus {\n flightId: string;\n items: CrewApiFlightEventStatusItem[];\n}\nexport class CrewApiFlightEventStatus extends BaseApiModelClass< ICrewApiFlightEventStatus > implements ICrewApiFlightEventStatus {\n flightId: string;\n items: CrewApiFlightEventStatusItem[];\n}\n\nexport interface ICrewApiFlightEventStatusItem {\n triggerType: FlightTriggerType;\n airportRcd: string;\n countryThreeLetterCode: string;\n isOutbound?: boolean;\n isRelated: boolean;\n eventTimeUtc?: Date;\n queueItemId?: string;\n isProcessed: boolean;\n processedAtUtc?: Date;\n failedCount: number;\n retryAtUtc?: Date;\n errorMessage?: string;\n resultStatus?: FlightQueueResultStatus;\n operationName?: string;\n hasMcl: boolean;\n}\nexport class CrewApiFlightEventStatusItem extends BaseApiModelClass< ICrewApiFlightEventStatusItem > implements ICrewApiFlightEventStatusItem {\n triggerType: FlightTriggerType;\n airportRcd: string;\n countryThreeLetterCode: string;\n isOutbound?: boolean;\n isRelated: boolean;\n eventTimeUtc?: Date;\n queueItemId?: string;\n isProcessed: boolean;\n processedAtUtc?: Date;\n failedCount: number;\n retryAtUtc?: Date;\n errorMessage?: string;\n resultStatus?: FlightQueueResultStatus;\n operationName?: string;\n hasMcl: boolean;\n}\n\nexport interface ICrewApiHistoryItem {\n flightId: string;\n airlineRcd: string;\n departureUtc: Date;\n processedAtUtc?: Date;\n queueId: string;\n isOutbound?: boolean;\n isRelated?: boolean;\n flightNumber: number;\n originRcd: string;\n destinationRcd: string;\n countryThreeLetterCode?: string;\n operationName?: string;\n hasDuty: boolean;\n hasMcl: boolean;\n triggerType: FlightTriggerType;\n data: CrewApiHistoryPayload[];\n}\nexport class CrewApiHistoryItem extends BaseApiModelClass< ICrewApiHistoryItem > implements ICrewApiHistoryItem {\n flightId: string;\n airlineRcd: string;\n departureUtc: Date;\n processedAtUtc?: Date;\n queueId: string;\n isOutbound?: boolean;\n isRelated?: boolean;\n flightNumber: number;\n originRcd: string;\n destinationRcd: string;\n countryThreeLetterCode?: string;\n operationName?: string;\n hasDuty: boolean;\n hasMcl: boolean;\n triggerType: FlightTriggerType;\n data: CrewApiHistoryPayload[];\n}\n\nexport interface ICrewApiHistoryPayload {\n type: string;\n sentDate?: Date;\n eventTime: Date;\n status?: MailQueueStatus;\n errorMessage?: string;\n personsCount?: number;\n}\nexport class CrewApiHistoryPayload extends BaseApiModelClass< ICrewApiHistoryPayload > implements ICrewApiHistoryPayload {\n type: string;\n sentDate?: Date;\n eventTime: Date;\n status?: MailQueueStatus;\n errorMessage?: string;\n personsCount?: number;\n}\n\nexport interface ICrewApiMassRecipientConfiguration {\n jobTriggerRecipients: CrewApiRecipient[];\n countryRecipients: { [key: string]: CrewApiRecipient[]; };\n}\nexport class CrewApiMassRecipientConfiguration extends BaseApiModelClass< ICrewApiMassRecipientConfiguration > implements ICrewApiMassRecipientConfiguration {\n jobTriggerRecipients: CrewApiRecipient[];\n countryRecipients: { [key: string]: CrewApiRecipient[]; };\n}\n\nexport enum CrewApiMessageFormat {\n BatchUploadMru2023 = \"BatchUploadMru2023\",\n BatchUploadV2 = \"BatchUploadV2\",\n BatchUploadV4 = \"BatchUploadV4\",\n BatchUploadV5 = \"BatchUploadV5\",\n BatchUploadV8 = \"BatchUploadV8\",\n Paxlst = \"Paxlst\",\n Xls = \"Xls\",\n XlsxGbr2025 = \"XlsxGbr2025\",\n}\n\nexport interface ICrewApiMessageFormatModel {\n name: string;\n value: CrewApiMessageFormat;\n}\nexport class CrewApiMessageFormatModel extends BaseApiModelClass< ICrewApiMessageFormatModel > implements ICrewApiMessageFormatModel {\n name: string;\n value: CrewApiMessageFormat;\n}\n\nexport enum CrewApiPersonChangeAction {\n Create = \"Create\",\n CreateInFuture = \"CreateInFuture\",\n Delete = \"Delete\",\n IgnoredByFunction = \"IgnoredByFunction\",\n Recreate = \"Recreate\",\n Update = \"Update\",\n Validation = \"Validation\",\n}\n\nexport interface ICrewApiPersonMclState {\n code: string;\n isActive: boolean;\n isPlanningEnable: boolean;\n isPublished: boolean;\n snapshotFunctionGroupId?: string;\n actualFunctionGroupId?: string;\n lastFlyingFunctionGroupId?: string;\n validationErrors?: string[];\n items: CrewApiPersonMclStateItem[];\n}\nexport class CrewApiPersonMclState extends BaseApiModelClass< ICrewApiPersonMclState > implements ICrewApiPersonMclState {\n code: string;\n isActive: boolean;\n isPlanningEnable: boolean;\n isPublished: boolean;\n snapshotFunctionGroupId?: string;\n actualFunctionGroupId?: string;\n lastFlyingFunctionGroupId?: string;\n validationErrors?: string[];\n items: CrewApiPersonMclStateItem[];\n}\n\nexport interface ICrewApiPersonMclStateItem {\n processedAtUtc?: Date;\n action?: CrewApiPersonChangeAction;\n flightId?: string;\n airlineRcd?: string;\n queueId?: string;\n flightNumber?: number;\n isPending: boolean;\n}\nexport class CrewApiPersonMclStateItem extends BaseApiModelClass< ICrewApiPersonMclStateItem > implements ICrewApiPersonMclStateItem {\n processedAtUtc?: Date;\n action?: CrewApiPersonChangeAction;\n flightId?: string;\n airlineRcd?: string;\n queueId?: string;\n flightNumber?: number;\n isPending: boolean;\n}\n\nexport interface ICrewApiRecipient {\n email: string;\n timeFrom?: string;\n timeTo?: string;\n}\nexport class CrewApiRecipient extends BaseApiModelClass< ICrewApiRecipient > implements ICrewApiRecipient {\n email: string;\n timeFrom?: string;\n timeTo?: string;\n}\n\nexport interface ICrewApiSentEvent {\n id: string;\n flightId: string;\n airportRcd: string;\n countryThreeLetterCode: string;\n isProcessed: boolean;\n processedAtUtc?: Date;\n failedCount: number;\n retryAtUtc?: Date;\n errorMessage?: string;\n isExpired: boolean;\n triggerType: FlightTriggerType;\n eventTimeUtc: Date;\n resultStatus?: FlightQueueResultStatus;\n operationName?: string;\n hasMcl: boolean;\n}\nexport class CrewApiSentEvent extends BaseApiModelClass< ICrewApiSentEvent > implements ICrewApiSentEvent {\n id: string;\n flightId: string;\n airportRcd: string;\n countryThreeLetterCode: string;\n isProcessed: boolean;\n processedAtUtc?: Date;\n failedCount: number;\n retryAtUtc?: Date;\n errorMessage?: string;\n isExpired: boolean;\n triggerType: FlightTriggerType;\n eventTimeUtc: Date;\n resultStatus?: FlightQueueResultStatus;\n operationName?: string;\n hasMcl: boolean;\n}\n\nexport interface ICrewApiTriggerTypeModel {\n name: string;\n value: FlightTriggerType;\n}\nexport class CrewApiTriggerTypeModel extends BaseApiModelClass< ICrewApiTriggerTypeModel > implements ICrewApiTriggerTypeModel {\n name: string;\n value: FlightTriggerType;\n}\n\nexport interface ICrewDutyListReportFilter {\n rowLimit?: number;\n functionId: string;\n instructorFilter?: string[];\n contractFlagTypes?: ContractFlagType[];\n dateFrom: Date;\n dateTo: Date;\n personIds?: string[];\n dooType: DooType[];\n resetCache: boolean;\n key: string;\n}\nexport class CrewDutyListReportFilter extends BaseApiModelClass< ICrewDutyListReportFilter > implements ICrewDutyListReportFilter {\n rowLimit?: number;\n functionId: string;\n instructorFilter?: string[];\n contractFlagTypes?: ContractFlagType[];\n dateFrom: Date;\n dateTo: Date;\n personIds?: string[];\n dooType: DooType[];\n resetCache: boolean;\n readonly key: string;\n}\n\nexport interface ICrewDutyListReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId?: string;\n personCode: string;\n personName?: string;\n personUserName?: string;\n fleetType?: FleetType;\n licenseFleet?: string;\n personContract?: number;\n personFunction?: string;\n birthDate?: Date;\n entryDate: Date;\n exitDate?: Date;\n officePercentage?: number;\n date: Date;\n duty?: string;\n lastDuty?: string;\n dutyDetailed?: string;\n dooType: DooType;\n flightDuty?: string;\n routing?: string;\n isWish: boolean;\n isPriority: boolean;\n isFtl: boolean;\n isGav: boolean;\n isImportant: boolean;\n aircraftType?: string;\n posTo?: string;\n posBy?: string;\n isStandby: boolean;\n isWasStandby: boolean;\n standbyFromDate?: Date;\n standbyToDate?: Date;\n standbyType?: string;\n modifiedDate: Date;\n modifiedBy?: string;\n offMonthCount?: number;\n offYear?: number;\n bh1DSecs?: number;\n bh28DSecs?: number;\n bh1MSecs?: number;\n bh1YSecs?: number;\n bh12MSecs?: number;\n dh1DSecs?: number;\n dh7DSecs?: number;\n dh14DSecs?: number;\n dh28DSecs?: number;\n dh1MSecs?: number;\n dh1YSecs?: number;\n staDate?: Date;\n stdDate?: Date;\n fdp: number;\n dutyPeriodFromDate?: Date;\n dutyPeriodToDate?: Date;\n training?: string;\n checkerTrainee?: string;\n special?: string;\n simInstructorRequirements?: InstructorRequirements;\n simLocation?: string;\n simAirport?: string;\n checkInDateTimeUtc?: Date;\n checkOutDateTimeUtc?: Date;\n mfdp?: number;\n}\nexport class CrewDutyListReportModel extends BaseApiModelClass< ICrewDutyListReportModel > implements ICrewDutyListReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId?: string;\n personCode: string;\n personName?: string;\n personUserName?: string;\n fleetType?: FleetType;\n licenseFleet?: string;\n personContract?: number;\n personFunction?: string;\n birthDate?: Date;\n entryDate: Date;\n exitDate?: Date;\n officePercentage?: number;\n date: Date;\n duty?: string;\n lastDuty?: string;\n dutyDetailed?: string;\n dooType: DooType;\n flightDuty?: string;\n routing?: string;\n isWish: boolean;\n isPriority: boolean;\n isFtl: boolean;\n isGav: boolean;\n isImportant: boolean;\n aircraftType?: string;\n posTo?: string;\n posBy?: string;\n isStandby: boolean;\n isWasStandby: boolean;\n standbyFromDate?: Date;\n standbyToDate?: Date;\n standbyType?: string;\n modifiedDate: Date;\n modifiedBy?: string;\n offMonthCount?: number;\n offYear?: number;\n bh1DSecs?: number;\n bh28DSecs?: number;\n bh1MSecs?: number;\n bh1YSecs?: number;\n bh12MSecs?: number;\n dh1DSecs?: number;\n dh7DSecs?: number;\n dh14DSecs?: number;\n dh28DSecs?: number;\n dh1MSecs?: number;\n dh1YSecs?: number;\n staDate?: Date;\n stdDate?: Date;\n fdp: number;\n dutyPeriodFromDate?: Date;\n dutyPeriodToDate?: Date;\n training?: string;\n checkerTrainee?: string;\n special?: string;\n simInstructorRequirements?: InstructorRequirements;\n simLocation?: string;\n simAirport?: string;\n checkInDateTimeUtc?: Date;\n checkOutDateTimeUtc?: Date;\n mfdp?: number;\n}\n\nexport interface ICrewDutyListReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class CrewDutyListReportModelDataSourceLoadOptions extends BaseApiModelClass< ICrewDutyListReportModelDataSourceLoadOptions > implements ICrewDutyListReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport enum CrewFunctionType {\n Cabin = \"Cabin\",\n Cc = \"Cc\",\n Cockpit = \"Cockpit\",\n Ffx = \"Ffx\",\n Fo = \"Fo\",\n Fse = \"Fse\",\n Marshal = \"Marshal\",\n Pic = \"Pic\",\n Sc = \"Sc\",\n Tig = \"Tig\",\n}\n\nexport interface ICrewItem {\n activityRcd: string;\n personId?: string;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n functionName: string;\n}\nexport class CrewItem extends BaseApiModelClass< ICrewItem > implements ICrewItem {\n activityRcd: string;\n personId?: string;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n functionName: string;\n}\n\nexport enum CrewType {\n Cabin = \"Cabin\",\n Cockpit = \"Cockpit\",\n Full = \"Full\",\n}\n\nexport interface ICronValidationResult {\n isValid: boolean;\n validationErrorMessage?: string;\n expressionSummary?: string;\n nextInvalidTime?: Date;\n}\nexport class CronValidationResult extends BaseApiModelClass< ICronValidationResult > implements ICronValidationResult {\n isValid: boolean;\n validationErrorMessage?: string;\n expressionSummary?: string;\n nextInvalidTime?: Date;\n}\n\nexport interface ICustomPersonManagementDialogModel {\n id?: string;\n functionId: string;\n firstName?: string;\n lastName?: string;\n birthDate: Date;\n sex: Gender;\n passportNumber?: string;\n passportExpirationDate: Date;\n dateFrom: Date;\n dateTo?: Date;\n nationality?: string;\n}\nexport class CustomPersonManagementDialogModel extends BaseApiModelClass< ICustomPersonManagementDialogModel > implements ICustomPersonManagementDialogModel {\n id?: string;\n functionId: string;\n firstName?: string;\n lastName?: string;\n birthDate: Date;\n sex: Gender;\n passportNumber?: string;\n passportExpirationDate: Date;\n dateFrom: Date;\n dateTo?: Date;\n nationality?: string;\n}\n\nexport interface ICustomPersonManagementFilter {\n rowLimit?: number;\n functionId?: string;\n personId?: string;\n}\nexport class CustomPersonManagementFilter extends BaseApiModelClass< ICustomPersonManagementFilter > implements ICustomPersonManagementFilter {\n rowLimit?: number;\n functionId?: string;\n personId?: string;\n}\n\nexport interface ICustomPersonManagementModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n functionId: string;\n functionName: string;\n code: string;\n firstName?: string;\n lastName?: string;\n birthdate: Date;\n sex: Gender;\n passportNumber?: string;\n passportExpirationDate: Date;\n dateFrom: Date;\n dateTo?: Date;\n nationality?: string;\n email?: string;\n}\nexport class CustomPersonManagementModel extends BaseApiModelClass< ICustomPersonManagementModel > implements ICustomPersonManagementModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n functionId: string;\n functionName: string;\n code: string;\n firstName?: string;\n lastName?: string;\n birthdate: Date;\n sex: Gender;\n passportNumber?: string;\n passportExpirationDate: Date;\n dateFrom: Date;\n dateTo?: Date;\n nationality?: string;\n email?: string;\n}\n\nexport interface ICustomPersonManagementModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class CustomPersonManagementModelDataSourceLoadOptions extends BaseApiModelClass< ICustomPersonManagementModelDataSourceLoadOptions > implements ICustomPersonManagementModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport enum DailyDutyFiguresType {\n Full = \"Full\",\n Short = \"Short\",\n}\n\nexport interface IDateTimeModel {\n date?: Date;\n}\nexport class DateTimeModel extends BaseApiModelClass< IDateTimeModel > implements IDateTimeModel {\n date?: Date;\n}\n\nexport interface IDatesRange {\n dateFrom: Date;\n dateTo: Date;\n days: number;\n}\nexport class DatesRange extends BaseApiModelClass< IDatesRange > implements IDatesRange {\n dateFrom: Date;\n dateTo: Date;\n readonly days: number;\n}\n\nexport interface IDayCommentCreateDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n date: Date;\n}\nexport class DayCommentCreateDto extends BaseApiModelClass< IDayCommentCreateDto > implements IDayCommentCreateDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n date: Date;\n}\n\nexport interface IDayCommentReadDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n id: string;\n date: Date;\n category?: CommentCategory;\n modifiedAtDateUtc?: Date;\n modifiedBy: string;\n createdAtDateUtc?: Date;\n createdBy: string;\n}\nexport class DayCommentReadDto extends BaseApiModelClass< IDayCommentReadDto > implements IDayCommentReadDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n id: string;\n date: Date;\n category?: CommentCategory;\n modifiedAtDateUtc?: Date;\n modifiedBy: string;\n createdAtDateUtc?: Date;\n createdBy: string;\n}\n\nexport interface IDayCommentUpdateDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n id?: string;\n}\nexport class DayCommentUpdateDto extends BaseApiModelClass< IDayCommentUpdateDto > implements IDayCommentUpdateDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n id?: string;\n}\n\nexport interface IDaysManualCorrectionModel {\n id: string;\n days: number;\n reason?: string;\n yearId: string;\n}\nexport class DaysManualCorrectionModel extends BaseApiModelClass< IDaysManualCorrectionModel > implements IDaysManualCorrectionModel {\n id: string;\n days: number;\n reason?: string;\n yearId: string;\n}\n\nexport interface IDeadletterInfoModel {\n id: string;\n label: MessageLabel;\n messageBody: string;\n error: string;\n}\nexport class DeadletterInfoModel extends BaseApiModelClass< IDeadletterInfoModel > implements IDeadletterInfoModel {\n id: string;\n label: MessageLabel;\n messageBody: string;\n error: string;\n}\n\nexport interface IDevExtremeEmailViewerGridData {\n data?: DevExtremeEmailViewerItemData[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeEmailViewerGridData extends BaseApiModelClass< IDevExtremeEmailViewerGridData > implements IDevExtremeEmailViewerGridData {\n data?: DevExtremeEmailViewerItemData[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeEmailViewerItemData {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n createdDate: Date;\n sentDate?: Date;\n from: string;\n to: string;\n subject: string;\n bodyContentType?: string;\n cc?: string;\n bcc?: string;\n type?: MailQueueType;\n label?: string;\n status: MailQueueStatus;\n hasAttachments: boolean;\n errorMessage?: string;\n}\nexport class DevExtremeEmailViewerItemData extends BaseApiModelClass< IDevExtremeEmailViewerItemData > implements IDevExtremeEmailViewerItemData {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n createdDate: Date;\n sentDate?: Date;\n from: string;\n to: string;\n subject: string;\n bodyContentType?: string;\n cc?: string;\n bcc?: string;\n type?: MailQueueType;\n label?: string;\n status: MailQueueStatus;\n hasAttachments: boolean;\n errorMessage?: string;\n}\n\nexport interface IDevExtremeEmailViewerItemDataDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class DevExtremeEmailViewerItemDataDataSourceLoadOptions extends BaseApiModelClass< IDevExtremeEmailViewerItemDataDataSourceLoadOptions > implements IDevExtremeEmailViewerItemDataDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IDevExtremeResponseAircraftTypeRecencyCockpitReportModel {\n data?: AircraftTypeRecencyCockpitReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseAircraftTypeRecencyCockpitReportModel extends BaseApiModelClass< IDevExtremeResponseAircraftTypeRecencyCockpitReportModel > implements IDevExtremeResponseAircraftTypeRecencyCockpitReportModel {\n data?: AircraftTypeRecencyCockpitReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseAircraftTypeRecencyReportModel {\n data?: AircraftTypeRecencyReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseAircraftTypeRecencyReportModel extends BaseApiModelClass< IDevExtremeResponseAircraftTypeRecencyReportModel > implements IDevExtremeResponseAircraftTypeRecencyReportModel {\n data?: AircraftTypeRecencyReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseAirportRecencyReportModel {\n data?: AirportRecencyReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseAirportRecencyReportModel extends BaseApiModelClass< IDevExtremeResponseAirportRecencyReportModel > implements IDevExtremeResponseAirportRecencyReportModel {\n data?: AirportRecencyReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseAreaRouteCompetenceReportModel {\n data?: AreaRouteCompetenceReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseAreaRouteCompetenceReportModel extends BaseApiModelClass< IDevExtremeResponseAreaRouteCompetenceReportModel > implements IDevExtremeResponseAreaRouteCompetenceReportModel {\n data?: AreaRouteCompetenceReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseAreaRouteCompetenceRulesReportModel {\n data?: AreaRouteCompetenceRulesReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseAreaRouteCompetenceRulesReportModel extends BaseApiModelClass< IDevExtremeResponseAreaRouteCompetenceRulesReportModel > implements IDevExtremeResponseAreaRouteCompetenceRulesReportModel {\n data?: AreaRouteCompetenceRulesReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseCabinCrewAttestationModel {\n data?: CabinCrewAttestationModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseCabinCrewAttestationModel extends BaseApiModelClass< IDevExtremeResponseCabinCrewAttestationModel > implements IDevExtremeResponseCabinCrewAttestationModel {\n data?: CabinCrewAttestationModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseChangeLogModel {\n data?: ChangeLogReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseChangeLogModel extends BaseApiModelClass< IDevExtremeResponseChangeLogModel > implements IDevExtremeResponseChangeLogModel {\n data?: ChangeLogReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseCommentReportModel {\n data?: CommentReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseCommentReportModel extends BaseApiModelClass< IDevExtremeResponseCommentReportModel > implements IDevExtremeResponseCommentReportModel {\n data?: CommentReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseCourseManagementModel {\n data?: CourseManagementModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseCourseManagementModel extends BaseApiModelClass< IDevExtremeResponseCourseManagementModel > implements IDevExtremeResponseCourseManagementModel {\n data?: CourseManagementModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseCrewApiConfigReportModel {\n data?: CrewApiConfigReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseCrewApiConfigReportModel extends BaseApiModelClass< IDevExtremeResponseCrewApiConfigReportModel > implements IDevExtremeResponseCrewApiConfigReportModel {\n data?: CrewApiConfigReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseCrewDutyListReportModel {\n data?: CrewDutyListReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseCrewDutyListReportModel extends BaseApiModelClass< IDevExtremeResponseCrewDutyListReportModel > implements IDevExtremeResponseCrewDutyListReportModel {\n data?: CrewDutyListReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseCustomPersonManagementModel {\n data?: CustomPersonManagementModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseCustomPersonManagementModel extends BaseApiModelClass< IDevExtremeResponseCustomPersonManagementModel > implements IDevExtremeResponseCustomPersonManagementModel {\n data?: CustomPersonManagementModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseDooxReportModel {\n data?: DooxReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseDooxReportModel extends BaseApiModelClass< IDevExtremeResponseDooxReportModel > implements IDevExtremeResponseDooxReportModel {\n data?: DooxReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseDutyHomeStudyItem {\n data?: DutyHomeStudyItem[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseDutyHomeStudyItem extends BaseApiModelClass< IDevExtremeResponseDutyHomeStudyItem > implements IDevExtremeResponseDutyHomeStudyItem {\n data?: DutyHomeStudyItem[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseErrorReportModel {\n data?: ErrorReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseErrorReportModel extends BaseApiModelClass< IDevExtremeResponseErrorReportModel > implements IDevExtremeResponseErrorReportModel {\n data?: ErrorReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseExperienceReportModel {\n data?: ExperienceReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseExperienceReportModel extends BaseApiModelClass< IDevExtremeResponseExperienceReportModel > implements IDevExtremeResponseExperienceReportModel {\n data?: ExperienceReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseGenDecConfigReportModel {\n data?: GenDecConfigReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseGenDecConfigReportModel extends BaseApiModelClass< IDevExtremeResponseGenDecConfigReportModel > implements IDevExtremeResponseGenDecConfigReportModel {\n data?: GenDecConfigReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseInstructorFilterModel {\n data?: InstructorFilterDialogModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseInstructorFilterModel extends BaseApiModelClass< IDevExtremeResponseInstructorFilterModel > implements IDevExtremeResponseInstructorFilterModel {\n data?: InstructorFilterDialogModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseLicenseManagementModel {\n data?: LicenseManagementModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseLicenseManagementModel extends BaseApiModelClass< IDevExtremeResponseLicenseManagementModel > implements IDevExtremeResponseLicenseManagementModel {\n data?: LicenseManagementModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseLocationHotelBookingModel {\n data?: LocationHotelBookingModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseLocationHotelBookingModel extends BaseApiModelClass< IDevExtremeResponseLocationHotelBookingModel > implements IDevExtremeResponseLocationHotelBookingModel {\n data?: LocationHotelBookingModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseMedicalLicenseReportModel {\n data?: MedicalLicenseReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseMedicalLicenseReportModel extends BaseApiModelClass< IDevExtremeResponseMedicalLicenseReportModel > implements IDevExtremeResponseMedicalLicenseReportModel {\n data?: MedicalLicenseReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseOffDaysReportModel {\n data?: OffDaysReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseOffDaysReportModel extends BaseApiModelClass< IDevExtremeResponseOffDaysReportModel > implements IDevExtremeResponseOffDaysReportModel {\n data?: OffDaysReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponsePersonDosimetryReportModel {\n data?: PersonDosimetryReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponsePersonDosimetryReportModel extends BaseApiModelClass< IDevExtremeResponsePersonDosimetryReportModel > implements IDevExtremeResponsePersonDosimetryReportModel {\n data?: PersonDosimetryReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponsePersonHotelBookingDetailModel {\n data?: PersonHotelBookingDetailModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponsePersonHotelBookingDetailModel extends BaseApiModelClass< IDevExtremeResponsePersonHotelBookingDetailModel > implements IDevExtremeResponsePersonHotelBookingDetailModel {\n data?: PersonHotelBookingDetailModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponsePersonInfoModel {\n data?: PersonInfoModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponsePersonInfoModel extends BaseApiModelClass< IDevExtremeResponsePersonInfoModel > implements IDevExtremeResponsePersonInfoModel {\n data?: PersonInfoModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponsePersonVacDetailsModel {\n data?: PersonVacDetailsModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponsePersonVacDetailsModel extends BaseApiModelClass< IDevExtremeResponsePersonVacDetailsModel > implements IDevExtremeResponsePersonVacDetailsModel {\n data?: PersonVacDetailsModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponsePlannedTrainingReportModel {\n data?: PlannedTrainingReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponsePlannedTrainingReportModel extends BaseApiModelClass< IDevExtremeResponsePlannedTrainingReportModel > implements IDevExtremeResponsePlannedTrainingReportModel {\n data?: PlannedTrainingReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponsePreReservationLocationsModel {\n data?: PreReservationLocationsModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponsePreReservationLocationsModel extends BaseApiModelClass< IDevExtremeResponsePreReservationLocationsModel > implements IDevExtremeResponsePreReservationLocationsModel {\n data?: PreReservationLocationsModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseRecurrentTrainingReportModel {\n data?: RecurrentTrainingReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseRecurrentTrainingReportModel extends BaseApiModelClass< IDevExtremeResponseRecurrentTrainingReportModel > implements IDevExtremeResponseRecurrentTrainingReportModel {\n data?: RecurrentTrainingReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseReserveBlocksModel {\n data?: ReserveBlockDTO[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseReserveBlocksModel extends BaseApiModelClass< IDevExtremeResponseReserveBlocksModel > implements IDevExtremeResponseReserveBlocksModel {\n data?: ReserveBlockDTO[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseReserveRequestReportModel {\n data?: ReserveRequestReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseReserveRequestReportModel extends BaseApiModelClass< IDevExtremeResponseReserveRequestReportModel > implements IDevExtremeResponseReserveRequestReportModel {\n data?: ReserveRequestReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseRosterImportDetailsModel {\n data?: RosterImportErrorMessageModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseRosterImportDetailsModel extends BaseApiModelClass< IDevExtremeResponseRosterImportDetailsModel > implements IDevExtremeResponseRosterImportDetailsModel {\n data?: RosterImportErrorMessageModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseRosterImportModel {\n data?: RosterImportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseRosterImportModel extends BaseApiModelClass< IDevExtremeResponseRosterImportModel > implements IDevExtremeResponseRosterImportModel {\n data?: RosterImportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseSectorsReportModel {\n data?: SectorsReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseSectorsReportModel extends BaseApiModelClass< IDevExtremeResponseSectorsReportModel > implements IDevExtremeResponseSectorsReportModel {\n data?: SectorsReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseSeniorityReportModel {\n data?: SeniorityReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseSeniorityReportModel extends BaseApiModelClass< IDevExtremeResponseSeniorityReportModel > implements IDevExtremeResponseSeniorityReportModel {\n data?: SeniorityReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseSimulationReportModel {\n data?: SimulationReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseSimulationReportModel extends BaseApiModelClass< IDevExtremeResponseSimulationReportModel > implements IDevExtremeResponseSimulationReportModel {\n data?: SimulationReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseSimulatorLicenseStatusReportModel {\n data?: SimulatorLicenseStatusReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseSimulatorLicenseStatusReportModel extends BaseApiModelClass< IDevExtremeResponseSimulatorLicenseStatusReportModel > implements IDevExtremeResponseSimulatorLicenseStatusReportModel {\n data?: SimulatorLicenseStatusReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseStandbyReportModel {\n data?: StandbyReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseStandbyReportModel extends BaseApiModelClass< IDevExtremeResponseStandbyReportModel > implements IDevExtremeResponseStandbyReportModel {\n data?: StandbyReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseTradeUnionExportModel {\n data?: TradeUnionExportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseTradeUnionExportModel extends BaseApiModelClass< IDevExtremeResponseTradeUnionExportModel > implements IDevExtremeResponseTradeUnionExportModel {\n data?: TradeUnionExportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseTzvYearOverviewModel {\n data?: TzvYearOverviewModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseTzvYearOverviewModel extends BaseApiModelClass< IDevExtremeResponseTzvYearOverviewModel > implements IDevExtremeResponseTzvYearOverviewModel {\n data?: TzvYearOverviewModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseVacRequestReportModel {\n data?: VacRequestReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseVacRequestReportModel extends BaseApiModelClass< IDevExtremeResponseVacRequestReportModel > implements IDevExtremeResponseVacRequestReportModel {\n data?: VacRequestReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport interface IDevExtremeResponseXStarMonitoringReportModel {\n data?: XStarMonitoringReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\nexport class DevExtremeResponseXStarMonitoringReportModel extends BaseApiModelClass< IDevExtremeResponseXStarMonitoringReportModel > implements IDevExtremeResponseXStarMonitoringReportModel {\n data?: XStarMonitoringReportModel[];\n rowNumber: number;\n queryHasInvalidEntries: boolean;\n totalCount: number;\n summary?: any[];\n groupCount: number;\n}\n\nexport enum DirectionType {\n DeadletterToInbox = \"DeadletterToInbox\",\n In = \"In\",\n Out = \"Out\",\n}\n\nexport interface IDisruptiveScheduleModel {\n isDisruptive: boolean;\n isEarlyStart: boolean;\n isLateFinish: boolean;\n isNightDuty: boolean;\n}\nexport class DisruptiveScheduleModel extends BaseApiModelClass< IDisruptiveScheduleModel > implements IDisruptiveScheduleModel {\n isDisruptive: boolean;\n isEarlyStart: boolean;\n isLateFinish: boolean;\n isNightDuty: boolean;\n}\n\nexport enum DooType {\n DOOF = \"DOOF\",\n DOOO = \"DOOO\",\n DOOT = \"DOOT\",\n DOOV = \"DOOV\",\n None = \"None\",\n}\n\nexport interface IDooxReportFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n functionId?: string;\n}\nexport class DooxReportFilter extends BaseApiModelClass< IDooxReportFilter > implements IDooxReportFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n functionId?: string;\n}\n\nexport interface IDooxReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode: string;\n personName?: string;\n personRank: number;\n date: Date;\n dooxType: DooType;\n personFunction?: string;\n comment?: string;\n}\nexport class DooxReportModel extends BaseApiModelClass< IDooxReportModel > implements IDooxReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode: string;\n personName?: string;\n personRank: number;\n date: Date;\n dooxType: DooType;\n personFunction?: string;\n comment?: string;\n}\n\nexport interface IDooxReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class DooxReportModelDataSourceLoadOptions extends BaseApiModelClass< IDooxReportModelDataSourceLoadOptions > implements IDooxReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IDutiesBlockModel {\n personId: string;\n fromDate: Date;\n toDate: Date;\n daysCount: number;\n activity: string;\n vacationType?: VacationType;\n hasVacRequestId: boolean;\n monthNumber: number;\n}\nexport class DutiesBlockModel extends BaseApiModelClass< IDutiesBlockModel > implements IDutiesBlockModel {\n personId: string;\n fromDate: Date;\n toDate: Date;\n daysCount: number;\n activity: string;\n vacationType?: VacationType;\n hasVacRequestId: boolean;\n readonly monthNumber: number;\n}\n\nexport interface IDutiesBlocksGroupedByMonthModel {\n blocks: DutiesBlockModel[];\n monthValue: number;\n totalDays: number;\n monthTitle: string;\n}\nexport class DutiesBlocksGroupedByMonthModel extends BaseApiModelClass< IDutiesBlocksGroupedByMonthModel > implements IDutiesBlocksGroupedByMonthModel {\n blocks: DutiesBlockModel[];\n monthValue: number;\n totalDays: number;\n readonly monthTitle: string;\n}\n\nexport interface IDutyBlockHoursModel {\n dutyBlockHours28Days: number;\n dutyBlockHours28DaysLimit: number;\n dutyBlockHours12Month: number;\n dutyBlockHours12MonthLimit: number;\n dutyBlockHours1Year: number;\n dutyBlockHours1YearLimit: number;\n blockHours1Day: number;\n blockHoursTotalSec: number;\n}\nexport class DutyBlockHoursModel extends BaseApiModelClass< IDutyBlockHoursModel > implements IDutyBlockHoursModel {\n dutyBlockHours28Days: number;\n dutyBlockHours28DaysLimit: number;\n dutyBlockHours12Month: number;\n dutyBlockHours12MonthLimit: number;\n dutyBlockHours1Year: number;\n dutyBlockHours1YearLimit: number;\n blockHours1Day: number;\n blockHoursTotalSec: number;\n}\n\nexport interface IDutyCellModel {\n personId: string;\n date: Date;\n}\nexport class DutyCellModel extends BaseApiModelClass< IDutyCellModel > implements IDutyCellModel {\n personId: string;\n date: Date;\n}\n\nexport interface IDutyChangeRegion {\n personId: string;\n dateFrom: Date;\n dateTo: Date;\n days: Date[];\n hasDutyChanges: boolean;\n}\nexport class DutyChangeRegion extends BaseApiModelClass< IDutyChangeRegion > implements IDutyChangeRegion {\n personId: string;\n dateFrom: Date;\n dateTo: Date;\n days: Date[];\n hasDutyChanges: boolean;\n}\n\nexport interface IDutyChangeRegions {\n regions: DutyChangeRegion[];\n daysCount: number;\n}\nexport class DutyChangeRegions extends BaseApiModelClass< IDutyChangeRegions > implements IDutyChangeRegions {\n readonly regions: DutyChangeRegion[];\n readonly daysCount: number;\n}\n\nexport interface IDutyCheckerTraineeDetailsModel {\n id: string;\n date: Date;\n flightId?: string;\n flightNumber?: number;\n flightIsLongHaul: boolean;\n checkerPersonId?: string;\n checkerPersonCodeName?: string;\n checkerPersonDisplayName?: string;\n traineePersonId?: string;\n traineePersonCodeName?: string;\n traineePersonDisplayName?: string;\n traineePersonFunctionName?: string;\n function: CheckerTraineeFunction;\n instructorRequirements?: InstructorRequirements;\n functionDisplayName: string;\n trainingNumber?: number;\n flightAircraftTypeGroup?: string;\n activityRcd: string;\n}\nexport class DutyCheckerTraineeDetailsModel extends BaseApiModelClass< IDutyCheckerTraineeDetailsModel > implements IDutyCheckerTraineeDetailsModel {\n id: string;\n date: Date;\n flightId?: string;\n flightNumber?: number;\n flightIsLongHaul: boolean;\n checkerPersonId?: string;\n checkerPersonCodeName?: string;\n checkerPersonDisplayName?: string;\n traineePersonId?: string;\n traineePersonCodeName?: string;\n traineePersonDisplayName?: string;\n traineePersonFunctionName?: string;\n function: CheckerTraineeFunction;\n instructorRequirements?: InstructorRequirements;\n functionDisplayName: string;\n trainingNumber?: number;\n flightAircraftTypeGroup?: string;\n activityRcd: string;\n}\n\nexport interface IDutyCheckerTraineeModel {\n checkerPersonId?: string;\n traineePersonId?: string;\n flightIds?: string[];\n rotationId?: string;\n function: CheckerTraineeFunction;\n instructorRequirements?: InstructorRequirements;\n date: Date;\n}\nexport class DutyCheckerTraineeModel extends BaseApiModelClass< IDutyCheckerTraineeModel > implements IDutyCheckerTraineeModel {\n checkerPersonId?: string;\n traineePersonId?: string;\n flightIds?: string[];\n rotationId?: string;\n function: CheckerTraineeFunction;\n instructorRequirements?: InstructorRequirements;\n date: Date;\n}\n\nexport interface IDutyCheckerTraineeSetResult {\n operationId: string;\n relationships: DutyCheckerTraineeDetailsModel[];\n affectedPersonIds?: string[];\n}\nexport class DutyCheckerTraineeSetResult extends BaseApiModelClass< IDutyCheckerTraineeSetResult > implements IDutyCheckerTraineeSetResult {\n operationId: string;\n relationships: DutyCheckerTraineeDetailsModel[];\n affectedPersonIds?: string[];\n}\n\nexport interface IDutyCheckerTraineeUpdateItem {\n id: string;\n checkerPersonId?: string;\n traineePersonId?: string;\n function: CheckerTraineeFunction;\n instructorRequirements?: InstructorRequirements;\n}\nexport class DutyCheckerTraineeUpdateItem extends BaseApiModelClass< IDutyCheckerTraineeUpdateItem > implements IDutyCheckerTraineeUpdateItem {\n id: string;\n checkerPersonId?: string;\n traineePersonId?: string;\n function: CheckerTraineeFunction;\n instructorRequirements?: InstructorRequirements;\n}\n\nexport interface IDutyCheckerTraineeUpdateModel {\n relationships?: DutyCheckerTraineeUpdateItem[];\n rotationId?: string;\n}\nexport class DutyCheckerTraineeUpdateModel extends BaseApiModelClass< IDutyCheckerTraineeUpdateModel > implements IDutyCheckerTraineeUpdateModel {\n relationships?: DutyCheckerTraineeUpdateItem[];\n rotationId?: string;\n}\n\nexport interface IDutyCommentDto {\n personId: string;\n date: Date;\n text: string;\n}\nexport class DutyCommentDto extends BaseApiModelClass< IDutyCommentDto > implements IDutyCommentDto {\n personId: string;\n date: Date;\n text: string;\n}\n\nexport interface IDutyCreateModel {\n overrideAllowed: boolean;\n comment?: string;\n commentIdsToDelete: string[];\n swapType?: PersonDutySwapType;\n ltoRequestComment?: string;\n stoRequestComment?: string;\n flightRequestComment?: string;\n doNotRevertPoints: boolean;\n title?: string;\n date?: Date;\n dateTimeFromLt?: Date;\n dateTimeToLt?: Date;\n dutyTimeSec?: number;\n dateTimeFromDiffToLt?: string;\n dateTimeToDiffToLt?: string;\n blockTimeSec: number;\n activityCodeName: string;\n selectedCells: DutyCellModel[];\n rotationIds?: string[];\n flightIds?: string[];\n keepFlightIds?: string[];\n doNotAllowToOverride: boolean;\n resOffAllowed: boolean;\n simCourseMultiPositionOverride: boolean;\n suppressCommentsWarning: boolean;\n keepDutyCommentForSameDuty?: boolean;\n isControlPressed: boolean;\n isShiftPressed: boolean;\n forceSetFlags: boolean;\n keepOriginalAuthor: boolean;\n needToDelete: boolean;\n activityType?: VacationType;\n requestId?: string;\n isFullDayOverride: boolean;\n keepExistingDuties: boolean;\n posDutyData?: PosDutyData;\n simDutyData?: SimDutyData;\n swapDutyData?: SwapDutyData;\n copyDutyData?: CopyDutyData;\n requestDutyData?: RequestDutyData;\n allowedToOverrideActivities?: string[];\n preventUpdateForExistingActivity?: boolean;\n introFlightFlag: boolean;\n observerFlightFlag: boolean;\n}\nexport class DutyCreateModel extends BaseApiModelClass< IDutyCreateModel > implements IDutyCreateModel {\n overrideAllowed: boolean;\n comment?: string;\n commentIdsToDelete: string[];\n swapType?: PersonDutySwapType;\n ltoRequestComment?: string;\n stoRequestComment?: string;\n flightRequestComment?: string;\n doNotRevertPoints: boolean;\n title?: string;\n date?: Date;\n dateTimeFromLt?: Date;\n dateTimeToLt?: Date;\n dutyTimeSec?: number;\n dateTimeFromDiffToLt?: string;\n dateTimeToDiffToLt?: string;\n blockTimeSec: number;\n activityCodeName: string;\n selectedCells: DutyCellModel[];\n rotationIds?: string[];\n flightIds?: string[];\n keepFlightIds?: string[];\n doNotAllowToOverride: boolean;\n resOffAllowed: boolean;\n simCourseMultiPositionOverride: boolean;\n suppressCommentsWarning: boolean;\n keepDutyCommentForSameDuty?: boolean;\n isControlPressed: boolean;\n isShiftPressed: boolean;\n forceSetFlags: boolean;\n keepOriginalAuthor: boolean;\n needToDelete: boolean;\n activityType?: VacationType;\n requestId?: string;\n isFullDayOverride: boolean;\n keepExistingDuties: boolean;\n posDutyData?: PosDutyData;\n simDutyData?: SimDutyData;\n swapDutyData?: SwapDutyData;\n copyDutyData?: CopyDutyData;\n requestDutyData?: RequestDutyData;\n allowedToOverrideActivities?: string[];\n preventUpdateForExistingActivity?: boolean;\n introFlightFlag: boolean;\n observerFlightFlag: boolean;\n}\n\nexport interface IDutyDeleteResult {\n operationId: string;\n}\nexport class DutyDeleteResult extends BaseApiModelClass< IDutyDeleteResult > implements IDutyDeleteResult {\n operationId: string;\n}\n\nexport interface IDutyDescriptionDto {\n id: string;\n date: Date;\n codeName: string;\n briefInfo?: string;\n customTitle?: string;\n flightId?: string;\n title?: string;\n dateTimeFromUtc?: Date;\n dateTimeFromDiffToLt?: string;\n dateTimeToUtc?: Date;\n dateTimeToDiffToLt?: string;\n positioningId?: string;\n vacationType?: string;\n sim?: SimulationBriefInfo;\n activityType: ActivityType;\n flag?: DutyFlag;\n}\nexport class DutyDescriptionDto extends BaseApiModelClass< IDutyDescriptionDto > implements IDutyDescriptionDto {\n id: string;\n date: Date;\n codeName: string;\n briefInfo?: string;\n customTitle?: string;\n flightId?: string;\n title?: string;\n dateTimeFromUtc?: Date;\n dateTimeFromDiffToLt?: string;\n dateTimeToUtc?: Date;\n dateTimeToDiffToLt?: string;\n positioningId?: string;\n vacationType?: string;\n sim?: SimulationBriefInfo;\n activityType: ActivityType;\n flag?: DutyFlag;\n}\n\nexport interface IDutyFilter {\n date: Date;\n activityIds: string[];\n flightIds: string[];\n flags: string[];\n errorTypes: MonthlyType[];\n}\nexport class DutyFilter extends BaseApiModelClass< IDutyFilter > implements IDutyFilter {\n date: Date;\n activityIds: string[];\n flightIds: string[];\n flags: string[];\n errorTypes: MonthlyType[];\n}\n\nexport interface IDutyFilterItem {\n id: string;\n title: string;\n isFlight: boolean;\n isLongHaul: boolean;\n isError: boolean;\n isFlag: boolean;\n}\nexport class DutyFilterItem extends BaseApiModelClass< IDutyFilterItem > implements IDutyFilterItem {\n id: string;\n title: string;\n isFlight: boolean;\n isLongHaul: boolean;\n isError: boolean;\n isFlag: boolean;\n}\n\nexport enum DutyFlag {\n FlightShiftedNextDay = \"FlightShiftedNextDay\",\n FlightShiftedPrevDay = \"FlightShiftedPrevDay\",\n IntroFlight = \"IntroFlight\",\n IsLongHaulRelated = \"IsLongHaulRelated\",\n NoBreak = \"NoBreak\",\n None = \"None\",\n ObserverFlight = \"ObserverFlight\",\n Pikett = \"Pikett\",\n}\n\nexport interface IDutyFlagItem {\n id: string;\n activityCodeName: string;\n}\nexport class DutyFlagItem extends BaseApiModelClass< IDutyFlagItem > implements IDutyFlagItem {\n id: string;\n activityCodeName: string;\n}\n\nexport interface IDutyHistoryFilter {\n rowLimit?: number;\n personId: string;\n dateFrom: Date;\n dateTo: Date;\n}\nexport class DutyHistoryFilter extends BaseApiModelClass< IDutyHistoryFilter > implements IDutyHistoryFilter {\n rowLimit?: number;\n personId: string;\n dateFrom: Date;\n dateTo: Date;\n}\n\nexport interface IDutyHistoryModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n modifiedAtDate: Date;\n modifiedBy: string;\n newTitle: string;\n operationName: string;\n rotationKey: string;\n operationId: string;\n isChangeLogEnabled: boolean;\n isSystem: boolean;\n personDutySwapType?: PersonDutySwapType;\n}\nexport class DutyHistoryModel extends BaseApiModelClass< IDutyHistoryModel > implements IDutyHistoryModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n modifiedAtDate: Date;\n modifiedBy: string;\n newTitle: string;\n operationName: string;\n rotationKey: string;\n operationId: string;\n isChangeLogEnabled: boolean;\n isSystem: boolean;\n personDutySwapType?: PersonDutySwapType;\n}\n\nexport interface IDutyHistoryModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class DutyHistoryModelDataSourceLoadOptions extends BaseApiModelClass< IDutyHistoryModelDataSourceLoadOptions > implements IDutyHistoryModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IDutyHomeStudyItem {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n dutyId: string;\n personId: string;\n personCode: string;\n personName?: string;\n personFunction?: string;\n personContract?: string;\n title?: string;\n date: Date;\n dutyTimeSec: number;\n duration: string;\n createDate: Date;\n createdBy: string;\n}\nexport class DutyHomeStudyItem extends BaseApiModelClass< IDutyHomeStudyItem > implements IDutyHomeStudyItem {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n dutyId: string;\n personId: string;\n personCode: string;\n personName?: string;\n personFunction?: string;\n personContract?: string;\n title?: string;\n date: Date;\n dutyTimeSec: number;\n duration: string;\n createDate: Date;\n createdBy: string;\n}\n\nexport interface IDutyHoursModel {\n dutyHours7Days: number;\n dutyHours7DaysLimit: number;\n dutyHours14Days: number;\n dutyHours14DaysLimit: number;\n dutyHours28Days: number;\n dutyHours28DaysLimit: number;\n dutyHours12Month: number;\n dutyHours12MonthLimit: number;\n dutyHours1Day: number;\n}\nexport class DutyHoursModel extends BaseApiModelClass< IDutyHoursModel > implements IDutyHoursModel {\n dutyHours7Days: number;\n dutyHours7DaysLimit: number;\n dutyHours14Days: number;\n dutyHours14DaysLimit: number;\n dutyHours28Days: number;\n dutyHours28DaysLimit: number;\n dutyHours12Month: number;\n dutyHours12MonthLimit: number;\n dutyHours1Day: number;\n}\n\nexport interface IDutyItem {\n personId: string;\n date: Date;\n activities: DutySubItem[];\n flagDutyList?: DutyFlagItem[];\n isValid: boolean;\n hasValidationErrors: boolean;\n hasTitle: boolean;\n hasFtlErrors: boolean;\n hasGavErrors: boolean;\n hasEasaErrors: boolean;\n hasAgreementErrors: boolean;\n hasOtherErrors: boolean;\n hasGroundWarnings: boolean;\n hasGroundErrors: boolean;\n isNotCountableOff: boolean;\n customTitle?: string;\n planningNote?: string;\n isAfterNightDuty: boolean;\n isBeforeNightDuty: boolean;\n isAfterLongTermEvening: boolean;\n isGav: boolean;\n isFtl: boolean;\n isWish: boolean;\n isPriority: boolean;\n isImportant: boolean;\n isFlex: boolean;\n isParty: boolean;\n checkinDateTimeUtc?: Date;\n checkoutDateTimeUtc?: Date;\n hasCustomCheckin: boolean;\n hasCustomCheckout: boolean;\n hasNoContract: boolean;\n hasAugmentedFlight: boolean;\n hasExtendedFlight: boolean;\n hasXStarFlight: boolean;\n hasLongHaulFlight: boolean;\n hasComment: boolean;\n shadowDutyType?: ShadowDutyType;\n shadowOffType?: ShadowOffType;\n isShadowOffOptional?: boolean;\n haveCapacity?: boolean;\n capacityTotal?: number;\n capacityRequested?: number;\n capacityUsed?: number;\n capacityLevel?: CapacityLevel;\n capacityLevelCockpit?: CapacityLevel;\n isFormerStandbyOrReserve: boolean;\n isChecker: boolean;\n isTrainee: boolean;\n isRsvHidden: boolean;\n isCrewHidden: boolean;\n requestedItemStatus?: string;\n requestedItemPriority?: string;\n requestedItemType?: string;\n requestedItemVacationType?: string;\n requestedItemIsAlternative: boolean;\n requestedItemColorizeType?: string;\n requestedItemVacationTypesCount: number;\n requestedFlightNumber?: string;\n requestedActivity?: string;\n hasCustomLanding: boolean;\n hasCustomTakeoff: boolean;\n dooType: DooType;\n fdpAmendmentType?: FdpAmendmentType;\n requestId?: string;\n timestampDateTimeUtc: Date;\n isPlanningPeriodHidden?: boolean;\n hasNotFullSuppressed?: boolean;\n}\nexport class DutyItem extends BaseApiModelClass< IDutyItem > implements IDutyItem {\n personId: string;\n date: Date;\n activities: DutySubItem[];\n flagDutyList?: DutyFlagItem[];\n readonly isValid: boolean;\n hasValidationErrors: boolean;\n hasTitle: boolean;\n hasFtlErrors: boolean;\n hasGavErrors: boolean;\n hasEasaErrors: boolean;\n hasAgreementErrors: boolean;\n hasOtherErrors: boolean;\n hasGroundWarnings: boolean;\n hasGroundErrors: boolean;\n isNotCountableOff: boolean;\n customTitle?: string;\n planningNote?: string;\n isAfterNightDuty: boolean;\n isBeforeNightDuty: boolean;\n isAfterLongTermEvening: boolean;\n isGav: boolean;\n isFtl: boolean;\n isWish: boolean;\n isPriority: boolean;\n isImportant: boolean;\n isFlex: boolean;\n isParty: boolean;\n checkinDateTimeUtc?: Date;\n checkoutDateTimeUtc?: Date;\n hasCustomCheckin: boolean;\n hasCustomCheckout: boolean;\n hasNoContract: boolean;\n hasAugmentedFlight: boolean;\n hasExtendedFlight: boolean;\n hasXStarFlight: boolean;\n hasLongHaulFlight: boolean;\n hasComment: boolean;\n shadowDutyType?: ShadowDutyType;\n shadowOffType?: ShadowOffType;\n isShadowOffOptional?: boolean;\n haveCapacity?: boolean;\n capacityTotal?: number;\n capacityRequested?: number;\n capacityUsed?: number;\n capacityLevel?: CapacityLevel;\n capacityLevelCockpit?: CapacityLevel;\n isFormerStandbyOrReserve: boolean;\n isChecker: boolean;\n isTrainee: boolean;\n isRsvHidden: boolean;\n isCrewHidden: boolean;\n requestedItemStatus?: string;\n requestedItemPriority?: string;\n requestedItemType?: string;\n requestedItemVacationType?: string;\n requestedItemIsAlternative: boolean;\n requestedItemColorizeType?: string;\n requestedItemVacationTypesCount: number;\n requestedFlightNumber?: string;\n requestedActivity?: string;\n hasCustomLanding: boolean;\n hasCustomTakeoff: boolean;\n dooType: DooType;\n fdpAmendmentType?: FdpAmendmentType;\n requestId?: string;\n timestampDateTimeUtc: Date;\n isPlanningPeriodHidden?: boolean;\n hasNotFullSuppressed?: boolean;\n}\n\nexport enum DutyLogType {\n Added = \"Added\",\n Modified = \"Modified\",\n Removed = \"Removed\",\n}\n\nexport interface IDutyPartItem {\n id: string;\n periodFromLt: Date;\n periodToLt: Date;\n message?: string;\n noBreak: boolean;\n pikett: boolean;\n}\nexport class DutyPartItem extends BaseApiModelClass< IDutyPartItem > implements IDutyPartItem {\n id: string;\n periodFromLt: Date;\n periodToLt: Date;\n message?: string;\n noBreak: boolean;\n pikett: boolean;\n}\n\nexport interface IDutyPartUpdateRequest {\n items?: DutyPartItem[];\n}\nexport class DutyPartUpdateRequest extends BaseApiModelClass< IDutyPartUpdateRequest > implements IDutyPartUpdateRequest {\n items?: DutyPartItem[];\n}\n\nexport interface IDutyPersonActivity {\n date: Date;\n personId: string;\n personCode: string;\n flightId?: string;\n activityCodeName?: string;\n activityId: string;\n title?: string;\n vacationType?: VacationType;\n fdpExtensionType: FdpExtensionType;\n personFunction?: string;\n}\nexport class DutyPersonActivity extends BaseApiModelClass< IDutyPersonActivity > implements IDutyPersonActivity {\n date: Date;\n personId: string;\n personCode: string;\n flightId?: string;\n activityCodeName?: string;\n activityId: string;\n title?: string;\n vacationType?: VacationType;\n fdpExtensionType: FdpExtensionType;\n personFunction?: string;\n}\n\nexport interface IDutyPredefinedEditModel {\n functionId?: string;\n functionGroupId?: string;\n type: string;\n label: string;\n title: string;\n sortOrder: number;\n fromTimeSec: number;\n toTimeSec: number;\n dutyTimeSec: number;\n}\nexport class DutyPredefinedEditModel extends BaseApiModelClass< IDutyPredefinedEditModel > implements IDutyPredefinedEditModel {\n functionId?: string;\n functionGroupId?: string;\n type: string;\n label: string;\n title: string;\n sortOrder: number;\n fromTimeSec: number;\n toTimeSec: number;\n dutyTimeSec: number;\n}\n\nexport interface IDutyPredefinedModel {\n functionId?: string;\n functionGroupId?: string;\n type: string;\n label: string;\n title: string;\n sortOrder: number;\n fromTimeSec: number;\n toTimeSec: number;\n dutyTimeSec: number;\n id: string;\n}\nexport class DutyPredefinedModel extends BaseApiModelClass< IDutyPredefinedModel > implements IDutyPredefinedModel {\n functionId?: string;\n functionGroupId?: string;\n type: string;\n label: string;\n title: string;\n sortOrder: number;\n fromTimeSec: number;\n toTimeSec: number;\n dutyTimeSec: number;\n id: string;\n}\n\nexport interface IDutyRemoveModel {\n ids?: string[];\n}\nexport class DutyRemoveModel extends BaseApiModelClass< IDutyRemoveModel > implements IDutyRemoveModel {\n ids?: string[];\n}\n\nexport interface IDutyRestTimeDeltaErrorModel {\n error: string;\n errorType: string;\n}\nexport class DutyRestTimeDeltaErrorModel extends BaseApiModelClass< IDutyRestTimeDeltaErrorModel > implements IDutyRestTimeDeltaErrorModel {\n error: string;\n errorType: string;\n}\n\nexport interface IDutyRestTimeDeltaItemModel {\n key: string;\n flightIds: string[];\n deltaFromSecs?: number;\n deltaToSecs?: number;\n errors: DutyRestTimeDeltaErrorModel[];\n}\nexport class DutyRestTimeDeltaItemModel extends BaseApiModelClass< IDutyRestTimeDeltaItemModel > implements IDutyRestTimeDeltaItemModel {\n key: string;\n flightIds: string[];\n deltaFromSecs?: number;\n deltaToSecs?: number;\n errors: DutyRestTimeDeltaErrorModel[];\n}\n\nexport interface IDutyRestTimeDeltaModel {\n items: DutyRestTimeDeltaItemModel[];\n parallelCalculations: number;\n}\nexport class DutyRestTimeDeltaModel extends BaseApiModelClass< IDutyRestTimeDeltaModel > implements IDutyRestTimeDeltaModel {\n items: DutyRestTimeDeltaItemModel[];\n parallelCalculations: number;\n}\n\nexport interface IDutyRestTimeDeltaRequestItemModel {\n flightIds: string[];\n key: string;\n}\nexport class DutyRestTimeDeltaRequestItemModel extends BaseApiModelClass< IDutyRestTimeDeltaRequestItemModel > implements IDutyRestTimeDeltaRequestItemModel {\n flightIds: string[];\n key: string;\n}\n\nexport interface IDutyRestTimeDeltaRequestModel {\n items: DutyRestTimeDeltaRequestItemModel[];\n personId: string;\n isCockpit: boolean;\n date: Date;\n packSize?: number;\n}\nexport class DutyRestTimeDeltaRequestModel extends BaseApiModelClass< IDutyRestTimeDeltaRequestModel > implements IDutyRestTimeDeltaRequestModel {\n items: DutyRestTimeDeltaRequestItemModel[];\n personId: string;\n isCockpit: boolean;\n date: Date;\n packSize?: number;\n}\n\nexport interface IDutySubItem {\n id: string;\n title?: string;\n activityCodeName: string;\n flightId?: string;\n nextAircraftFlightId?: string;\n flightNumber?: number;\n rotationKey?: string;\n dateStartUtc?: Date;\n dateEndUtc?: Date;\n estimatedStartUtc?: Date;\n estimatedEndUtc?: Date;\n dutyTimeSec: number;\n blockTimeSec: number;\n simulationId?: string;\n positioningId?: string;\n positioningFlightId?: string;\n vacationType?: string;\n isIntroFlight: boolean;\n isObserverFlight: boolean;\n}\nexport class DutySubItem extends BaseApiModelClass< IDutySubItem > implements IDutySubItem {\n id: string;\n title?: string;\n activityCodeName: string;\n flightId?: string;\n nextAircraftFlightId?: string;\n flightNumber?: number;\n rotationKey?: string;\n dateStartUtc?: Date;\n dateEndUtc?: Date;\n estimatedStartUtc?: Date;\n estimatedEndUtc?: Date;\n dutyTimeSec: number;\n blockTimeSec: number;\n simulationId?: string;\n positioningId?: string;\n positioningFlightId?: string;\n vacationType?: string;\n isIntroFlight: boolean;\n isObserverFlight: boolean;\n}\n\nexport interface IDutyTitle {\n id: string;\n title: string;\n}\nexport class DutyTitle extends BaseApiModelClass< IDutyTitle > implements IDutyTitle {\n id: string;\n title: string;\n}\n\nexport interface IDutyTraineeCheckerPopupInfoModel {\n flightNumbers: string;\n personCode: string;\n functionDescription: string;\n instructorRequirements: string;\n}\nexport class DutyTraineeCheckerPopupInfoModel extends BaseApiModelClass< IDutyTraineeCheckerPopupInfoModel > implements IDutyTraineeCheckerPopupInfoModel {\n flightNumbers: string;\n personCode: string;\n functionDescription: string;\n instructorRequirements: string;\n}\n\nexport interface IDutyUpdateResult {\n duties: DutyItem[];\n operationId?: string;\n errorMessage?: string;\n}\nexport class DutyUpdateResult extends BaseApiModelClass< IDutyUpdateResult > implements IDutyUpdateResult {\n duties: DutyItem[];\n operationId?: string;\n errorMessage?: string;\n}\n\nexport interface IDutyUrgentDayModel {\n errors: DutyValidationErrorModel[];\n causeOperations: UrgentErrorDetailOperation[];\n}\nexport class DutyUrgentDayModel extends BaseApiModelClass< IDutyUrgentDayModel > implements IDutyUrgentDayModel {\n errors: DutyValidationErrorModel[];\n causeOperations: UrgentErrorDetailOperation[];\n}\n\nexport interface IDutyValidationDataModel {\n dayDuties: DutyDescriptionDto[];\n validationErrors: DutyValidationErrorModel[];\n experience: PersonAircraftTypeExperienceModel[];\n recency: PersonAircraftTypeRecencyModel[];\n blockHours: DutyBlockHoursModel;\n dutyHours: DutyHoursModel;\n acclimatisationStatus?: string;\n flightInformation: FlightInformationData;\n assignedFlights: AssignedFlight[];\n customLandings: ValidatorCustomLanding[];\n customTakeoffs: ValidatorCustomTakeoff[];\n offDaysModel: OffDaysModel;\n singleDaysModel: SingleDaysModel;\n localDaysModel: LocalDaysModel;\n disruptiveSchedule: DisruptiveScheduleModel;\n modifiedDate?: Date;\n modifiedBy?: string;\n currentLocation?: string;\n isFullDutyMonth: boolean;\n isFullDutyQuarter: boolean;\n isFullDutyYear: boolean;\n isAfterNightDuty: boolean;\n isBeforeNightDuty: boolean;\n planningDayInfo?: PlanningDayDto;\n afterTrainingExperience?: PersonAfterTrainingExperience;\n}\nexport class DutyValidationDataModel extends BaseApiModelClass< IDutyValidationDataModel > implements IDutyValidationDataModel {\n dayDuties: DutyDescriptionDto[];\n validationErrors: DutyValidationErrorModel[];\n experience: PersonAircraftTypeExperienceModel[];\n recency: PersonAircraftTypeRecencyModel[];\n blockHours: DutyBlockHoursModel;\n dutyHours: DutyHoursModel;\n acclimatisationStatus?: string;\n flightInformation: FlightInformationData;\n assignedFlights: AssignedFlight[];\n customLandings: ValidatorCustomLanding[];\n customTakeoffs: ValidatorCustomTakeoff[];\n offDaysModel: OffDaysModel;\n singleDaysModel: SingleDaysModel;\n localDaysModel: LocalDaysModel;\n disruptiveSchedule: DisruptiveScheduleModel;\n modifiedDate?: Date;\n modifiedBy?: string;\n currentLocation?: string;\n isFullDutyMonth: boolean;\n isFullDutyQuarter: boolean;\n isFullDutyYear: boolean;\n isAfterNightDuty: boolean;\n isBeforeNightDuty: boolean;\n planningDayInfo?: PlanningDayDto;\n afterTrainingExperience?: PersonAfterTrainingExperience;\n}\n\nexport interface IDutyValidationErrorInfoModel {\n message: string;\n errorType: string;\n errorTypeName: string;\n category: ValidationErrorCategory;\n}\nexport class DutyValidationErrorInfoModel extends BaseApiModelClass< IDutyValidationErrorInfoModel > implements IDutyValidationErrorInfoModel {\n message: string;\n errorType: string;\n errorTypeName: string;\n category: ValidationErrorCategory;\n}\n\nexport interface IDutyValidationErrorModel {\n message: string;\n category: ValidationErrorCategory;\n errorType?: string;\n key: string;\n isSuppressed: boolean;\n isUrgent: boolean;\n suppressedCommentText?: string;\n suppressReason?: string;\n modifiedDate?: Date;\n modifiedByPrincipalName?: string;\n isValidation: boolean;\n isPersisted: boolean;\n secondModifiedDate?: Date;\n secondModifiedByPrincipalName?: string;\n isFirstSuppressed: boolean;\n isSecondSuppressed: boolean;\n commentModifiedByPrincipalName?: string;\n commentModifiedDate?: Date;\n modifiedByPrincipalEmail?: string;\n secondModifiedByPrincipalEmail?: string;\n}\nexport class DutyValidationErrorModel extends BaseApiModelClass< IDutyValidationErrorModel > implements IDutyValidationErrorModel {\n message: string;\n category: ValidationErrorCategory;\n errorType?: string;\n key: string;\n isSuppressed: boolean;\n isUrgent: boolean;\n suppressedCommentText?: string;\n suppressReason?: string;\n modifiedDate?: Date;\n modifiedByPrincipalName?: string;\n isValidation: boolean;\n isPersisted: boolean;\n secondModifiedDate?: Date;\n secondModifiedByPrincipalName?: string;\n isFirstSuppressed: boolean;\n isSecondSuppressed: boolean;\n commentModifiedByPrincipalName?: string;\n commentModifiedDate?: Date;\n modifiedByPrincipalEmail?: string;\n secondModifiedByPrincipalEmail?: string;\n}\n\nexport interface IDutyValidationFseDataModel {\n dayDuties: DutyDescriptionDto[];\n validationErrors: DutyValidationErrorModel[];\n acclimatisationStatus?: string;\n flightInformation: FlightInformationData;\n assignedFlights: AssignedFlight[];\n disruptiveSchedule: DisruptiveScheduleModel;\n dutyHours1Day: number;\n modifiedDate?: Date;\n modifiedBy?: string;\n currentLocation?: string;\n isAfterNightDuty: boolean;\n isBeforeNightDuty: boolean;\n}\nexport class DutyValidationFseDataModel extends BaseApiModelClass< IDutyValidationFseDataModel > implements IDutyValidationFseDataModel {\n dayDuties: DutyDescriptionDto[];\n validationErrors: DutyValidationErrorModel[];\n acclimatisationStatus?: string;\n flightInformation: FlightInformationData;\n assignedFlights: AssignedFlight[];\n disruptiveSchedule: DisruptiveScheduleModel;\n dutyHours1Day: number;\n modifiedDate?: Date;\n modifiedBy?: string;\n currentLocation?: string;\n isAfterNightDuty: boolean;\n isBeforeNightDuty: boolean;\n}\n\nexport interface IDutyValidationGroundDataModel {\n dayDuties: DutyDescriptionDto[];\n validationErrors: DutyValidationErrorModel[];\n workHours: WorkHoursModel;\n modifiedDate?: Date;\n modifiedBy: string;\n workSundayDays: number;\n workSaturdayDays: number;\n assignedFlights: AssignedFlight[];\n isBeforeNightDuty: boolean;\n isAfterNightDuty: boolean;\n customTitle?: string;\n staDateTimeUtc?: Date;\n stdDateTimeUtc?: Date;\n staDateTimeLt?: Date;\n stdDateTimeLt?: Date;\n}\nexport class DutyValidationGroundDataModel extends BaseApiModelClass< IDutyValidationGroundDataModel > implements IDutyValidationGroundDataModel {\n dayDuties: DutyDescriptionDto[];\n validationErrors: DutyValidationErrorModel[];\n workHours: WorkHoursModel;\n modifiedDate?: Date;\n modifiedBy: string;\n workSundayDays: number;\n workSaturdayDays: number;\n assignedFlights: AssignedFlight[];\n isBeforeNightDuty: boolean;\n isAfterNightDuty: boolean;\n customTitle?: string;\n staDateTimeUtc?: Date;\n stdDateTimeUtc?: Date;\n staDateTimeLt?: Date;\n stdDateTimeLt?: Date;\n}\n\nexport interface IDutyWarningModel {\n date: Date;\n activityCodeName: string;\n personCodeName: string;\n personFirstName?: string;\n personLastName?: string;\n isGav: boolean;\n isFtl: boolean;\n isWish: boolean;\n isPriority: boolean;\n isImportant: boolean;\n flightNumber?: number;\n commentId?: string;\n commentText?: string;\n commentValidFromDate: Date;\n commentValidToDate?: Date;\n isDeleteConfirmRequired: boolean;\n type: DutyWarningType;\n isRequested: boolean;\n requestedPoints?: number;\n isFlightRequestReplaced: boolean;\n personSwapYearCount: number;\n isMaxAllowedSwapsReached: boolean;\n personId: string;\n haveCapacity?: boolean;\n}\nexport class DutyWarningModel extends BaseApiModelClass< IDutyWarningModel > implements IDutyWarningModel {\n date: Date;\n activityCodeName: string;\n personCodeName: string;\n personFirstName?: string;\n personLastName?: string;\n isGav: boolean;\n isFtl: boolean;\n isWish: boolean;\n isPriority: boolean;\n isImportant: boolean;\n flightNumber?: number;\n commentId?: string;\n commentText?: string;\n commentValidFromDate: Date;\n commentValidToDate?: Date;\n isDeleteConfirmRequired: boolean;\n type: DutyWarningType;\n isRequested: boolean;\n requestedPoints?: number;\n isFlightRequestReplaced: boolean;\n readonly personSwapYearCount: number;\n readonly isMaxAllowedSwapsReached: boolean;\n personId: string;\n haveCapacity?: boolean;\n}\n\nexport enum DutyWarningType {\n IsByLongHaulOverride = \"IsByLongHaulOverride\",\n IsByShortHaulOverride = \"IsByShortHaulOverride\",\n IsBySingleOverride = \"IsBySingleOverride\",\n IsChangedInUnreleasedMonth = \"IsChangedInUnreleasedMonth\",\n IsChangeLogDisabled = \"IsChangeLogDisabled\",\n IsComment = \"IsComment\",\n IsFlightPositionWillBeUnknown = \"IsFlightPositionWillBeUnknown\",\n IsFlightRequestAdded = \"IsFlightRequestAdded\",\n IsFlightRequestReplaced = \"IsFlightRequestReplaced\",\n IsLtoDeleted = \"IsLtoDeleted\",\n IsNotAllowedByContractWithoutSet = \"IsNotAllowedByContractWithoutSet\",\n IsNotAllowedByTypeRatingWithSet = \"IsNotAllowedByTypeRatingWithSet\",\n IsNotAllowedToOverWriteDutyWhenPlanning = \"IsNotAllowedToOverWriteDutyWhenPlanning\",\n IsNotAllowToOverWrite = \"IsNotAllowToOverWrite\",\n IsNotAllowToSwap = \"IsNotAllowToSwap\",\n IsOverrideByOff = \"IsOverrideByOff\",\n IsReserveRequestReplaced = \"IsReserveRequestReplaced\",\n IsStoRequestReplaced = \"IsStoRequestReplaced\",\n IsSwap = \"IsSwap\",\n None = \"None\",\n}\n\nexport interface IEasaAlertModel {\n messages?: string[];\n hasErrors: boolean;\n}\nexport class EasaAlertModel extends BaseApiModelClass< IEasaAlertModel > implements IEasaAlertModel {\n messages?: string[];\n hasErrors: boolean;\n}\n\nexport interface IEbtModuleModel {\n id: string;\n type: EbtModuleType;\n typeName: string;\n startDate: Date;\n endDate: Date;\n}\nexport class EbtModuleModel extends BaseApiModelClass< IEbtModuleModel > implements IEbtModuleModel {\n id: string;\n type: EbtModuleType;\n typeName: string;\n startDate: Date;\n endDate: Date;\n}\n\nexport enum EbtModuleType {\n M1 = \"M1\",\n M2 = \"M2\",\n M3 = \"M3\",\n M4 = \"M4\",\n M5 = \"M5\",\n M6 = \"M6\",\n}\n\nexport interface IEmailAttachmentDto {\n id: string;\n name?: string;\n type: EmailContentType;\n size?: number;\n}\nexport class EmailAttachmentDto extends BaseApiModelClass< IEmailAttachmentDto > implements IEmailAttachmentDto {\n id: string;\n name?: string;\n type: EmailContentType;\n size?: number;\n}\n\nexport enum EmailContentType {\n None = \"None\",\n Pdf = \"Pdf\",\n Xls = \"Xls\",\n Xlsx = \"Xlsx\",\n Xml = \"Xml\",\n}\n\nexport interface IEmailFilter {\n rowLimit?: number;\n periodFrom: Date;\n periodTo?: Date;\n searchTerm?: string;\n}\nexport class EmailFilter extends BaseApiModelClass< IEmailFilter > implements IEmailFilter {\n rowLimit?: number;\n periodFrom: Date;\n periodTo?: Date;\n searchTerm?: string;\n}\n\nexport interface IEmailValidateRequest {\n value?: string;\n}\nexport class EmailValidateRequest extends BaseApiModelClass< IEmailValidateRequest > implements IEmailValidateRequest {\n value?: string;\n}\n\nexport interface IEmailValidateResponse {\n isValid: boolean;\n errorMessage?: string;\n}\nexport class EmailValidateResponse extends BaseApiModelClass< IEmailValidateResponse > implements IEmailValidateResponse {\n isValid: boolean;\n errorMessage?: string;\n}\n\nexport interface IEnumModel {\n code: string;\n name: string;\n}\nexport class EnumModel extends BaseApiModelClass< IEnumModel > implements IEnumModel {\n code: string;\n name: string;\n}\n\nexport interface IErrorReportFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n isHistorized: boolean;\n is48hView: boolean;\n}\nexport class ErrorReportFilter extends BaseApiModelClass< IErrorReportFilter > implements IErrorReportFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n isHistorized: boolean;\n is48hView: boolean;\n}\n\nexport interface IErrorReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode: string;\n functionName?: string;\n date: Date;\n actualDuty?: string;\n message: string;\n isSuppressed: boolean;\n suppressReason?: string;\n category: string;\n errorCategory?: ValidationErrorCategory;\n is1stSuppressed: boolean;\n is2ndSuppressed: boolean;\n principalName?: string;\n secondPrincipalName?: string;\n}\nexport class ErrorReportModel extends BaseApiModelClass< IErrorReportModel > implements IErrorReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode: string;\n functionName?: string;\n date: Date;\n actualDuty?: string;\n message: string;\n isSuppressed: boolean;\n suppressReason?: string;\n category: string;\n errorCategory?: ValidationErrorCategory;\n is1stSuppressed: boolean;\n is2ndSuppressed: boolean;\n principalName?: string;\n secondPrincipalName?: string;\n}\n\nexport interface IErrorReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class ErrorReportModelDataSourceLoadOptions extends BaseApiModelClass< IErrorReportModelDataSourceLoadOptions > implements IErrorReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IExperienceModel {\n id: string;\n codeName: string;\n displayName: string;\n}\nexport class ExperienceModel extends BaseApiModelClass< IExperienceModel > implements IExperienceModel {\n id: string;\n codeName: string;\n displayName: string;\n}\n\nexport interface IExperienceReportFilter {\n rowLimit?: number;\n year: number;\n month: number;\n personId?: string;\n}\nexport class ExperienceReportFilter extends BaseApiModelClass< IExperienceReportFilter > implements IExperienceReportFilter {\n rowLimit?: number;\n year: number;\n month: number;\n personId?: string;\n}\n\nexport interface IExperienceReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n code: string;\n name?: string;\n contract?: string;\n function?: string;\n status320: boolean;\n status330: boolean;\n status340: boolean;\n status350: boolean;\n blockHoursSec320: number;\n blockHoursSec330: number;\n blockHoursSec340: number;\n blockHoursSec350: number;\n sectors320: number;\n sectors330: number;\n sectors340: number;\n sectors350: number;\n activityFlcBhLimit320?: number;\n activityFlcBhLimit330?: number;\n activityFlcBhLimit340?: number;\n activityFlcBhLimit350?: number;\n activityFlcSecLimit320?: number;\n activityFlcSecLimit330?: number;\n activityFlcSecLimit340?: number;\n activityFlcSecLimit350?: number;\n}\nexport class ExperienceReportModel extends BaseApiModelClass< IExperienceReportModel > implements IExperienceReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n code: string;\n name?: string;\n contract?: string;\n function?: string;\n status320: boolean;\n status330: boolean;\n status340: boolean;\n status350: boolean;\n blockHoursSec320: number;\n blockHoursSec330: number;\n blockHoursSec340: number;\n blockHoursSec350: number;\n sectors320: number;\n sectors330: number;\n sectors340: number;\n sectors350: number;\n activityFlcBhLimit320?: number;\n activityFlcBhLimit330?: number;\n activityFlcBhLimit340?: number;\n activityFlcBhLimit350?: number;\n activityFlcSecLimit320?: number;\n activityFlcSecLimit330?: number;\n activityFlcSecLimit340?: number;\n activityFlcSecLimit350?: number;\n}\n\nexport interface IExperienceReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class ExperienceReportModelDataSourceLoadOptions extends BaseApiModelClass< IExperienceReportModelDataSourceLoadOptions > implements IExperienceReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IExportCrewDutyListReportColumn {\n caption?: string;\n dataField?: string;\n width?: number;\n}\nexport class ExportCrewDutyListReportColumn extends BaseApiModelClass< IExportCrewDutyListReportColumn > implements IExportCrewDutyListReportColumn {\n caption?: string;\n dataField?: string;\n width?: number;\n}\n\nexport interface IExportCrewDutyListReportFilter {\n rowLimit?: number;\n functionId: string;\n instructorFilter?: string[];\n contractFlagTypes?: ContractFlagType[];\n dateFrom: Date;\n dateTo: Date;\n personIds?: string[];\n dooType: DooType[];\n resetCache: boolean;\n key: string;\n columnsInfo?: ExportCrewDutyListReportColumn[];\n showReleased: boolean;\n}\nexport class ExportCrewDutyListReportFilter extends BaseApiModelClass< IExportCrewDutyListReportFilter > implements IExportCrewDutyListReportFilter {\n rowLimit?: number;\n functionId: string;\n instructorFilter?: string[];\n contractFlagTypes?: ContractFlagType[];\n dateFrom: Date;\n dateTo: Date;\n personIds?: string[];\n dooType: DooType[];\n resetCache: boolean;\n readonly key: string;\n columnsInfo?: ExportCrewDutyListReportColumn[];\n showReleased: boolean;\n}\n\nexport interface IExportLogbookModel {\n exportType: LogbookExportType;\n}\nexport class ExportLogbookModel extends BaseApiModelClass< IExportLogbookModel > implements IExportLogbookModel {\n exportType: LogbookExportType;\n}\n\nexport enum FdpAmendmentType {\n PreferFdpCombine = \"PreferFdpCombine\",\n PreferFdpSplit = \"PreferFdpSplit\",\n SplitDuty = \"SplitDuty\",\n SplitDutyWithoutHotel = \"SplitDutyWithoutHotel\",\n}\n\nexport enum FdpExtensionType {\n Augmented = \"Augmented\",\n Extended = \"Extended\",\n None = \"None\",\n XStar = \"XStar\",\n}\n\nexport interface IFile {\n}\nexport class File extends BaseApiModelClass< IFile > implements IFile {\n}\n\nexport enum FleetType {\n A320 = \"A320\",\n A320_A330 = \"A320_A330\",\n A320_A340 = \"A320_A340\",\n A330_A340 = \"A330_A340\",\n A340 = \"A340\",\n A350 = \"A350\",\n Cabin = \"Cabin\",\n Ground = \"Ground\",\n}\n\nexport interface IFleetTypeModel {\n label: string;\n value: number;\n}\nexport class FleetTypeModel extends BaseApiModelClass< IFleetTypeModel > implements IFleetTypeModel {\n label: string;\n value: number;\n}\n\nexport interface IFlightActivityItem {\n activityCodeName: string;\n personCode: string;\n personId: string;\n personFunction?: string;\n}\nexport class FlightActivityItem extends BaseApiModelClass< IFlightActivityItem > implements IFlightActivityItem {\n activityCodeName: string;\n personCode: string;\n personId: string;\n personFunction?: string;\n}\n\nexport interface IFlightActivityLicense {\n activityCodeName: string;\n licenseId: string;\n}\nexport class FlightActivityLicense extends BaseApiModelClass< IFlightActivityLicense > implements IFlightActivityLicense {\n activityCodeName: string;\n licenseId: string;\n}\n\nexport interface IFlightActivityPersonCandidate {\n personId: string;\n code: string;\n}\nexport class FlightActivityPersonCandidate extends BaseApiModelClass< IFlightActivityPersonCandidate > implements IFlightActivityPersonCandidate {\n personId: string;\n code: string;\n}\n\nexport interface IFlightCommentDto {\n flightId: string;\n text: string;\n}\nexport class FlightCommentDto extends BaseApiModelClass< IFlightCommentDto > implements IFlightCommentDto {\n flightId: string;\n text: string;\n}\n\nexport interface IFlightCrewDetailsModel {\n flightId: string;\n netlineOpsLegId?: number;\n landingPilotCode?: string;\n monitoringPilotCode?: string;\n takeOffPilotCode?: string;\n takeOffPilotMonitoringCode?: string;\n isForecastLanding: boolean;\n isForecastTakeoff: boolean;\n activities: FlightActivityItem[];\n activityLicenses: FlightActivityLicense[];\n}\nexport class FlightCrewDetailsModel extends BaseApiModelClass< IFlightCrewDetailsModel > implements IFlightCrewDetailsModel {\n flightId: string;\n netlineOpsLegId?: number;\n landingPilotCode?: string;\n monitoringPilotCode?: string;\n takeOffPilotCode?: string;\n takeOffPilotMonitoringCode?: string;\n isForecastLanding: boolean;\n isForecastTakeoff: boolean;\n activities: FlightActivityItem[];\n activityLicenses: FlightActivityLicense[];\n}\n\nexport interface IFlightCrewMember {\n id: string;\n code: string;\n notFoundFlights: number[];\n hasAllDuties: boolean;\n}\nexport class FlightCrewMember extends BaseApiModelClass< IFlightCrewMember > implements IFlightCrewMember {\n id: string;\n code: string;\n notFoundFlights: number[];\n readonly hasAllDuties: boolean;\n}\n\nexport interface IFlightDto {\n id: string;\n airlineRcd: string;\n flightNumber: number;\n operationalSuffix?: string;\n originRcd: string;\n destinationRcd: string;\n date: Date;\n netlineOpsLegId?: number;\n status: FlightStatus;\n statusIdentifier?: string;\n statusSupplementaryInfo?: string;\n statusChangeReason?: string;\n statusActionIdentifier?: string;\n isLongHaul: boolean;\n isLongHaulCabinOverride?: boolean;\n departureDateTimeUtc: Date;\n departureDateTimeLt: Date;\n arrivalDateTimeUtc: Date;\n arrivalDateTimeLt: Date;\n outOfTheGateUtc?: Date;\n offTheGroundUtc?: Date;\n onTheGroundUtc?: Date;\n intoTheGateUtc?: Date;\n aircraftId?: string;\n legSequenceNumber: number;\n originalFlightId?: string;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n landingPilotFlyingId?: string;\n landingPilotMonitoringId?: string;\n takeOffPilotFlyingId?: string;\n takeOffPilotMonitoringId?: string;\n isTypeRatingExam: boolean;\n cockpitCrewEmployer: string;\n cabinCrewEmployer: string;\n plannedAircraftTypeRcd?: string;\n totalDosimetry: number;\n hasDuties: boolean;\n}\nexport class FlightDto extends BaseApiModelClass< IFlightDto > implements IFlightDto {\n id: string;\n airlineRcd: string;\n flightNumber: number;\n operationalSuffix?: string;\n originRcd: string;\n destinationRcd: string;\n date: Date;\n netlineOpsLegId?: number;\n status: FlightStatus;\n statusIdentifier?: string;\n statusSupplementaryInfo?: string;\n statusChangeReason?: string;\n statusActionIdentifier?: string;\n isLongHaul: boolean;\n isLongHaulCabinOverride?: boolean;\n departureDateTimeUtc: Date;\n departureDateTimeLt: Date;\n arrivalDateTimeUtc: Date;\n arrivalDateTimeLt: Date;\n outOfTheGateUtc?: Date;\n offTheGroundUtc?: Date;\n onTheGroundUtc?: Date;\n intoTheGateUtc?: Date;\n aircraftId?: string;\n legSequenceNumber: number;\n originalFlightId?: string;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n landingPilotFlyingId?: string;\n landingPilotMonitoringId?: string;\n takeOffPilotFlyingId?: string;\n takeOffPilotMonitoringId?: string;\n isTypeRatingExam: boolean;\n cockpitCrewEmployer: string;\n cabinCrewEmployer: string;\n plannedAircraftTypeRcd?: string;\n totalDosimetry: number;\n hasDuties: boolean;\n}\n\nexport interface IFlightDutyRecordModel {\n date: Date;\n dutyText?: string;\n dutyItems: FlightDutyRecordTitleItem[];\n historizedDutyText?: string;\n route?: string;\n details?: string;\n hasAugmentedFlight: boolean;\n hasExtendedFlight: boolean;\n hasXStarFlight: boolean;\n dutyFromUtc?: Date;\n dutyFromDiffToLt?: string;\n dutyToUtc?: Date;\n dutyToDiffToLt?: string;\n historizedDutyFromUtc?: Date;\n historizedDutyFromDiffToLt?: string;\n historizedDutyToUtc?: Date;\n historizedDutyToDiffToLt?: string;\n flightCheckinDateUtc?: Date;\n flightCheckinDateDiffToLt?: string;\n flightCheckoutDateUtc?: Date;\n flightCheckoutDateDiffToLt?: string;\n flightShiftedCheckinDateUtc?: Date;\n flightShiftedCheckinDateDiffToLt?: string;\n flightShiftedCheckoutDateUtc?: Date;\n flightShiftedCheckoutDateDiffToLt?: string;\n fdpStartDiffToLt?: string;\n fdpEndDiffToLt?: string;\n flightStdDate?: Date;\n flightStaDate?: Date;\n flightBlockOnDate?: Date;\n flightBlockOffDate?: Date;\n aircraftType?: string;\n blockHoursFdp?: number;\n blockHoursOfDay: number;\n blockHours: number;\n blockHours28Days: number;\n dutyHours: number;\n historizedDutyHoursFdp?: number;\n dutyHoursFdp?: number;\n dutyHours7Days: number;\n dutyHours14Days: number;\n dutyHours28Days: number;\n dosimetryMsv: number;\n expensesSalaryMoney?: number;\n expensesSalaryDays?: number;\n expensesSalaryHours?: number;\n expensesComment?: string;\n positionings: FlightDutyRecordPositioning[];\n expensesSalaryHourlyShiftMoney?: number;\n expensesSalarySupportPikketMoney?: number;\n expensesSalaryWeekendHolidayMoney?: number;\n workHourTib1DaySecs?: number;\n historizedFlightCheckinDateUtc?: Date;\n historizedFlightCheckinDateDiffToLt?: string;\n historizedFlightCheckoutDateUtc?: Date;\n historizedFlightCheckoutDateDiffToLt?: string;\n dutyParts?: DatesRange[];\n mfdpTimeSecs?: number;\n}\nexport class FlightDutyRecordModel extends BaseApiModelClass< IFlightDutyRecordModel > implements IFlightDutyRecordModel {\n date: Date;\n dutyText?: string;\n dutyItems: FlightDutyRecordTitleItem[];\n historizedDutyText?: string;\n route?: string;\n details?: string;\n hasAugmentedFlight: boolean;\n hasExtendedFlight: boolean;\n hasXStarFlight: boolean;\n dutyFromUtc?: Date;\n dutyFromDiffToLt?: string;\n dutyToUtc?: Date;\n dutyToDiffToLt?: string;\n historizedDutyFromUtc?: Date;\n historizedDutyFromDiffToLt?: string;\n historizedDutyToUtc?: Date;\n historizedDutyToDiffToLt?: string;\n flightCheckinDateUtc?: Date;\n flightCheckinDateDiffToLt?: string;\n flightCheckoutDateUtc?: Date;\n flightCheckoutDateDiffToLt?: string;\n flightShiftedCheckinDateUtc?: Date;\n flightShiftedCheckinDateDiffToLt?: string;\n flightShiftedCheckoutDateUtc?: Date;\n flightShiftedCheckoutDateDiffToLt?: string;\n fdpStartDiffToLt?: string;\n fdpEndDiffToLt?: string;\n flightStdDate?: Date;\n flightStaDate?: Date;\n flightBlockOnDate?: Date;\n flightBlockOffDate?: Date;\n aircraftType?: string;\n blockHoursFdp?: number;\n blockHoursOfDay: number;\n blockHours: number;\n blockHours28Days: number;\n dutyHours: number;\n historizedDutyHoursFdp?: number;\n dutyHoursFdp?: number;\n dutyHours7Days: number;\n dutyHours14Days: number;\n dutyHours28Days: number;\n dosimetryMsv: number;\n expensesSalaryMoney?: number;\n expensesSalaryDays?: number;\n expensesSalaryHours?: number;\n expensesComment?: string;\n positionings: FlightDutyRecordPositioning[];\n expensesSalaryHourlyShiftMoney?: number;\n expensesSalarySupportPikketMoney?: number;\n expensesSalaryWeekendHolidayMoney?: number;\n workHourTib1DaySecs?: number;\n historizedFlightCheckinDateUtc?: Date;\n historizedFlightCheckinDateDiffToLt?: string;\n historizedFlightCheckoutDateUtc?: Date;\n historizedFlightCheckoutDateDiffToLt?: string;\n dutyParts?: DatesRange[];\n mfdpTimeSecs?: number;\n}\n\nexport interface IFlightDutyRecordPositioning {\n originRcd: string;\n destinationRcd: string;\n startUtc: Date;\n startDiffToLt: string;\n endUtc: Date;\n endDiffToLt: string;\n}\nexport class FlightDutyRecordPositioning extends BaseApiModelClass< IFlightDutyRecordPositioning > implements IFlightDutyRecordPositioning {\n originRcd: string;\n destinationRcd: string;\n startUtc: Date;\n startDiffToLt: string;\n endUtc: Date;\n endDiffToLt: string;\n}\n\nexport interface IFlightDutyRecordReportModel {\n flightDutyRecords: FlightDutyRecordModel[];\n blockHoursYear?: number;\n dutyHoursYear?: number;\n dutyHours12Months?: number;\n homeStudyDhSec?: number;\n homeStudyDhYtdSec?: number;\n daysOffYear?: number;\n daysOffMonth?: number;\n localDaysYear?: number;\n localDaysMonth?: number;\n isExpensesSalaryReceived: boolean;\n expensesSalaryResponseErrorMessage?: string;\n personId: string;\n personDisplayName: string;\n personCode: string;\n periodName: string;\n totalYearDosimetry: number;\n expensesDutyFree: number;\n vasaStatus: VasaSalaryPeriodStatus;\n workHoursMonthActualSecs?: number;\n workHoursMonthShouldSecs?: number;\n workHoursBalanceMonthSecs?: number;\n workHoursBalancePrevMonthSecs?: number;\n historizedWorkHoursMonthActualSecs?: number;\n isGround: boolean;\n isCabin: boolean;\n isCockpit: boolean;\n}\nexport class FlightDutyRecordReportModel extends BaseApiModelClass< IFlightDutyRecordReportModel > implements IFlightDutyRecordReportModel {\n flightDutyRecords: FlightDutyRecordModel[];\n blockHoursYear?: number;\n dutyHoursYear?: number;\n dutyHours12Months?: number;\n homeStudyDhSec?: number;\n homeStudyDhYtdSec?: number;\n daysOffYear?: number;\n daysOffMonth?: number;\n localDaysYear?: number;\n localDaysMonth?: number;\n isExpensesSalaryReceived: boolean;\n expensesSalaryResponseErrorMessage?: string;\n personId: string;\n personDisplayName: string;\n personCode: string;\n periodName: string;\n totalYearDosimetry: number;\n expensesDutyFree: number;\n vasaStatus: VasaSalaryPeriodStatus;\n workHoursMonthActualSecs?: number;\n workHoursMonthShouldSecs?: number;\n workHoursBalanceMonthSecs?: number;\n workHoursBalancePrevMonthSecs?: number;\n historizedWorkHoursMonthActualSecs?: number;\n isGround: boolean;\n isCabin: boolean;\n isCockpit: boolean;\n}\n\nexport interface IFlightDutyRecordTitleItem {\n displayText: string;\n flightId?: string;\n}\nexport class FlightDutyRecordTitleItem extends BaseApiModelClass< IFlightDutyRecordTitleItem > implements IFlightDutyRecordTitleItem {\n displayText: string;\n flightId?: string;\n}\n\nexport interface IFlightFlags {\n flightId: string;\n flightIsAugmented: boolean;\n flightIsExtended: boolean;\n flightIsXStar: boolean;\n functionGroupId: string;\n}\nexport class FlightFlags extends BaseApiModelClass< IFlightFlags > implements IFlightFlags {\n flightId: string;\n flightIsAugmented: boolean;\n flightIsExtended: boolean;\n flightIsXStar: boolean;\n functionGroupId: string;\n}\n\nexport interface IFlightFlagsRequest {\n isOverrideAllowed: boolean;\n flags: FlightFlags[];\n}\nexport class FlightFlagsRequest extends BaseApiModelClass< IFlightFlagsRequest > implements IFlightFlagsRequest {\n isOverrideAllowed: boolean;\n flags: FlightFlags[];\n}\n\nexport interface IFlightFlagsResponse {\n isSuccessful: boolean;\n conflicts: string[];\n updateResult: UpdateDutyResult;\n}\nexport class FlightFlagsResponse extends BaseApiModelClass< IFlightFlagsResponse > implements IFlightFlagsResponse {\n isSuccessful: boolean;\n conflicts: string[];\n updateResult: UpdateDutyResult;\n}\n\nexport interface IFlightIdInfo {\n flightNumber: number;\n airlineRcd: string;\n originRcd: string;\n destinationRcd: string;\n legNumber: number;\n date: Date;\n}\nexport class FlightIdInfo extends BaseApiModelClass< IFlightIdInfo > implements IFlightIdInfo {\n flightNumber: number;\n airlineRcd: string;\n originRcd: string;\n destinationRcd: string;\n legNumber: number;\n date: Date;\n}\n\nexport interface IFlightInfoModel {\n id: string;\n flightNumber: number;\n operationalSuffix?: string;\n originRcd: string;\n destinationRcd: string;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n aircraftTypeRcd?: string;\n cockpitCrewEmployer?: string;\n cabinCrewEmployer?: string;\n}\nexport class FlightInfoModel extends BaseApiModelClass< IFlightInfoModel > implements IFlightInfoModel {\n id: string;\n flightNumber: number;\n operationalSuffix?: string;\n originRcd: string;\n destinationRcd: string;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n aircraftTypeRcd?: string;\n cockpitCrewEmployer?: string;\n cabinCrewEmployer?: string;\n}\n\nexport interface IFlightInformationData {\n dutyHoursSecs: number;\n blockHoursSecs: number;\n fdpTimeSecs: number;\n checkinDateTimeUtc?: Date;\n checkinDateTimeLt?: Date;\n checkoutDateTimeUtc?: Date;\n checkoutDateTimeLt?: Date;\n staDateTimeUtc?: Date;\n staDateTimeLt?: Date;\n stdDateTimeUtc?: Date;\n stdDateTimeLt?: Date;\n mfdpSbSecs?: number;\n awakeTimeSec?: number;\n mfdpTimeSecs?: number;\n mfdpeTimeSecs?: number;\n mfdpeIfr3Secs?: number;\n mfdpeIfr4Secs?: number;\n mfdpeIfrSecs?: number;\n fdpExtendedReason?: string;\n fdpAugmentedReason?: string;\n ftl2019MfdpTimeSecs?: number;\n ftl2019MfdpeTimeSecs?: number;\n ftl2019MfdpeIfr3Secs?: number;\n ftl2019MfdpeIfr4Secs?: number;\n ftl2019MfdpSbSecs?: number;\n hasCustomCheckin: boolean;\n hasCustomCheckout: boolean;\n isFdpAugmented: boolean;\n isFdpExtended: boolean;\n isFdpXStar: boolean;\n}\nexport class FlightInformationData extends BaseApiModelClass< IFlightInformationData > implements IFlightInformationData {\n dutyHoursSecs: number;\n blockHoursSecs: number;\n fdpTimeSecs: number;\n checkinDateTimeUtc?: Date;\n checkinDateTimeLt?: Date;\n checkoutDateTimeUtc?: Date;\n checkoutDateTimeLt?: Date;\n staDateTimeUtc?: Date;\n staDateTimeLt?: Date;\n stdDateTimeUtc?: Date;\n stdDateTimeLt?: Date;\n mfdpSbSecs?: number;\n awakeTimeSec?: number;\n mfdpTimeSecs?: number;\n mfdpeTimeSecs?: number;\n mfdpeIfr3Secs?: number;\n mfdpeIfr4Secs?: number;\n mfdpeIfrSecs?: number;\n fdpExtendedReason?: string;\n fdpAugmentedReason?: string;\n ftl2019MfdpTimeSecs?: number;\n ftl2019MfdpeTimeSecs?: number;\n ftl2019MfdpeIfr3Secs?: number;\n ftl2019MfdpeIfr4Secs?: number;\n ftl2019MfdpSbSecs?: number;\n hasCustomCheckin: boolean;\n hasCustomCheckout: boolean;\n isFdpAugmented: boolean;\n isFdpExtended: boolean;\n isFdpXStar: boolean;\n}\n\nexport interface IFlightInformationEditModel {\n id: string;\n status: FlightStatus;\n arrivalDateTimeUtc: Date;\n departureDateTimeUtc: Date;\n outOfTheGateDateTimeUtc?: Date;\n offTheGroundDateTimeUtc?: Date;\n onTheGroundDateTimeUtc?: Date;\n intoTheGateDateTimeUtc?: Date;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n originalId?: string;\n comment?: string;\n aircraftId?: string;\n cockpitCrewEmployer?: string;\n cabinCrewEmployer?: string;\n}\nexport class FlightInformationEditModel extends BaseApiModelClass< IFlightInformationEditModel > implements IFlightInformationEditModel {\n id: string;\n status: FlightStatus;\n arrivalDateTimeUtc: Date;\n departureDateTimeUtc: Date;\n outOfTheGateDateTimeUtc?: Date;\n offTheGroundDateTimeUtc?: Date;\n onTheGroundDateTimeUtc?: Date;\n intoTheGateDateTimeUtc?: Date;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n originalId?: string;\n comment?: string;\n aircraftId?: string;\n cockpitCrewEmployer?: string;\n cabinCrewEmployer?: string;\n}\n\nexport interface IFlightLimitsCabinDto {\n personId: string;\n frCountLeftLh: number;\n frCountLeftSh: number;\n maxFlightRequestsLhCountStartPeriod?: number;\n maxFlightRequestsLhCountEndPeriod?: number;\n countLhOnStartPeriodContractYear?: number;\n maxFlightRequestsShCountStartPeriod?: number;\n maxFlightRequestsShCountEndPeriod?: number;\n countShOnStartPeriodContractYear?: number;\n dateOfStartNextContractYear?: Date;\n}\nexport class FlightLimitsCabinDto extends BaseApiModelClass< IFlightLimitsCabinDto > implements IFlightLimitsCabinDto {\n personId: string;\n frCountLeftLh: number;\n frCountLeftSh: number;\n maxFlightRequestsLhCountStartPeriod?: number;\n maxFlightRequestsLhCountEndPeriod?: number;\n countLhOnStartPeriodContractYear?: number;\n maxFlightRequestsShCountStartPeriod?: number;\n maxFlightRequestsShCountEndPeriod?: number;\n countShOnStartPeriodContractYear?: number;\n dateOfStartNextContractYear?: Date;\n}\n\nexport interface IFlightLimitsCorrectionModel {\n referenceDate: Date;\n type: FlightRequestLimitRange;\n amount: number;\n reason: string;\n}\nexport class FlightLimitsCorrectionModel extends BaseApiModelClass< IFlightLimitsCorrectionModel > implements IFlightLimitsCorrectionModel {\n referenceDate: Date;\n type: FlightRequestLimitRange;\n amount: number;\n reason: string;\n}\n\nexport interface IFlightLimitsDto {\n personId: string;\n maxAllowedFlightsThisYear: number;\n frCountAllowedPerPeriod: number;\n frCountCurrent: number;\n}\nexport class FlightLimitsDto extends BaseApiModelClass< IFlightLimitsDto > implements IFlightLimitsDto {\n personId: string;\n maxAllowedFlightsThisYear: number;\n frCountAllowedPerPeriod: number;\n frCountCurrent: number;\n}\n\nexport interface IFlightLogItem {\n id: string;\n timestamp: Date;\n operationName: string;\n status?: FlightStatus;\n statusIdentifier?: string;\n statusChangeReason?: string;\n statusSupplementaryInfo?: string;\n statusActionIdentifier?: string;\n netlineOpsLegId?: number;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n cockpitCrewEmployer?: string;\n cabinCrewEmployer?: string;\n operationalSuffix?: string;\n outOfTheGateDateTimeUtc?: Date;\n offTheGroundDateTimeUtc?: Date;\n onTheGroundDateTimeUtc?: Date;\n intoTheGateDateTimeUtc?: Date;\n aircraftRegistrationNumber?: string;\n aircraftType?: string;\n totalDosimetry?: number;\n modifiedBy: string;\n departureDateTimeUtc?: Date;\n arrivalDateTimeUtc?: Date;\n originalId?: string;\n originalInfo?: string;\n}\nexport class FlightLogItem extends BaseApiModelClass< IFlightLogItem > implements IFlightLogItem {\n id: string;\n timestamp: Date;\n operationName: string;\n status?: FlightStatus;\n statusIdentifier?: string;\n statusChangeReason?: string;\n statusSupplementaryInfo?: string;\n statusActionIdentifier?: string;\n netlineOpsLegId?: number;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n cockpitCrewEmployer?: string;\n cabinCrewEmployer?: string;\n operationalSuffix?: string;\n outOfTheGateDateTimeUtc?: Date;\n offTheGroundDateTimeUtc?: Date;\n onTheGroundDateTimeUtc?: Date;\n intoTheGateDateTimeUtc?: Date;\n aircraftRegistrationNumber?: string;\n aircraftType?: string;\n totalDosimetry?: number;\n modifiedBy: string;\n departureDateTimeUtc?: Date;\n arrivalDateTimeUtc?: Date;\n originalId?: string;\n originalInfo?: string;\n}\n\nexport interface IFlightModel {\n id: string;\n airlineRcd: string;\n flightNumber: number;\n operationalSuffix?: string;\n originRcd: string;\n destinationRcd: string;\n isAirportMissing: boolean;\n originCountryThreeLetterCode?: string;\n destinationCountryThreeLetterCode?: string;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n departureTimeDiffToLt: string;\n arrivalTimeDiffToLt: string;\n aircraftTypeRcd?: string;\n outTheGateDateTimeUtc?: Date;\n offTheGroundDateTimeUtc?: Date;\n onTheGroundDateTimeUtc?: Date;\n intoTheGateDateTimeUtc?: Date;\n aircraftId?: string;\n isLongHaul: boolean;\n isLongHaulCabin: boolean;\n aircraftRegistrationNumber?: string;\n}\nexport class FlightModel extends BaseApiModelClass< IFlightModel > implements IFlightModel {\n id: string;\n airlineRcd: string;\n flightNumber: number;\n operationalSuffix?: string;\n originRcd: string;\n destinationRcd: string;\n isAirportMissing: boolean;\n originCountryThreeLetterCode?: string;\n destinationCountryThreeLetterCode?: string;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n departureTimeDiffToLt: string;\n arrivalTimeDiffToLt: string;\n aircraftTypeRcd?: string;\n outTheGateDateTimeUtc?: Date;\n offTheGroundDateTimeUtc?: Date;\n onTheGroundDateTimeUtc?: Date;\n intoTheGateDateTimeUtc?: Date;\n aircraftId?: string;\n isLongHaul: boolean;\n isLongHaulCabin: boolean;\n readonly aircraftRegistrationNumber?: string;\n}\n\nexport enum FlightQueueResultStatus {\n DutyChangeAfterFlightDone = \"DutyChangeAfterFlightDone\",\n DutyChangeIgnored = \"DutyChangeIgnored\",\n FlightInWrongState = \"FlightInWrongState\",\n FlightNoConfiguration = \"FlightNoConfiguration\",\n InsufficientInformation = \"InsufficientInformation\",\n NoAssignments = \"NoAssignments\",\n NoCountryDeliveryMethodDefined = \"NoCountryDeliveryMethodDefined\",\n PayloadGenerated = \"PayloadGenerated\",\n PersonChangeAfterFlightDone = \"PersonChangeAfterFlightDone\",\n PersonChangeIgnored = \"PersonChangeIgnored\",\n SkippedAsDuplicate = \"SkippedAsDuplicate\",\n WaitingForNextTrigger = \"WaitingForNextTrigger\",\n}\n\nexport enum FlightRequestLimitRange {\n LH = \"LH\",\n SH = \"SH\",\n Total = \"Total\",\n}\n\nexport interface IFlightResponse {\n flightId: string;\n items: CrewItem[];\n}\nexport class FlightResponse extends BaseApiModelClass< IFlightResponse > implements IFlightResponse {\n flightId: string;\n items: CrewItem[];\n}\n\nexport interface IFlightRevalidateModel {\n id: string;\n}\nexport class FlightRevalidateModel extends BaseApiModelClass< IFlightRevalidateModel > implements IFlightRevalidateModel {\n id: string;\n}\n\nexport interface IFlightRotationComplements {\n crewFunction: RotationCrewComplementsFunction;\n count: number;\n}\nexport class FlightRotationComplements extends BaseApiModelClass< IFlightRotationComplements > implements IFlightRotationComplements {\n crewFunction: RotationCrewComplementsFunction;\n count: number;\n}\n\nexport interface IFlightRotationInfo {\n id: string;\n name: string;\n isDeleted: boolean;\n isForCabin: boolean;\n isForCockpit: boolean;\n timestamp: Date;\n periodDateFrom: Date;\n periodDateTo: Date;\n type: RotationType;\n dutiesAsText: string;\n functionNames: string[];\n complements: FlightRotationComplements[];\n dutiesIsAugmented?: boolean;\n dutiesIsExtended?: boolean;\n}\nexport class FlightRotationInfo extends BaseApiModelClass< IFlightRotationInfo > implements IFlightRotationInfo {\n id: string;\n name: string;\n isDeleted: boolean;\n isForCabin: boolean;\n isForCockpit: boolean;\n timestamp: Date;\n periodDateFrom: Date;\n periodDateTo: Date;\n type: RotationType;\n dutiesAsText: string;\n functionNames: string[];\n complements: FlightRotationComplements[];\n dutiesIsAugmented?: boolean;\n dutiesIsExtended?: boolean;\n}\n\nexport interface IFlightSeatInfo {\n timestamp: Date;\n operationName: string;\n date: Date;\n personId: string;\n personCode: string;\n principalName: string;\n activityRcd: string;\n isChangeLogEnabled: boolean;\n}\nexport class FlightSeatInfo extends BaseApiModelClass< IFlightSeatInfo > implements IFlightSeatInfo {\n timestamp: Date;\n operationName: string;\n date: Date;\n personId: string;\n personCode: string;\n principalName: string;\n activityRcd: string;\n isChangeLogEnabled: boolean;\n}\n\nexport enum FlightStatus {\n Actual = \"Actual\",\n Cancelled = \"Cancelled\",\n Changed = \"Changed\",\n Deleted = \"Deleted\",\n}\n\nexport enum FlightTriggerType {\n DC = \"DC\",\n Duty = \"Duty\",\n FC = \"FC\",\n Manual = \"Manual\",\n Person = \"Person\",\n Print = \"Print\",\n RDC = \"RDC\",\n RFC = \"RFC\",\n RTM0 = \"RTM0\",\n RTM0_5 = \"RTM0_5\",\n RTM1 = \"RTM1\",\n RTM1_15 = \"RTM1_15\",\n RTM24 = \"RTM24\",\n TM0 = \"TM0\",\n TM0_5 = \"TM0_5\",\n TM1 = \"TM1\",\n TM1_15 = \"TM1_15\",\n TM24 = \"TM24\",\n}\n\nexport enum FreelanceActivityType {\n A = \"A\",\n A_N = \"A_N\",\n AE_ = \"AE_\",\n AL_ = \"AL_\",\n AN_ = \"AN_\",\n Empty = \"Empty\",\n N_A = \"N_A\",\n O_R = \"O_R\",\n}\n\nexport interface IFreelanceExportDto {\n date: Date;\n duty?: string;\n}\nexport class FreelanceExportDto extends BaseApiModelClass< IFreelanceExportDto > implements IFreelanceExportDto {\n date: Date;\n duty?: string;\n}\n\nexport enum FreelancePeriodStatus {\n DeviatedByCrew = \"DeviatedByCrew\",\n DeviatedByPlanner = \"DeviatedByPlanner\",\n None = \"None\",\n SavedByCrew = \"SavedByCrew\",\n SavedByPlanner = \"SavedByPlanner\",\n}\n\nexport interface IFreelanceYearDto {\n id: string;\n codeName: string;\n planningFunctionGroupId: string;\n contractTypeModel?: ContractModelType;\n dateFrom: Date;\n dateTo: Date;\n periods: FreelanceYearPeriodDto[];\n}\nexport class FreelanceYearDto extends BaseApiModelClass< IFreelanceYearDto > implements IFreelanceYearDto {\n id: string;\n codeName: string;\n planningFunctionGroupId: string;\n contractTypeModel?: ContractModelType;\n dateFrom: Date;\n dateTo: Date;\n periods: FreelanceYearPeriodDto[];\n}\n\nexport interface IFreelanceYearPeriodDto {\n dateFrom: Date;\n dateTo: Date;\n days: number;\n id: string;\n yearId: string;\n codeName: string;\n offeringsDeadlineDate: Date;\n processedDateUtc?: Date;\n modifiedAtUtc?: Date;\n planerModifiedAtUtc?: Date;\n modifiedByPrincipal?: string;\n status: FreelancePeriodStatus;\n}\nexport class FreelanceYearPeriodDto extends BaseApiModelClass< IFreelanceYearPeriodDto > implements IFreelanceYearPeriodDto {\n dateFrom: Date;\n dateTo: Date;\n readonly days: number;\n id: string;\n yearId: string;\n codeName: string;\n offeringsDeadlineDate: Date;\n processedDateUtc?: Date;\n modifiedAtUtc?: Date;\n planerModifiedAtUtc?: Date;\n modifiedByPrincipal?: string;\n status: FreelancePeriodStatus;\n}\n\nexport interface IFreelanceYearPeriodUpdateResult {\n id: string;\n modifiedAtUtc?: Date;\n planerModifiedAtUtc?: Date;\n modifiedByPrincipal?: string;\n status: FreelancePeriodStatus;\n}\nexport class FreelanceYearPeriodUpdateResult extends BaseApiModelClass< IFreelanceYearPeriodUpdateResult > implements IFreelanceYearPeriodUpdateResult {\n id: string;\n modifiedAtUtc?: Date;\n planerModifiedAtUtc?: Date;\n modifiedByPrincipal?: string;\n status: FreelancePeriodStatus;\n}\n\nexport interface IFullCheckInCheckOutModel {\n date: Date;\n personId: string;\n isCo: boolean;\n checkInDateTime?: Date;\n checkOutDateTime?: Date;\n personCode: string;\n hasCustomCheckIn: boolean;\n hasCustomCheckOut: boolean;\n}\nexport class FullCheckInCheckOutModel extends BaseApiModelClass< IFullCheckInCheckOutModel > implements IFullCheckInCheckOutModel {\n date: Date;\n personId: string;\n isCo: boolean;\n checkInDateTime?: Date;\n checkOutDateTime?: Date;\n personCode: string;\n hasCustomCheckIn: boolean;\n hasCustomCheckOut: boolean;\n}\n\nexport interface IFunctionGroupModel {\n id: string;\n name: string;\n functions: FunctionModel[];\n}\nexport class FunctionGroupModel extends BaseApiModelClass< IFunctionGroupModel > implements IFunctionGroupModel {\n id: string;\n name: string;\n functions: FunctionModel[];\n}\n\nexport interface IFunctionModel {\n id: string;\n name: string;\n functionGroupId?: string;\n planningFunctionGroupId?: string;\n sinceDate: Date;\n isNewcomer: boolean;\n newcomerExperienceDate?: Date;\n planningGroup?: string;\n planningFunctionId?: string;\n}\nexport class FunctionModel extends BaseApiModelClass< IFunctionModel > implements IFunctionModel {\n id: string;\n name: string;\n functionGroupId?: string;\n planningFunctionGroupId?: string;\n sinceDate: Date;\n isNewcomer: boolean;\n newcomerExperienceDate?: Date;\n planningGroup?: string;\n readonly planningFunctionId?: string;\n}\n\nexport enum FunctionOverruleType {\n CC = \"CC\",\n CCA_320 = \"CCA_320\",\n CCA_334 = \"CCA_334\",\n CCA_345 = \"CCA_345\",\n FO = \"FO\",\n FOA_320 = \"FOA_320\",\n FOA_330 = \"FOA_330\",\n FOA_340 = \"FOA_340\",\n FOA_350 = \"FOA_350\",\n FON_320 = \"FON_320\",\n FON_330 = \"FON_330\",\n FON_340 = \"FON_340\",\n FON_350 = \"FON_350\",\n PIC = \"PIC\",\n PICA_320 = \"PICA_320\",\n PICA_330 = \"PICA_330\",\n PICA_340 = \"PICA_340\",\n PICA_350 = \"PICA_350\",\n PICN_320 = \"PICN_320\",\n PICN_330 = \"PICN_330\",\n PICN_340 = \"PICN_340\",\n PICN_350 = \"PICN_350\",\n SC = \"SC\",\n SCA_320 = \"SCA_320\",\n SCA_334 = \"SCA_334\",\n SCA_345 = \"SCA_345\",\n}\n\nexport interface IGenDecAircraftRotation {\n items: GenDecAircraftRotationItem[];\n}\nexport class GenDecAircraftRotation extends BaseApiModelClass< IGenDecAircraftRotation > implements IGenDecAircraftRotation {\n items: GenDecAircraftRotationItem[];\n}\n\nexport interface IGenDecAircraftRotationItem {\n flightId: string;\n airlineRcd: string;\n flightNumber: number;\n departureDateTimeUtc: Date;\n departureDateTimeDiffToLt: string;\n arrivalDateTimeUtc: Date;\n arrivalDateTimeDiffToLt: string;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n outOfTheGateDateTimeUtc?: Date;\n aircraftRegistrationNumber?: string;\n originRcd: string;\n destinationRcd: string;\n aircraftTypeRcd?: string;\n isLongHaul: boolean;\n genDecInfo?: GenDecFlightInfo;\n}\nexport class GenDecAircraftRotationItem extends BaseApiModelClass< IGenDecAircraftRotationItem > implements IGenDecAircraftRotationItem {\n flightId: string;\n airlineRcd: string;\n flightNumber: number;\n departureDateTimeUtc: Date;\n departureDateTimeDiffToLt: string;\n arrivalDateTimeUtc: Date;\n arrivalDateTimeDiffToLt: string;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n outOfTheGateDateTimeUtc?: Date;\n aircraftRegistrationNumber?: string;\n originRcd: string;\n destinationRcd: string;\n aircraftTypeRcd?: string;\n isLongHaul: boolean;\n genDecInfo?: GenDecFlightInfo;\n}\n\nexport interface IGenDecConfigReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n countryTwoLetterCode: string;\n countryThreeLetterCode: string;\n countryName: string;\n airportThreeLetterCode: string;\n triggerType?: FlightTriggerType;\n isActive: boolean;\n isRequired: boolean;\n printOutNumber: number;\n method?: GenDecDeliveryMethod;\n}\nexport class GenDecConfigReportModel extends BaseApiModelClass< IGenDecConfigReportModel > implements IGenDecConfigReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n countryTwoLetterCode: string;\n countryThreeLetterCode: string;\n countryName: string;\n airportThreeLetterCode: string;\n triggerType?: FlightTriggerType;\n isActive: boolean;\n isRequired: boolean;\n printOutNumber: number;\n method?: GenDecDeliveryMethod;\n}\n\nexport interface IGenDecConfigurationDeliveryModel {\n method: GenDecDeliveryMethod;\n configuration: string;\n}\nexport class GenDecConfigurationDeliveryModel extends BaseApiModelClass< IGenDecConfigurationDeliveryModel > implements IGenDecConfigurationDeliveryModel {\n method: GenDecDeliveryMethod;\n configuration: string;\n}\n\nexport interface IGenDecConfigurationItem {\n groupNumber: number;\n triggers: FlightTriggerType[];\n deliveryMethods: GenDecConfigurationDeliveryModel[];\n}\nexport class GenDecConfigurationItem extends BaseApiModelClass< IGenDecConfigurationItem > implements IGenDecConfigurationItem {\n groupNumber: number;\n triggers: FlightTriggerType[];\n deliveryMethods: GenDecConfigurationDeliveryModel[];\n}\n\nexport interface IGenDecConfigurationModel {\n id: string;\n countryThreeLetterCode: string;\n countryTwoLetterCode: string;\n airportThreeLetterCode?: string;\n name: string;\n region?: string;\n subRegion?: string;\n intermediateRegion?: string;\n isActive: boolean;\n isRequired: boolean;\n numberOfPrintOuts: number;\n items: GenDecConfigurationItem[];\n}\nexport class GenDecConfigurationModel extends BaseApiModelClass< IGenDecConfigurationModel > implements IGenDecConfigurationModel {\n id: string;\n countryThreeLetterCode: string;\n countryTwoLetterCode: string;\n airportThreeLetterCode?: string;\n name: string;\n region?: string;\n subRegion?: string;\n intermediateRegion?: string;\n isActive: boolean;\n isRequired: boolean;\n numberOfPrintOuts: number;\n items: GenDecConfigurationItem[];\n}\n\nexport enum GenDecCrewType {\n Cabin = \"Cabin\",\n Cockpit = \"Cockpit\",\n DeadHead = \"DeadHead\",\n FFX = \"FFX\",\n Fse = \"Fse\",\n Full = \"Full\",\n None = \"None\",\n TIG = \"TIG\",\n}\n\nexport enum GenDecDeliveryMethod {\n EmailToCrew = \"EmailToCrew\",\n Manual = \"Manual\",\n PdfAttachment = \"PdfAttachment\",\n PdfAttachmentByRoute = \"PdfAttachmentByRoute\",\n}\n\nexport interface IGenDecDocumentRequest {\n flightIds?: string[];\n isPrint: boolean;\n includeEmptyPages: boolean;\n allowTemplate: boolean;\n crewTypes?: GenDecCrewType[];\n}\nexport class GenDecDocumentRequest extends BaseApiModelClass< IGenDecDocumentRequest > implements IGenDecDocumentRequest {\n flightIds?: string[];\n isPrint: boolean;\n includeEmptyPages: boolean;\n allowTemplate: boolean;\n crewTypes?: GenDecCrewType[];\n}\n\nexport interface IGenDecFlightEventStatus {\n flightId: string;\n items: GenDecFlightEventStatusItem[];\n}\nexport class GenDecFlightEventStatus extends BaseApiModelClass< IGenDecFlightEventStatus > implements IGenDecFlightEventStatus {\n flightId: string;\n items: GenDecFlightEventStatusItem[];\n}\n\nexport interface IGenDecFlightEventStatusItem {\n triggerType: FlightTriggerType;\n airportRcd: string;\n countryThreeLetterCode: string;\n eventTimeUtc?: Date;\n queueItemId?: string;\n isProcessed: boolean;\n processedAtUtc?: Date;\n failedCount: number;\n retryAtUtc?: Date;\n errorMessage?: string;\n resultStatus?: FlightQueueResultStatus;\n operationName?: string;\n ignoredMethods?: string;\n}\nexport class GenDecFlightEventStatusItem extends BaseApiModelClass< IGenDecFlightEventStatusItem > implements IGenDecFlightEventStatusItem {\n triggerType: FlightTriggerType;\n airportRcd: string;\n countryThreeLetterCode: string;\n eventTimeUtc?: Date;\n queueItemId?: string;\n isProcessed: boolean;\n processedAtUtc?: Date;\n failedCount: number;\n retryAtUtc?: Date;\n errorMessage?: string;\n resultStatus?: FlightQueueResultStatus;\n operationName?: string;\n ignoredMethods?: string;\n}\n\nexport interface IGenDecFlightInfo {\n fightId: string;\n documentId?: string;\n documentTimestamp?: Date;\n documentPrincipalId?: string;\n documentPrincipalFullName?: string;\n isAirportMissing: boolean;\n genDecRequiredOrigin: boolean;\n genDecRequiredDestination: boolean;\n printOutNumberOrigin?: number;\n printOutNumberDestination?: number;\n emailSentAt?: Date;\n emailFailedAt?: Date;\n emailFailureReason?: string;\n}\nexport class GenDecFlightInfo extends BaseApiModelClass< IGenDecFlightInfo > implements IGenDecFlightInfo {\n fightId: string;\n documentId?: string;\n documentTimestamp?: Date;\n documentPrincipalId?: string;\n documentPrincipalFullName?: string;\n isAirportMissing: boolean;\n genDecRequiredOrigin: boolean;\n genDecRequiredDestination: boolean;\n printOutNumberOrigin?: number;\n printOutNumberDestination?: number;\n emailSentAt?: Date;\n emailFailedAt?: Date;\n emailFailureReason?: string;\n}\n\nexport interface IGenDecReportData {\n reportId: string;\n}\nexport class GenDecReportData extends BaseApiModelClass< IGenDecReportData > implements IGenDecReportData {\n reportId: string;\n}\n\nexport enum Gender {\n Female = \"Female\",\n Male = \"Male\",\n None = \"None\",\n}\n\nexport interface IGroupingInfo {\n selector?: string;\n desc: boolean;\n groupInterval?: string;\n isExpanded?: boolean;\n}\nexport class GroupingInfo extends BaseApiModelClass< IGroupingInfo > implements IGroupingInfo {\n selector?: string;\n desc: boolean;\n groupInterval?: string;\n isExpanded?: boolean;\n}\n\nexport interface IHideDutyModel {\n days: PersonDaysModel[];\n hide: boolean;\n}\nexport class HideDutyModel extends BaseApiModelClass< IHideDutyModel > implements IHideDutyModel {\n days: PersonDaysModel[];\n hide: boolean;\n}\n\nexport interface IHolidayResponseItem {\n date: Date;\n displayName: string;\n weekendWeight: number;\n}\nexport class HolidayResponseItem extends BaseApiModelClass< IHolidayResponseItem > implements IHolidayResponseItem {\n date: Date;\n displayName: string;\n weekendWeight: number;\n}\n\nexport interface IHotelBookingDetailModel {\n transitionDate: string;\n transitionEmailDate: string;\n location: string;\n hotelEmail?: string;\n hotelTitle?: string;\n locationArrivalDateLt?: Date;\n locationEmailArrivalLt?: string;\n locationEmailArrivalDateLt?: string;\n locationArrivalRouteCode: string;\n locationDepartureDateLt?: Date;\n locationEmailDepartureLt?: string;\n locationEmailDepartureDateLt?: string;\n locationDepartureRouteCode: string;\n hotelDays: number;\n rooms: number;\n}\nexport class HotelBookingDetailModel extends BaseApiModelClass< IHotelBookingDetailModel > implements IHotelBookingDetailModel {\n transitionDate: string;\n transitionEmailDate: string;\n location: string;\n hotelEmail?: string;\n hotelTitle?: string;\n locationArrivalDateLt?: Date;\n locationEmailArrivalLt?: string;\n locationEmailArrivalDateLt?: string;\n locationArrivalRouteCode: string;\n locationDepartureDateLt?: Date;\n locationEmailDepartureLt?: string;\n locationEmailDepartureDateLt?: string;\n locationDepartureRouteCode: string;\n hotelDays: number;\n rooms: number;\n}\n\nexport interface IHotelBookingDetailsFilter {\n rowLimit?: number;\n year: number;\n month: number;\n location?: string;\n}\nexport class HotelBookingDetailsFilter extends BaseApiModelClass< IHotelBookingDetailsFilter > implements IHotelBookingDetailsFilter {\n rowLimit?: number;\n year: number;\n month: number;\n location?: string;\n}\n\nexport enum HotelDetailType {\n Company = \"Company\",\n Contact = \"Contact\",\n Email = \"Email\",\n Fax = \"Fax\",\n Mobile = \"Mobile\",\n Phone = \"Phone\",\n Remarks = \"Remarks\",\n}\n\nexport interface IIncorrectAttestateDto {\n courseId: string;\n firstNameError?: string;\n lastNameError?: string;\n nationalityError?: string;\n birthDateError?: string;\n placeOfBirthError?: string;\n}\nexport class IncorrectAttestateDto extends BaseApiModelClass< IIncorrectAttestateDto > implements IIncorrectAttestateDto {\n courseId: string;\n firstNameError?: string;\n lastNameError?: string;\n nationalityError?: string;\n birthDateError?: string;\n placeOfBirthError?: string;\n}\n\nexport interface IInformReserveRequestModel {\n id: string;\n doNotSendEmail: boolean;\n overrideAllowed: boolean;\n}\nexport class InformReserveRequestModel extends BaseApiModelClass< IInformReserveRequestModel > implements IInformReserveRequestModel {\n id: string;\n doNotSendEmail: boolean;\n overrideAllowed: boolean;\n}\n\nexport interface IInstructorFilterDialogModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n codeName: string;\n name: string;\n sortOrder: number;\n isForCockpit: boolean;\n isForCabin: boolean;\n isActive: boolean;\n licenses: string[];\n}\nexport class InstructorFilterDialogModel extends BaseApiModelClass< IInstructorFilterDialogModel > implements IInstructorFilterDialogModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n codeName: string;\n name: string;\n sortOrder: number;\n isForCockpit: boolean;\n isForCabin: boolean;\n isActive: boolean;\n licenses: string[];\n}\n\nexport interface IInstructorFilterDialogModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class InstructorFilterDialogModelDataSourceLoadOptions extends BaseApiModelClass< IInstructorFilterDialogModelDataSourceLoadOptions > implements IInstructorFilterDialogModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IInstructorFilterGridFilter {\n rowLimit?: number;\n}\nexport class InstructorFilterGridFilter extends BaseApiModelClass< IInstructorFilterGridFilter > implements IInstructorFilterGridFilter {\n rowLimit?: number;\n}\n\nexport interface IInstructorFilterModel {\n code: string;\n name: string;\n}\nexport class InstructorFilterModel extends BaseApiModelClass< IInstructorFilterModel > implements IInstructorFilterModel {\n code: string;\n name: string;\n}\n\nexport enum InstructorRequirements {\n EBTI = \"EBTI\",\n SeniorTre = \"SeniorTre\",\n SFE = \"SFE\",\n SFI = \"SFI\",\n TC = \"TC\",\n TRE = \"TRE\",\n TRE3y = \"TRE3y\",\n TRI = \"TRI\",\n TRIr = \"TRIr\",\n}\n\nexport interface IJeppesenButtonInfoModel {\n jobExecutionId?: string;\n jobTriggerName?: string;\n lastModifiedDateTimeUtc?: Date;\n jobTriggerStartDateTimeUtc?: Date;\n exportedFileName?: string;\n isFileExist: boolean;\n fileSize: number;\n}\nexport class JeppesenButtonInfoModel extends BaseApiModelClass< IJeppesenButtonInfoModel > implements IJeppesenButtonInfoModel {\n jobExecutionId?: string;\n jobTriggerName?: string;\n lastModifiedDateTimeUtc?: Date;\n jobTriggerStartDateTimeUtc?: Date;\n exportedFileName?: string;\n isFileExist: boolean;\n fileSize: number;\n}\n\nexport interface IJobDetailsModel {\n name: string;\n isActive: boolean;\n cronSchedule?: string;\n dateTimeSchedule?: Date;\n parameters: JobParameterDescriptionModel[];\n}\nexport class JobDetailsModel extends BaseApiModelClass< IJobDetailsModel > implements IJobDetailsModel {\n name: string;\n isActive: boolean;\n cronSchedule?: string;\n dateTimeSchedule?: Date;\n parameters: JobParameterDescriptionModel[];\n}\n\nexport interface IJobEnumModel {\n label: string;\n value: string;\n}\nexport class JobEnumModel extends BaseApiModelClass< IJobEnumModel > implements IJobEnumModel {\n label: string;\n value: string;\n}\n\nexport enum JobMisfireInstruction {\n Default = \"Default\",\n DoNothing = \"DoNothing\",\n FireAndProceed = \"FireAndProceed\",\n IgnoreMisfires = \"IgnoreMisfires\",\n}\n\nexport interface IJobParameterDescriptionModel {\n name: string;\n valueRaw?: string;\n jobValueRaw?: string;\n displayName?: string;\n description?: string;\n type: JobParameterType;\n isRequired: boolean;\n isOverrule?: boolean;\n enumValues: JobEnumModel[];\n permissionName?: string;\n}\nexport class JobParameterDescriptionModel extends BaseApiModelClass< IJobParameterDescriptionModel > implements IJobParameterDescriptionModel {\n name: string;\n valueRaw?: string;\n jobValueRaw?: string;\n displayName?: string;\n description?: string;\n type: JobParameterType;\n isRequired: boolean;\n isOverrule?: boolean;\n enumValues: JobEnumModel[];\n permissionName?: string;\n}\n\nexport interface IJobParameterModel {\n name: string;\n value?: string;\n}\nexport class JobParameterModel extends BaseApiModelClass< IJobParameterModel > implements IJobParameterModel {\n name: string;\n value?: string;\n}\n\nexport enum JobParameterType {\n Boolean = \"Boolean\",\n Date = \"Date\",\n DateTime = \"DateTime\",\n Enum = \"Enum\",\n Integer = \"Integer\",\n Multiline = \"Multiline\",\n String = \"String\",\n}\n\nexport interface IJobSaveParametersModel {\n jobName: string;\n triggerName: string;\n isActive: boolean;\n cronSchedule?: string;\n dateTimeSchedule?: Date;\n parameters?: JobParameterModel[];\n useZrhTimeZone: boolean;\n misfireLogic: JobMisfireInstruction;\n isJobSettings: boolean;\n}\nexport class JobSaveParametersModel extends BaseApiModelClass< IJobSaveParametersModel > implements IJobSaveParametersModel {\n jobName: string;\n triggerName: string;\n isActive: boolean;\n cronSchedule?: string;\n dateTimeSchedule?: Date;\n parameters?: JobParameterModel[];\n useZrhTimeZone: boolean;\n misfireLogic: JobMisfireInstruction;\n isJobSettings: boolean;\n}\n\nexport interface IJobSaveParametersResult {\n errors: string[];\n hasErrors: boolean;\n}\nexport class JobSaveParametersResult extends BaseApiModelClass< IJobSaveParametersResult > implements IJobSaveParametersResult {\n errors: string[];\n readonly hasErrors: boolean;\n}\n\nexport interface IJobStartModel {\n parameters?: JobParameterModel[];\n}\nexport class JobStartModel extends BaseApiModelClass< IJobStartModel > implements IJobStartModel {\n parameters?: JobParameterModel[];\n}\n\nexport enum JobStatus {\n Fail = \"Fail\",\n Pending = \"Pending\",\n Success = \"Success\",\n}\n\nexport interface IJobTrigerStatus {\n isExecuting: boolean;\n triggerName: string;\n}\nexport class JobTrigerStatus extends BaseApiModelClass< IJobTrigerStatus > implements IJobTrigerStatus {\n isExecuting: boolean;\n triggerName: string;\n}\n\nexport interface IJobTriggerShortInfo {\n name: string;\n isActive: boolean;\n cronSchedule?: string;\n nextRunDateTime?: Date;\n lastRunDateTime?: Date;\n status?: JobStatus;\n progressMax?: number;\n progressCurrent?: number;\n currentMessage?: string;\n dateTimeSchedule?: Date;\n useZrhTimeZone: boolean;\n misfireLogic: JobMisfireInstruction;\n}\nexport class JobTriggerShortInfo extends BaseApiModelClass< IJobTriggerShortInfo > implements IJobTriggerShortInfo {\n name: string;\n isActive: boolean;\n cronSchedule?: string;\n nextRunDateTime?: Date;\n lastRunDateTime?: Date;\n status?: JobStatus;\n progressMax?: number;\n progressCurrent?: number;\n currentMessage?: string;\n dateTimeSchedule?: Date;\n useZrhTimeZone: boolean;\n misfireLogic: JobMisfireInstruction;\n}\n\nexport interface IJsErrorModel {\n message?: string;\n source?: string;\n url?: string;\n}\nexport class JsErrorModel extends BaseApiModelClass< IJsErrorModel > implements IJsErrorModel {\n message?: string;\n source?: string;\n url?: string;\n}\n\nexport interface ILandingDuty {\n date: Date;\n aircraftTypeGroupRcd: string;\n personDuties: LandingDutyItem[];\n crewDuties: LandingDutyItem[];\n}\nexport class LandingDuty extends BaseApiModelClass< ILandingDuty > implements ILandingDuty {\n date: Date;\n aircraftTypeGroupRcd: string;\n personDuties: LandingDutyItem[];\n crewDuties: LandingDutyItem[];\n}\n\nexport interface ILandingDutyItem {\n activityRcd?: string;\n isLanding: boolean;\n isTakeoff: boolean;\n isMonitoring: boolean;\n isForecast: boolean;\n personCode?: string;\n personFirstName?: string;\n personLastName?: string;\n personId: string;\n landingType: AircraftTypeRecencyLandingType;\n flightId?: string;\n}\nexport class LandingDutyItem extends BaseApiModelClass< ILandingDutyItem > implements ILandingDutyItem {\n activityRcd?: string;\n isLanding: boolean;\n isTakeoff: boolean;\n isMonitoring: boolean;\n isForecast: boolean;\n personCode?: string;\n personFirstName?: string;\n personLastName?: string;\n personId: string;\n landingType: AircraftTypeRecencyLandingType;\n flightId?: string;\n}\n\nexport enum LandingType {\n Combined = \"Combined\",\n Easa = \"Easa\",\n Edw = \"Edw\",\n Landing = \"Landing\",\n TakeOff = \"TakeOff\",\n}\n\nexport interface ILicenseAircraftActivity {\n aircrafTypeName: string;\n aircrafTypeGroupName: string;\n activities: string[];\n functionActivities: string[];\n functionName?: string;\n activitiesAsString: string;\n}\nexport class LicenseAircraftActivity extends BaseApiModelClass< ILicenseAircraftActivity > implements ILicenseAircraftActivity {\n aircrafTypeName: string;\n aircrafTypeGroupName: string;\n activities: string[];\n functionActivities: string[];\n functionName?: string;\n readonly activitiesAsString: string;\n}\n\nexport interface ILicenseAirport {\n activityName?: string;\n airports: string[];\n}\nexport class LicenseAirport extends BaseApiModelClass< ILicenseAirport > implements ILicenseAirport {\n activityName?: string;\n airports: string[];\n}\n\nexport interface ILicenseManagementAirportActivity {\n airportFourLetterCode?: string;\n activityCode?: string;\n validDateFrom: Date;\n validDateTo?: Date;\n groupName?: string;\n}\nexport class LicenseManagementAirportActivity extends BaseApiModelClass< ILicenseManagementAirportActivity > implements ILicenseManagementAirportActivity {\n airportFourLetterCode?: string;\n activityCode?: string;\n validDateFrom: Date;\n validDateTo?: Date;\n groupName?: string;\n}\n\nexport interface ILicenseManagementDialogModel {\n id?: string;\n name: string;\n licenseId: string;\n shortName: string;\n shortNameNeutral?: string;\n visibleInRoster: boolean;\n visibleInFilter: boolean;\n sortOrder: number;\n functions: string[];\n airportActivities: LicenseManagementAirportActivity[];\n showFlightRequestWarning: boolean;\n flightRequestWarningText?: string;\n}\nexport class LicenseManagementDialogModel extends BaseApiModelClass< ILicenseManagementDialogModel > implements ILicenseManagementDialogModel {\n id?: string;\n name: string;\n licenseId: string;\n shortName: string;\n shortNameNeutral?: string;\n visibleInRoster: boolean;\n visibleInFilter: boolean;\n sortOrder: number;\n functions: string[];\n airportActivities: LicenseManagementAirportActivity[];\n showFlightRequestWarning: boolean;\n flightRequestWarningText?: string;\n}\n\nexport interface ILicenseManagementFilter {\n rowLimit?: number;\n}\nexport class LicenseManagementFilter extends BaseApiModelClass< ILicenseManagementFilter > implements ILicenseManagementFilter {\n rowLimit?: number;\n}\n\nexport interface ILicenseManagementModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n name: string;\n licenseId: string;\n shortName: string;\n shortNameNeutral: string;\n visibleInRoster: boolean;\n visibleInFilter: boolean;\n sortOrder: number;\n functions: string[];\n airportLicenses: LicenseManagementAirportActivity[];\n showFlightRequestWarning: boolean;\n flightRequestWarningText?: string;\n}\nexport class LicenseManagementModel extends BaseApiModelClass< ILicenseManagementModel > implements ILicenseManagementModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n name: string;\n licenseId: string;\n shortName: string;\n shortNameNeutral: string;\n visibleInRoster: boolean;\n visibleInFilter: boolean;\n sortOrder: number;\n functions: string[];\n airportLicenses: LicenseManagementAirportActivity[];\n showFlightRequestWarning: boolean;\n flightRequestWarningText?: string;\n}\n\nexport interface ILicenseManagementModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class LicenseManagementModelDataSourceLoadOptions extends BaseApiModelClass< ILicenseManagementModelDataSourceLoadOptions > implements ILicenseManagementModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface ILicenseManagementOptionsModel {\n airports: AirportShortInfo[];\n functionActivities: string[];\n flyingActivities: string[];\n nonFlyingActivities: string[];\n}\nexport class LicenseManagementOptionsModel extends BaseApiModelClass< ILicenseManagementOptionsModel > implements ILicenseManagementOptionsModel {\n airports: AirportShortInfo[];\n functionActivities: string[];\n flyingActivities: string[];\n nonFlyingActivities: string[];\n}\n\nexport interface ILicenseModel {\n personId: string;\n id: string;\n name: string;\n licenseId: string;\n shortName: string;\n visibleInRoster: boolean;\n isTrainee: boolean;\n sortOrder: number;\n licenseIssueDate?: Date;\n licenseExpirationDate?: Date;\n}\nexport class LicenseModel extends BaseApiModelClass< ILicenseModel > implements ILicenseModel {\n personId: string;\n id: string;\n name: string;\n licenseId: string;\n shortName: string;\n visibleInRoster: boolean;\n isTrainee: boolean;\n sortOrder: number;\n licenseIssueDate?: Date;\n licenseExpirationDate?: Date;\n}\n\nexport interface ILocalDaysModel {\n localDaysMonthPt: number;\n localDaysMonthInvalid: boolean;\n localDaysYearPt: number;\n localDaysYearMinDays: number;\n localDaysYearInvalid: boolean;\n}\nexport class LocalDaysModel extends BaseApiModelClass< ILocalDaysModel > implements ILocalDaysModel {\n localDaysMonthPt: number;\n localDaysMonthInvalid: boolean;\n localDaysYearPt: number;\n localDaysYearMinDays: number;\n localDaysYearInvalid: boolean;\n}\n\nexport interface ILocationDateTimeDiffToLt {\n locationRcd: string;\n displayDateTimeDiffToLt?: string;\n}\nexport class LocationDateTimeDiffToLt extends BaseApiModelClass< ILocationDateTimeDiffToLt > implements ILocationDateTimeDiffToLt {\n locationRcd: string;\n displayDateTimeDiffToLt?: string;\n}\n\nexport interface ILocationHotelBookingModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n transitionDate: Date;\n location: string;\n locationRoute: string;\n locationArrivalDateLt?: Date;\n locationArrivalFlightNumber: string;\n locationDepartureDateLt?: Date;\n locationDepartureFlightNumber: string;\n locationEmailArrivalLt?: string;\n locationEmailDepartureLt?: string;\n locationTimeDiff?: string;\n hotelDays: number;\n rooms: number;\n generatedBy?: string;\n generatedAtDateTimeUtc?: Date;\n}\nexport class LocationHotelBookingModel extends BaseApiModelClass< ILocationHotelBookingModel > implements ILocationHotelBookingModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n transitionDate: Date;\n location: string;\n locationRoute: string;\n locationArrivalDateLt?: Date;\n locationArrivalFlightNumber: string;\n locationDepartureDateLt?: Date;\n locationDepartureFlightNumber: string;\n locationEmailArrivalLt?: string;\n locationEmailDepartureLt?: string;\n locationTimeDiff?: string;\n hotelDays: number;\n rooms: number;\n generatedBy?: string;\n generatedAtDateTimeUtc?: Date;\n}\n\nexport interface ILocationHotelBookingModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class LocationHotelBookingModelDataSourceLoadOptions extends BaseApiModelClass< ILocationHotelBookingModelDataSourceLoadOptions > implements ILocationHotelBookingModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface ILocationInfoHotelBookingFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n}\nexport class LocationInfoHotelBookingFilter extends BaseApiModelClass< ILocationInfoHotelBookingFilter > implements ILocationInfoHotelBookingFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n}\n\nexport interface ILocationMonthHotelBookingFilter {\n rowLimit?: number;\n year: number;\n month: number;\n}\nexport class LocationMonthHotelBookingFilter extends BaseApiModelClass< ILocationMonthHotelBookingFilter > implements ILocationMonthHotelBookingFilter {\n rowLimit?: number;\n year: number;\n month: number;\n}\n\nexport enum LogbookExportType {\n Pdf = \"Pdf\",\n Xlsx = \"Xlsx\",\n}\n\nexport interface ILogbookFilter {\n date: Date;\n}\nexport class LogbookFilter extends BaseApiModelClass< ILogbookFilter > implements ILogbookFilter {\n date: Date;\n}\n\nexport interface ILogbookModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n crew: string;\n departureAirport: string;\n departureTimeUtc: Date;\n arrivalAirport: string;\n arrivalTimeUtc: Date;\n isLongHaul: boolean;\n aircraftType: string;\n aircraftRegistration: string;\n landings: number;\n flightTime: number;\n functionTimePIC: number;\n functionTimeCopilot: number;\n crewRemarks: string;\n}\nexport class LogbookModel extends BaseApiModelClass< ILogbookModel > implements ILogbookModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n crew: string;\n departureAirport: string;\n departureTimeUtc: Date;\n arrivalAirport: string;\n arrivalTimeUtc: Date;\n isLongHaul: boolean;\n aircraftType: string;\n aircraftRegistration: string;\n landings: number;\n flightTime: number;\n functionTimePIC: number;\n functionTimeCopilot: number;\n crewRemarks: string;\n}\n\nexport enum MailQueueStatus {\n Cancelled = \"Cancelled\",\n Failed = \"Failed\",\n NotSent = \"NotSent\",\n Sent = \"Sent\",\n}\n\nexport enum MailQueueType {\n AircraftNotificationsMarshalsFse = \"AircraftNotificationsMarshalsFse\",\n CabinCrewAttestationBAZL = \"CabinCrewAttestationBAZL\",\n CabinCrewAttestationCheck = \"CabinCrewAttestationCheck\",\n CabinCrewAttestationCourseComplete = \"CabinCrewAttestationCourseComplete\",\n CabinCrewAttestationCourseIncorrect = \"CabinCrewAttestationCourseIncorrect\",\n CabinCrewAttestationReminder = \"CabinCrewAttestationReminder\",\n CrewApiAlert = \"CrewApiAlert\",\n CrewApiDirect = \"CrewApiDirect\",\n CrewApiDutyChange = \"CrewApiDutyChange\",\n CrewApiManual = \"CrewApiManual\",\n CrewApiMclDelete = \"CrewApiMclDelete\",\n CrewApiMclInsert = \"CrewApiMclInsert\",\n CrewApiMclUpdate = \"CrewApiMclUpdate\",\n CrewApiPersonChange = \"CrewApiPersonChange\",\n CrewApiRelated = \"CrewApiRelated\",\n CrewDutyListReport = \"CrewDutyListReport\",\n DosimetryBag = \"DosimetryBag\",\n FreelanceTool = \"FreelanceTool\",\n GenDecDutyChange = \"GenDecDutyChange\",\n GenDecManual = \"GenDecManual\",\n GenDecPlanned = \"GenDecPlanned\",\n HotelManagement = \"HotelManagement\",\n Logbook = \"Logbook\",\n NbuAlertControllerCompleted = \"NbuAlertControllerCompleted\",\n NbuAlertControllerPast = \"NbuAlertControllerPast\",\n NbuAlertCrew = \"NbuAlertCrew\",\n PersonDayIllNotify = \"PersonDayIllNotify\",\n PersonDayUnfitNotify = \"PersonDayUnfitNotify\",\n PersonRequestReserve = \"PersonRequestReserve\",\n PersonRequestVacBlock = \"PersonRequestVacBlock\",\n PersonRequestVacData = \"PersonRequestVacData\",\n ReleaseNotification = \"ReleaseNotification\",\n SabreReminder = \"SabreReminder\",\n StandbyReportAutomatization = \"StandbyReportAutomatization\",\n SummaryCrewMissingData = \"SummaryCrewMissingData\",\n SummaryErrorsData = \"SummaryErrorsData\",\n}\n\nexport interface IMaintenanceModel {\n isMaintenanceOn: boolean;\n maintenanceMessage?: string;\n isNotifyingMaintenanceMessageOn: boolean;\n notifyingMessage?: string;\n}\nexport class MaintenanceModel extends BaseApiModelClass< IMaintenanceModel > implements IMaintenanceModel {\n isMaintenanceOn: boolean;\n maintenanceMessage?: string;\n isNotifyingMaintenanceMessageOn: boolean;\n notifyingMessage?: string;\n}\n\nexport interface IMclNotSentPeopleStatus {\n notSentPeople?: PersonMclModel[];\n endOfPlanningPeriodDate: Date;\n}\nexport class MclNotSentPeopleStatus extends BaseApiModelClass< IMclNotSentPeopleStatus > implements IMclNotSentPeopleStatus {\n notSentPeople?: PersonMclModel[];\n endOfPlanningPeriodDate: Date;\n}\n\nexport enum MealReportType {\n LH = \"LH\",\n SH = \"SH\",\n}\n\nexport interface IMedicalLicenseReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n personCode: string;\n personName?: string;\n contract?: string;\n function?: string;\n medicalStatus: number;\n visaChinaStatus: number;\n visaUsaBStatus: number;\n visaUsaCStatus: number;\n passportStatus: number;\n secondPassportStatus: number;\n backgroundCheckStatus: number;\n backgroundCheckStartDate?: Date;\n backgroundCheckEndDate?: Date;\n medicalExpireDate?: Date;\n visaChinaExpirationDate?: Date;\n visaUsaBExpirationDate?: Date;\n visaUsaCExpirationDate?: Date;\n passportExpirationDate?: Date;\n secondPassportExpirationDate?: Date;\n lineCheckExpireDate?: Date;\n latestPlanedTraineeDate?: Date;\n lineCheckStatus: number;\n medicalClearanceDate?: Date;\n isRequiredMedicalClearance: boolean;\n}\nexport class MedicalLicenseReportModel extends BaseApiModelClass< IMedicalLicenseReportModel > implements IMedicalLicenseReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n personCode: string;\n personName?: string;\n contract?: string;\n function?: string;\n medicalStatus: number;\n visaChinaStatus: number;\n visaUsaBStatus: number;\n visaUsaCStatus: number;\n passportStatus: number;\n secondPassportStatus: number;\n backgroundCheckStatus: number;\n backgroundCheckStartDate?: Date;\n backgroundCheckEndDate?: Date;\n medicalExpireDate?: Date;\n visaChinaExpirationDate?: Date;\n visaUsaBExpirationDate?: Date;\n visaUsaCExpirationDate?: Date;\n passportExpirationDate?: Date;\n secondPassportExpirationDate?: Date;\n lineCheckExpireDate?: Date;\n latestPlanedTraineeDate?: Date;\n lineCheckStatus: number;\n medicalClearanceDate?: Date;\n isRequiredMedicalClearance: boolean;\n}\n\nexport interface IMedicalLicenseReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class MedicalLicenseReportModelDataSourceLoadOptions extends BaseApiModelClass< IMedicalLicenseReportModelDataSourceLoadOptions > implements IMedicalLicenseReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IMessageHistoryModel {\n id: string;\n processingDate: Date;\n label: string;\n message: string;\n isOutDirection: boolean;\n}\nexport class MessageHistoryModel extends BaseApiModelClass< IMessageHistoryModel > implements IMessageHistoryModel {\n id: string;\n processingDate: Date;\n label: string;\n message: string;\n isOutDirection: boolean;\n}\n\nexport enum MessageLabel {\n AcarsM45 = \"AcarsM45\",\n AcarsOooi = \"AcarsOooi\",\n Aircraft = \"Aircraft\",\n AircraftMaintenance = \"AircraftMaintenance\",\n AircraftsAssignment = \"AircraftsAssignment\",\n AircraftType = \"AircraftType\",\n Airport = \"Airport\",\n AlteaDcsCatering = \"AlteaDcsCatering\",\n CrewAssignment = \"CrewAssignment\",\n CrewNotification = \"CrewNotification\",\n Error = \"Error\",\n Flight = \"Flight\",\n FlightMeal = \"FlightMeal\",\n FlightPilotStatus = \"FlightPilotStatus\",\n JeppesenCheckerTrainee = \"JeppesenCheckerTrainee\",\n JeppesenDuty = \"JeppesenDuty\",\n JeppesenError = \"JeppesenError\",\n JeppesenFlight = \"JeppesenFlight\",\n JeppesenTrip = \"JeppesenTrip\",\n LegDetail = \"LegDetail\",\n Person = \"Person\",\n PersonDay = \"PersonDay\",\n Rotation = \"Rotation\",\n SsimFlightAdded = \"SsimFlightAdded\",\n SsimFlightDeleted = \"SsimFlightDeleted\",\n SsimFlightModified = \"SsimFlightModified\",\n Unknown = \"Unknown\",\n}\n\nexport interface IMessageStatisticsItemModel {\n key: string;\n value: number;\n}\nexport class MessageStatisticsItemModel extends BaseApiModelClass< IMessageStatisticsItemModel > implements IMessageStatisticsItemModel {\n key: string;\n value: number;\n}\n\nexport interface IMessageStatisticsModel {\n messageType: string;\n statistics: MessageStatisticsItemModel[];\n directionType: DirectionType;\n}\nexport class MessageStatisticsModel extends BaseApiModelClass< IMessageStatisticsModel > implements IMessageStatisticsModel {\n messageType: string;\n statistics: MessageStatisticsItemModel[];\n directionType: DirectionType;\n}\n\nexport enum MonthlyType {\n AcceptedError = \"AcceptedError\",\n AgreementError = \"AgreementError\",\n Blank = \"Blank\",\n COU = \"COU\",\n DTY = \"DTY\",\n EasaError = \"EasaError\",\n FlightRequest = \"FlightRequest\",\n FtlError = \"FtlError\",\n GavError = \"GavError\",\n LicenseExpired = \"LicenseExpired\",\n LTO = \"LTO\",\n NAS = \"NAS\",\n OtherError = \"OtherError\",\n PersonComments = \"PersonComments\",\n Reserve = \"Reserve\",\n STO = \"STO\",\n VAC = \"VAC\",\n}\n\nexport interface IMonthlyTypeModel {\n name: string;\n value: number;\n}\nexport class MonthlyTypeModel extends BaseApiModelClass< IMonthlyTypeModel > implements IMonthlyTypeModel {\n name: string;\n value: number;\n}\n\nexport interface IMoveRotationModel {\n sourceRotationId: string;\n destinationRotationIds: string[];\n type: CrewType;\n overrideAllowed: boolean;\n}\nexport class MoveRotationModel extends BaseApiModelClass< IMoveRotationModel > implements IMoveRotationModel {\n sourceRotationId: string;\n destinationRotationIds: string[];\n type: CrewType;\n overrideAllowed: boolean;\n}\n\nexport interface IMoveSectorModel {\n sourceFlightId: string;\n destinationFlightIds: string[];\n type: CrewType;\n overrideAllowed: boolean;\n}\nexport class MoveSectorModel extends BaseApiModelClass< IMoveSectorModel > implements IMoveSectorModel {\n sourceFlightId: string;\n destinationFlightIds: string[];\n type: CrewType;\n overrideAllowed: boolean;\n}\n\nexport interface IMultiDayCommentCreateDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personDays: PersonDayDto[];\n}\nexport class MultiDayCommentCreateDto extends BaseApiModelClass< IMultiDayCommentCreateDto > implements IMultiDayCommentCreateDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personDays: PersonDayDto[];\n}\n\nexport interface INonFlightDutyInfoModel {\n title?: string;\n briefInfo?: string;\n codeName: string;\n dateTimeFromUtc?: Date;\n dateTimeToUtc?: Date;\n}\nexport class NonFlightDutyInfoModel extends BaseApiModelClass< INonFlightDutyInfoModel > implements INonFlightDutyInfoModel {\n title?: string;\n briefInfo?: string;\n codeName: string;\n dateTimeFromUtc?: Date;\n dateTimeToUtc?: Date;\n}\n\nexport interface IOffDaysModel {\n offDaysMonth: number;\n offDaysMonthInvalid: boolean;\n offDaysQuarter: number;\n offDaysQuarterMinDays: number;\n offDaysQuarterInvalid: boolean;\n offDaysYearPt: number;\n offDaysYearMinDays: number;\n offDaysYearInvalid: boolean;\n}\nexport class OffDaysModel extends BaseApiModelClass< IOffDaysModel > implements IOffDaysModel {\n offDaysMonth: number;\n offDaysMonthInvalid: boolean;\n offDaysQuarter: number;\n offDaysQuarterMinDays: number;\n offDaysQuarterInvalid: boolean;\n offDaysYearPt: number;\n offDaysYearMinDays: number;\n offDaysYearInvalid: boolean;\n}\n\nexport interface IOffDaysReportFilter {\n rowLimit?: number;\n year?: number;\n functionId?: string;\n personIds?: string[];\n}\nexport class OffDaysReportFilter extends BaseApiModelClass< IOffDaysReportFilter > implements IOffDaysReportFilter {\n rowLimit?: number;\n year?: number;\n functionId?: string;\n personIds?: string[];\n}\n\nexport interface IOffDaysReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode?: string;\n personName?: string;\n personEntryDate?: Date;\n personExitDate?: Date;\n personContract?: string;\n personFunction?: string;\n offDaysM1: number;\n offDaysM2: number;\n offDaysM3: number;\n offDaysM4: number;\n offDaysM5: number;\n offDaysM6: number;\n offDaysM7: number;\n offDaysM8: number;\n offDaysM9: number;\n offDaysM10: number;\n offDaysM11: number;\n offDaysM12: number;\n offDaysQ1: number;\n offDaysQ2: number;\n offDaysQ3: number;\n offDaysQ4: number;\n singleDaysM1: number;\n singleDaysM2: number;\n singleDaysM3: number;\n singleDaysM4: number;\n singleDaysM5: number;\n singleDaysM6: number;\n singleDaysM7: number;\n singleDaysM8: number;\n singleDaysM9: number;\n singleDaysM10: number;\n singleDaysM11: number;\n singleDaysM12: number;\n localDaysM1: number;\n localDaysM2: number;\n localDaysM3: number;\n localDaysM4: number;\n localDaysM5: number;\n localDaysM6: number;\n localDaysM7: number;\n localDaysM8: number;\n localDaysM9: number;\n localDaysM10: number;\n localDaysM11: number;\n localDaysM12: number;\n localDaysYear: number;\n offDaysYear: number;\n threeMonthNdjDays: number;\n threeMonthDjfDays: number;\n threeMonthJfmDays: number;\n threeMonthFmaDays: number;\n threeMonthMamDays: number;\n threeMonthAmjDays: number;\n threeMonthMjjDays: number;\n threeMonthJjaDays: number;\n threeMonthJasDays: number;\n threeMonthAsoDays: number;\n threeMonthSonDays: number;\n threeMonthOndDays: number;\n threeMonthNdjNextDays: number;\n threeMonthDjfNextDays: number;\n}\nexport class OffDaysReportModel extends BaseApiModelClass< IOffDaysReportModel > implements IOffDaysReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode?: string;\n personName?: string;\n personEntryDate?: Date;\n personExitDate?: Date;\n personContract?: string;\n personFunction?: string;\n offDaysM1: number;\n offDaysM2: number;\n offDaysM3: number;\n offDaysM4: number;\n offDaysM5: number;\n offDaysM6: number;\n offDaysM7: number;\n offDaysM8: number;\n offDaysM9: number;\n offDaysM10: number;\n offDaysM11: number;\n offDaysM12: number;\n offDaysQ1: number;\n offDaysQ2: number;\n offDaysQ3: number;\n offDaysQ4: number;\n singleDaysM1: number;\n singleDaysM2: number;\n singleDaysM3: number;\n singleDaysM4: number;\n singleDaysM5: number;\n singleDaysM6: number;\n singleDaysM7: number;\n singleDaysM8: number;\n singleDaysM9: number;\n singleDaysM10: number;\n singleDaysM11: number;\n singleDaysM12: number;\n readonly localDaysM1: number;\n readonly localDaysM2: number;\n readonly localDaysM3: number;\n readonly localDaysM4: number;\n readonly localDaysM5: number;\n readonly localDaysM6: number;\n readonly localDaysM7: number;\n readonly localDaysM8: number;\n readonly localDaysM9: number;\n readonly localDaysM10: number;\n readonly localDaysM11: number;\n readonly localDaysM12: number;\n readonly localDaysYear: number;\n offDaysYear: number;\n threeMonthNdjDays: number;\n threeMonthDjfDays: number;\n threeMonthJfmDays: number;\n threeMonthFmaDays: number;\n threeMonthMamDays: number;\n threeMonthAmjDays: number;\n threeMonthMjjDays: number;\n threeMonthJjaDays: number;\n threeMonthJasDays: number;\n threeMonthAsoDays: number;\n threeMonthSonDays: number;\n threeMonthOndDays: number;\n threeMonthNdjNextDays: number;\n threeMonthDjfNextDays: number;\n}\n\nexport interface IOffDaysReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class OffDaysReportModelDataSourceLoadOptions extends BaseApiModelClass< IOffDaysReportModelDataSourceLoadOptions > implements IOffDaysReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IOffLimitsDto {\n personId: string;\n ltoCountAllowedPerPeriod: number;\n ltoCountCurrent: number;\n}\nexport class OffLimitsDto extends BaseApiModelClass< IOffLimitsDto > implements IOffLimitsDto {\n personId: string;\n ltoCountAllowedPerPeriod: number;\n ltoCountCurrent: number;\n}\n\nexport interface IOperationGroup {\n principalId: string;\n principalName?: string;\n principalEmail: string;\n operations: OperationItem[];\n}\nexport class OperationGroup extends BaseApiModelClass< IOperationGroup > implements IOperationGroup {\n principalId: string;\n principalName?: string;\n principalEmail: string;\n operations: OperationItem[];\n}\n\nexport interface IOperationItem {\n operationId: string;\n operationName: string;\n operationTimestamp: string;\n operationDescription: string;\n}\nexport class OperationItem extends BaseApiModelClass< IOperationItem > implements IOperationItem {\n operationId: string;\n operationName: string;\n operationTimestamp: string;\n operationDescription: string;\n}\n\nexport interface IPageLocation {\n location?: string;\n locationName?: string;\n personId?: string;\n personCode?: string;\n date?: Date;\n groups: string[];\n isActive: boolean;\n lastActivityDate?: Date;\n}\nexport class PageLocation extends BaseApiModelClass< IPageLocation > implements IPageLocation {\n location?: string;\n locationName?: string;\n personId?: string;\n personCode?: string;\n date?: Date;\n groups: string[];\n isActive: boolean;\n lastActivityDate?: Date;\n}\n\nexport enum PartialLoadType {\n Part1_2 = \"Part1_2\",\n Part1_3 = \"Part1_3\",\n Part2_2 = \"Part2_2\",\n Part2_3 = \"Part2_3\",\n Part3_3 = \"Part3_3\",\n}\n\nexport interface IPartialLoadTypeModel {\n name: string;\n value: PartialLoadType;\n}\nexport class PartialLoadTypeModel extends BaseApiModelClass< IPartialLoadTypeModel > implements IPartialLoadTypeModel {\n name: string;\n value: PartialLoadType;\n}\n\nexport interface IPeriodValidationErrorsModel {\n id: string;\n validationErrors: string[];\n canDeviateByCrew: boolean;\n cockpitJulOctReduction: number;\n}\nexport class PeriodValidationErrorsModel extends BaseApiModelClass< IPeriodValidationErrorsModel > implements IPeriodValidationErrorsModel {\n id: string;\n validationErrors: string[];\n canDeviateByCrew: boolean;\n cockpitJulOctReduction: number;\n}\n\nexport interface IPermissionModel {\n id: number;\n codeName: string;\n description: string;\n}\nexport class PermissionModel extends BaseApiModelClass< IPermissionModel > implements IPermissionModel {\n id: number;\n codeName: string;\n description: string;\n}\n\nexport interface IPersonAfterTrainingExperience {\n isCompleted: boolean;\n a320LegsCount?: number;\n scKurs1Date?: Date;\n a345LegsCount?: number;\n scKurs2Date?: Date;\n}\nexport class PersonAfterTrainingExperience extends BaseApiModelClass< IPersonAfterTrainingExperience > implements IPersonAfterTrainingExperience {\n isCompleted: boolean;\n a320LegsCount?: number;\n scKurs1Date?: Date;\n a345LegsCount?: number;\n scKurs2Date?: Date;\n}\n\nexport interface IPersonAirbusTypeModel {\n id: string;\n name: string;\n isVisible: boolean;\n}\nexport class PersonAirbusTypeModel extends BaseApiModelClass< IPersonAirbusTypeModel > implements IPersonAirbusTypeModel {\n id: string;\n name: string;\n isVisible: boolean;\n}\n\nexport interface IPersonAircraftTypeExperienceModel {\n aircraftTypeGroupId: string;\n activityName: string;\n blockHoursSec: number;\n sectorsCount: number;\n lastFlcDate?: Date;\n afterTrainingLegsCount: number;\n trainingDate?: Date;\n isExperienced: boolean;\n isNewcomer: boolean;\n}\nexport class PersonAircraftTypeExperienceModel extends BaseApiModelClass< IPersonAircraftTypeExperienceModel > implements IPersonAircraftTypeExperienceModel {\n aircraftTypeGroupId: string;\n activityName: string;\n blockHoursSec: number;\n sectorsCount: number;\n lastFlcDate?: Date;\n afterTrainingLegsCount: number;\n trainingDate?: Date;\n isExperienced: boolean;\n isNewcomer: boolean;\n}\n\nexport interface IPersonAircraftTypeExperienceOverrule {\n personId: string;\n code?: string;\n fullName?: string;\n activityId: string;\n activityCode?: string;\n aircraftTypeGroupId: string;\n aircraftTypeGroupName?: string;\n date: Date;\n thisPeriodExperiencedSinceDate?: Date;\n isExperienced: boolean;\n sectors: number;\n blockHoursSec: number;\n timestamp?: Date;\n}\nexport class PersonAircraftTypeExperienceOverrule extends BaseApiModelClass< IPersonAircraftTypeExperienceOverrule > implements IPersonAircraftTypeExperienceOverrule {\n personId: string;\n code?: string;\n fullName?: string;\n activityId: string;\n activityCode?: string;\n aircraftTypeGroupId: string;\n aircraftTypeGroupName?: string;\n date: Date;\n thisPeriodExperiencedSinceDate?: Date;\n isExperienced: boolean;\n sectors: number;\n blockHoursSec: number;\n timestamp?: Date;\n}\n\nexport interface IPersonAircraftTypeRecencyLandingModel {\n type: AircraftTypeRecencyLandingType;\n date: Date;\n aircraftTypeGroupId: string;\n count: number;\n airport?: string;\n arrivalDateTimeUtc?: Date;\n isCauseRecency: boolean;\n isForecast: boolean;\n}\nexport class PersonAircraftTypeRecencyLandingModel extends BaseApiModelClass< IPersonAircraftTypeRecencyLandingModel > implements IPersonAircraftTypeRecencyLandingModel {\n type: AircraftTypeRecencyLandingType;\n date: Date;\n aircraftTypeGroupId: string;\n count: number;\n airport?: string;\n arrivalDateTimeUtc?: Date;\n isCauseRecency: boolean;\n isForecast: boolean;\n}\n\nexport interface IPersonAircraftTypeRecencyModel {\n aircraftTypeGroupId: string;\n recencyTillDate?: Date;\n recencyLandingTillDate?: Date;\n recencyTakeoffTillDate?: Date;\n recencyTillDateWithFuture?: Date;\n recencyLandingTillDateWithFuture?: Date;\n recencyTakeoffTillDateWithFuture?: Date;\n lastRecencyTillDate?: Date;\n lastRecencyLandingTillDate?: Date;\n lastRecencyTakeoffTillDate?: Date;\n landings?: PersonAircraftTypeRecencyLandingModel[];\n takeoffs?: PersonAircraftTypeRecencyLandingModel[];\n}\nexport class PersonAircraftTypeRecencyModel extends BaseApiModelClass< IPersonAircraftTypeRecencyModel > implements IPersonAircraftTypeRecencyModel {\n aircraftTypeGroupId: string;\n recencyTillDate?: Date;\n recencyLandingTillDate?: Date;\n recencyTakeoffTillDate?: Date;\n recencyTillDateWithFuture?: Date;\n recencyLandingTillDateWithFuture?: Date;\n recencyTakeoffTillDateWithFuture?: Date;\n lastRecencyTillDate?: Date;\n lastRecencyLandingTillDate?: Date;\n lastRecencyTakeoffTillDate?: Date;\n landings?: PersonAircraftTypeRecencyLandingModel[];\n takeoffs?: PersonAircraftTypeRecencyLandingModel[];\n}\n\nexport enum PersonAlternativeRequestDecision {\n Accept = \"Accept\",\n Decline = \"Decline\",\n}\n\nexport interface IPersonAvailableVacTypeDaysAndDeadline {\n type: PersonRequestVacType;\n options: PersonRequestVacDeadlineOption[];\n}\nexport class PersonAvailableVacTypeDaysAndDeadline extends BaseApiModelClass< IPersonAvailableVacTypeDaysAndDeadline > implements IPersonAvailableVacTypeDaysAndDeadline {\n type: PersonRequestVacType;\n options: PersonRequestVacDeadlineOption[];\n}\n\nexport interface IPersonChangeLogConfirmModel {\n id: string;\n}\nexport class PersonChangeLogConfirmModel extends BaseApiModelClass< IPersonChangeLogConfirmModel > implements IPersonChangeLogConfirmModel {\n id: string;\n}\n\nexport interface IPersonChangeLogModel {\n id: string;\n personId: string;\n date: Date;\n oldDuty: string;\n newDuty: string;\n reason: string;\n createDate: Date;\n confirmationDate?: Date;\n isConfirmed: boolean;\n}\nexport class PersonChangeLogModel extends BaseApiModelClass< IPersonChangeLogModel > implements IPersonChangeLogModel {\n id: string;\n personId: string;\n date: Date;\n oldDuty: string;\n newDuty: string;\n reason: string;\n createDate: Date;\n confirmationDate?: Date;\n isConfirmed: boolean;\n}\n\nexport interface IPersonCheckerTraineeModel {\n aircraftTypeGroupCodeName: string;\n activityCodeName: string;\n date: Date;\n checkerTraineeFunction: CheckerTraineeFunction;\n isOverrule?: boolean;\n rotationEndDate?: Date;\n}\nexport class PersonCheckerTraineeModel extends BaseApiModelClass< IPersonCheckerTraineeModel > implements IPersonCheckerTraineeModel {\n aircraftTypeGroupCodeName: string;\n activityCodeName: string;\n date: Date;\n checkerTraineeFunction: CheckerTraineeFunction;\n isOverrule?: boolean;\n rotationEndDate?: Date;\n}\n\nexport interface IPersonCommentCreateDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n validFromDate: Date;\n validToDate?: Date;\n}\nexport class PersonCommentCreateDto extends BaseApiModelClass< IPersonCommentCreateDto > implements IPersonCommentCreateDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n validFromDate: Date;\n validToDate?: Date;\n}\n\nexport interface IPersonCommentReadDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n validFromDate: Date;\n validToDate?: Date;\n commentId?: string;\n modifiedAtDateUtc?: Date;\n modifiedBy: string;\n createdAtDateUtc?: Date;\n createdBy: string;\n}\nexport class PersonCommentReadDto extends BaseApiModelClass< IPersonCommentReadDto > implements IPersonCommentReadDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n validFromDate: Date;\n validToDate?: Date;\n commentId?: string;\n modifiedAtDateUtc?: Date;\n modifiedBy: string;\n createdAtDateUtc?: Date;\n createdBy: string;\n}\n\nexport interface IPersonCommentUpdateDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n validFromDate: Date;\n validToDate?: Date;\n commentId?: string;\n}\nexport class PersonCommentUpdateDto extends BaseApiModelClass< IPersonCommentUpdateDto > implements IPersonCommentUpdateDto {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n validFromDate: Date;\n validToDate?: Date;\n commentId?: string;\n}\n\nexport interface IPersonConsecutiveMonthsDaysOffModel {\n personId: string;\n year: number;\n jfmMonths?: number;\n fmaMonths?: number;\n mamMonths?: number;\n amjMonths?: number;\n mjjMonths?: number;\n jjaMonths?: number;\n jasMonths?: number;\n asoMonths?: number;\n sonMonths?: number;\n ondMonths?: number;\n ndjMonths?: number;\n djfMonths?: number;\n jfmMonthsLimit?: number;\n fmaMonthsLimit?: number;\n mamMonthsLimit?: number;\n amjMonthsLimit?: number;\n mjjMonthsLimit?: number;\n jjaMonthsLimit?: number;\n jasMonthsLimit?: number;\n asoMonthsLimit?: number;\n sonMonthsLimit?: number;\n ondMonthsLimit?: number;\n ndjMonthsLimit?: number;\n djfMonthsLimit?: number;\n}\nexport class PersonConsecutiveMonthsDaysOffModel extends BaseApiModelClass< IPersonConsecutiveMonthsDaysOffModel > implements IPersonConsecutiveMonthsDaysOffModel {\n personId: string;\n year: number;\n jfmMonths?: number;\n fmaMonths?: number;\n mamMonths?: number;\n amjMonths?: number;\n mjjMonths?: number;\n jjaMonths?: number;\n jasMonths?: number;\n asoMonths?: number;\n sonMonths?: number;\n ondMonths?: number;\n ndjMonths?: number;\n djfMonths?: number;\n jfmMonthsLimit?: number;\n fmaMonthsLimit?: number;\n mamMonthsLimit?: number;\n amjMonthsLimit?: number;\n mjjMonthsLimit?: number;\n jjaMonthsLimit?: number;\n jasMonthsLimit?: number;\n asoMonthsLimit?: number;\n sonMonthsLimit?: number;\n ondMonthsLimit?: number;\n ndjMonthsLimit?: number;\n djfMonthsLimit?: number;\n}\n\nexport interface IPersonContractInfoModel {\n id: string;\n personId: string;\n actualContractType: string;\n actualContractPartTimePercentage?: number;\n contractType: ContractType;\n officePercentage?: number;\n}\nexport class PersonContractInfoModel extends BaseApiModelClass< IPersonContractInfoModel > implements IPersonContractInfoModel {\n id: string;\n personId: string;\n readonly actualContractType: string;\n actualContractPartTimePercentage?: number;\n contractType: ContractType;\n officePercentage?: number;\n}\n\nexport interface IPersonContractReserveLimitInfo {\n contractType: ContractType;\n contractModelType: ContractModelType;\n available: number;\n contractPartTimePercentage: number;\n dateFrom: Date;\n dateTo: Date;\n}\nexport class PersonContractReserveLimitInfo extends BaseApiModelClass< IPersonContractReserveLimitInfo > implements IPersonContractReserveLimitInfo {\n contractType: ContractType;\n contractModelType: ContractModelType;\n available: number;\n contractPartTimePercentage: number;\n dateFrom: Date;\n dateTo: Date;\n}\n\nexport interface IPersonCourseDto {\n id?: string;\n refId?: string;\n personId: string;\n personCode: string;\n status: CabinCrewAttestationStatus;\n isCourseDone: boolean;\n isDeleted: boolean;\n signatureId?: string;\n locationLatitude?: number;\n locationLongitude?: number;\n ipAddress?: string;\n firstName?: string;\n lastName?: string;\n birthDate?: Date;\n placeofBirth?: string;\n nationality?: string;\n hasAttestate?: boolean;\n}\nexport class PersonCourseDto extends BaseApiModelClass< IPersonCourseDto > implements IPersonCourseDto {\n id?: string;\n refId?: string;\n personId: string;\n personCode: string;\n status: CabinCrewAttestationStatus;\n isCourseDone: boolean;\n isDeleted: boolean;\n signatureId?: string;\n locationLatitude?: number;\n locationLongitude?: number;\n ipAddress?: string;\n firstName?: string;\n lastName?: string;\n birthDate?: Date;\n placeofBirth?: string;\n nationality?: string;\n hasAttestate?: boolean;\n}\n\nexport interface IPersonDatePopupDataModel {\n offDetails?: PersonDatePopupShadowOffDetails;\n validationErrors: DutyValidationErrorModel[];\n nonFlightDutyInfos: NonFlightDutyInfoModel[];\n flightsInfo: RotationFlightsInfoModel;\n checkerTraineeInfos: DutyTraineeCheckerPopupInfoModel[];\n dayComments: PopUpDayComment[];\n planningNotes: PopUpDayComment[];\n inProgressRequests: string[];\n approvedRequests: string[];\n rejectedRequests: string[];\n rotationComplementsInfos: PersonRotationComplementsDto[];\n planningDayInfo?: PlanningDayDto;\n}\nexport class PersonDatePopupDataModel extends BaseApiModelClass< IPersonDatePopupDataModel > implements IPersonDatePopupDataModel {\n offDetails?: PersonDatePopupShadowOffDetails;\n validationErrors: DutyValidationErrorModel[];\n nonFlightDutyInfos: NonFlightDutyInfoModel[];\n flightsInfo: RotationFlightsInfoModel;\n checkerTraineeInfos: DutyTraineeCheckerPopupInfoModel[];\n dayComments: PopUpDayComment[];\n planningNotes: PopUpDayComment[];\n inProgressRequests: string[];\n approvedRequests: string[];\n rejectedRequests: string[];\n rotationComplementsInfos: PersonRotationComplementsDto[];\n planningDayInfo?: PlanningDayDto;\n}\n\nexport interface IPersonDatePopupShadowOffDetails {\n shadowOffCategory: ShadowOffCategory;\n shadowOffCategoryDescription?: string;\n shadowOffType: ShadowOffType;\n shadowOffSource?: string;\n isShadowOffOptional?: boolean;\n}\nexport class PersonDatePopupShadowOffDetails extends BaseApiModelClass< IPersonDatePopupShadowOffDetails > implements IPersonDatePopupShadowOffDetails {\n shadowOffCategory: ShadowOffCategory;\n shadowOffCategoryDescription?: string;\n shadowOffType: ShadowOffType;\n shadowOffSource?: string;\n isShadowOffOptional?: boolean;\n}\n\nexport interface IPersonDayDto {\n personId: string;\n date: Date;\n}\nexport class PersonDayDto extends BaseApiModelClass< IPersonDayDto > implements IPersonDayDto {\n personId: string;\n date: Date;\n}\n\nexport interface IPersonDayDutyFiguresFilter {\n type: DailyDutyFiguresType;\n dateFrom: Date;\n dateTo: Date;\n personIds?: string;\n functionGroupId: string;\n functionId?: string;\n}\nexport class PersonDayDutyFiguresFilter extends BaseApiModelClass< IPersonDayDutyFiguresFilter > implements IPersonDayDutyFiguresFilter {\n type: DailyDutyFiguresType;\n dateFrom: Date;\n dateTo: Date;\n personIds?: string;\n functionGroupId: string;\n functionId?: string;\n}\n\nexport interface IPersonDayDutyFiguresModel {\n date: Date;\n totalPersonWithOutDuties: number;\n dutySummaryList?: { [key: string]: number; };\n status: PlanningGroupDayStatus;\n}\nexport class PersonDayDutyFiguresModel extends BaseApiModelClass< IPersonDayDutyFiguresModel > implements IPersonDayDutyFiguresModel {\n date: Date;\n totalPersonWithOutDuties: number;\n dutySummaryList?: { [key: string]: number; };\n status: PlanningGroupDayStatus;\n}\n\nexport interface IPersonDayExtendedAugmentedRequest {\n personDays: PersonDayDto[];\n isExtended: boolean;\n isAugmented: boolean;\n isXStar: boolean;\n}\nexport class PersonDayExtendedAugmentedRequest extends BaseApiModelClass< IPersonDayExtendedAugmentedRequest > implements IPersonDayExtendedAugmentedRequest {\n personDays: PersonDayDto[];\n isExtended: boolean;\n isAugmented: boolean;\n isXStar: boolean;\n}\n\nexport interface IPersonDayFdpAmendmentTypeRequest {\n personDays: PersonDayDto[];\n fdpAmendmentType?: FdpAmendmentType;\n}\nexport class PersonDayFdpAmendmentTypeRequest extends BaseApiModelClass< IPersonDayFdpAmendmentTypeRequest > implements IPersonDayFdpAmendmentTypeRequest {\n personDays: PersonDayDto[];\n fdpAmendmentType?: FdpAmendmentType;\n}\n\nexport interface IPersonDayLandingRequest {\n date: Date;\n personId: string;\n landings: PersonDayLandingRequestItem[];\n}\nexport class PersonDayLandingRequest extends BaseApiModelClass< IPersonDayLandingRequest > implements IPersonDayLandingRequest {\n date: Date;\n personId: string;\n landings: PersonDayLandingRequestItem[];\n}\n\nexport interface IPersonDayLandingRequestItem {\n aircraftTypeGroupId: string;\n airportRcd?: string;\n count: number;\n}\nexport class PersonDayLandingRequestItem extends BaseApiModelClass< IPersonDayLandingRequestItem > implements IPersonDayLandingRequestItem {\n aircraftTypeGroupId: string;\n airportRcd?: string;\n count: number;\n}\n\nexport interface IPersonDaysModel {\n personId: string;\n date: Date;\n}\nexport class PersonDaysModel extends BaseApiModelClass< IPersonDaysModel > implements IPersonDaysModel {\n personId: string;\n date: Date;\n}\n\nexport interface IPersonDecisionModel {\n decision: PersonAlternativeRequestDecision;\n}\nexport class PersonDecisionModel extends BaseApiModelClass< IPersonDecisionModel > implements IPersonDecisionModel {\n decision: PersonAlternativeRequestDecision;\n}\n\nexport interface IPersonDeltaFiguresModel {\n personId: string;\n date: Date;\n deltaY: number;\n deltaQ: number;\n}\nexport class PersonDeltaFiguresModel extends BaseApiModelClass< IPersonDeltaFiguresModel > implements IPersonDeltaFiguresModel {\n personId: string;\n date: Date;\n deltaY: number;\n deltaQ: number;\n}\n\nexport interface IPersonDetailsHotelBookingFilter {\n rowLimit?: number;\n transitionDate: Date;\n departureDateTimeLt: Date;\n location: string;\n locationRoute: string;\n locationTimeDiff: string;\n}\nexport class PersonDetailsHotelBookingFilter extends BaseApiModelClass< IPersonDetailsHotelBookingFilter > implements IPersonDetailsHotelBookingFilter {\n rowLimit?: number;\n transitionDate: Date;\n departureDateTimeLt: Date;\n location: string;\n locationRoute: string;\n locationTimeDiff: string;\n}\n\nexport interface IPersonDosimetryFilter {\n rowLimit?: number;\n personId: string;\n dateFrom?: Date;\n dateTo?: Date;\n}\nexport class PersonDosimetryFilter extends BaseApiModelClass< IPersonDosimetryFilter > implements IPersonDosimetryFilter {\n rowLimit?: number;\n personId: string;\n dateFrom?: Date;\n dateTo?: Date;\n}\n\nexport interface IPersonDosimetryReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personCode: string;\n lastName?: string;\n firstName?: string;\n gender?: string;\n birthDate?: Date;\n ahvNumber?: string;\n nationality?: string;\n crewId: string;\n functionName?: string;\n entryStart: Date;\n entryEnd?: Date;\n date: Date;\n flightNumber: number;\n originRcd: string;\n destinationRcd: string;\n dosimetry: number;\n dosimetryPerPeriod: number;\n dosimetryPerYear: number;\n dosimetryTotal: number;\n}\nexport class PersonDosimetryReportModel extends BaseApiModelClass< IPersonDosimetryReportModel > implements IPersonDosimetryReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personCode: string;\n lastName?: string;\n firstName?: string;\n gender?: string;\n birthDate?: Date;\n ahvNumber?: string;\n nationality?: string;\n crewId: string;\n functionName?: string;\n entryStart: Date;\n entryEnd?: Date;\n date: Date;\n flightNumber: number;\n originRcd: string;\n destinationRcd: string;\n dosimetry: number;\n dosimetryPerPeriod: number;\n dosimetryPerYear: number;\n dosimetryTotal: number;\n}\n\nexport interface IPersonDosimetryReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class PersonDosimetryReportModelDataSourceLoadOptions extends BaseApiModelClass< IPersonDosimetryReportModelDataSourceLoadOptions > implements IPersonDosimetryReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IPersonDutyPeriodModel {\n date: Date;\n personId: string;\n hasDuty: boolean;\n mainSequentialPeriodSec: number;\n mainSequentialPeriodFormatted?: string;\n additionalPeriodSec: number;\n additionalPeriodFormatted?: string;\n isLateFinish: boolean;\n isNightDuty: boolean;\n isEarlyStart: boolean;\n isRed: boolean;\n}\nexport class PersonDutyPeriodModel extends BaseApiModelClass< IPersonDutyPeriodModel > implements IPersonDutyPeriodModel {\n date: Date;\n personId: string;\n hasDuty: boolean;\n mainSequentialPeriodSec: number;\n mainSequentialPeriodFormatted?: string;\n additionalPeriodSec: number;\n additionalPeriodFormatted?: string;\n isLateFinish: boolean;\n isNightDuty: boolean;\n isEarlyStart: boolean;\n isRed: boolean;\n}\n\nexport enum PersonDutySwapType {\n ByCrewControl = \"ByCrewControl\",\n ByCrewMember = \"ByCrewMember\",\n}\n\nexport interface IPersonEntryModel {\n dateFrom: Date;\n dateTo?: Date;\n}\nexport class PersonEntryModel extends BaseApiModelClass< IPersonEntryModel > implements IPersonEntryModel {\n dateFrom: Date;\n dateTo?: Date;\n}\n\nexport interface IPersonExperienceModel {\n aircraftTypeGroupCodeName: string;\n activityCodeName: string;\n experienceStartsFrom?: Date;\n experiencedFrom?: Date;\n}\nexport class PersonExperienceModel extends BaseApiModelClass< IPersonExperienceModel > implements IPersonExperienceModel {\n aircraftTypeGroupCodeName: string;\n activityCodeName: string;\n experienceStartsFrom?: Date;\n experiencedFrom?: Date;\n}\n\nexport interface IPersonExperienceSummary {\n experiences: PersonExperienceModel[];\n checkerTrainees: PersonCheckerTraineeModel[];\n personEntries: PersonEntryModel[];\n functionOverrules: PersonPlanningFunctionOverruleInfo[];\n}\nexport class PersonExperienceSummary extends BaseApiModelClass< IPersonExperienceSummary > implements IPersonExperienceSummary {\n experiences: PersonExperienceModel[];\n checkerTrainees: PersonCheckerTraineeModel[];\n personEntries: PersonEntryModel[];\n functionOverrules: PersonPlanningFunctionOverruleInfo[];\n}\n\nexport interface IPersonFilter {\n ids?: string[];\n functionId?: string;\n functionIds?: string[];\n codes?: string[];\n referenceDate?: Date;\n referenceDateTo?: Date;\n qualificationIds?: string[];\n contractTypes?: ContractType[];\n contractFlagTypes?: ContractFlagType[];\n partialLoadType?: PartialLoadType;\n search?: string;\n searchByFullName: boolean;\n dutyFilter?: DutyFilter[];\n monthlyTypes?: MonthlyType[];\n releaseFilterTypes?: ReleaseFilterType[];\n sort: PersonSortOrder;\n order: SortOrder;\n sortBaseDate?: Date;\n functionFromDate?: Date;\n typeRatingFilters?: TypeRatingFilter[];\n instructorFilters?: string;\n aeropersMember: boolean;\n nbuCockpitRelated: boolean;\n nbuCabinRelated: boolean;\n includeInactive: boolean;\n page?: number;\n pageSize?: number;\n optInShowEfaSchedule: boolean;\n includeWithoutEmail: boolean;\n}\nexport class PersonFilter extends BaseApiModelClass< IPersonFilter > implements IPersonFilter {\n ids?: string[];\n functionId?: string;\n functionIds?: string[];\n codes?: string[];\n referenceDate?: Date;\n referenceDateTo?: Date;\n qualificationIds?: string[];\n contractTypes?: ContractType[];\n contractFlagTypes?: ContractFlagType[];\n partialLoadType?: PartialLoadType;\n search?: string;\n searchByFullName: boolean;\n dutyFilter?: DutyFilter[];\n monthlyTypes?: MonthlyType[];\n releaseFilterTypes?: ReleaseFilterType[];\n sort: PersonSortOrder;\n order: SortOrder;\n sortBaseDate?: Date;\n functionFromDate?: Date;\n typeRatingFilters?: TypeRatingFilter[];\n instructorFilters?: string;\n aeropersMember: boolean;\n nbuCockpitRelated: boolean;\n nbuCabinRelated: boolean;\n includeInactive: boolean;\n page?: number;\n pageSize?: number;\n optInShowEfaSchedule: boolean;\n includeWithoutEmail: boolean;\n}\n\nexport interface IPersonFlightOverviewModel {\n flightHoursBeforeEdwSec: number;\n flightHoursEdwShSec: number;\n flightHoursEdwLhSec: number;\n flightHoursTotalEdwSec: number;\n flightHoursTotalSec: number;\n ofcInsHoursTotalSec: number;\n}\nexport class PersonFlightOverviewModel extends BaseApiModelClass< IPersonFlightOverviewModel > implements IPersonFlightOverviewModel {\n flightHoursBeforeEdwSec: number;\n flightHoursEdwShSec: number;\n flightHoursEdwLhSec: number;\n flightHoursTotalEdwSec: number;\n flightHoursTotalSec: number;\n ofcInsHoursTotalSec: number;\n}\n\nexport interface IPersonFlightRequest {\n flightId: string;\n bidPoints: number;\n maxBidPoints?: number;\n skipLicenseWarning: boolean;\n}\nexport class PersonFlightRequest extends BaseApiModelClass< IPersonFlightRequest > implements IPersonFlightRequest {\n flightId: string;\n bidPoints: number;\n maxBidPoints?: number;\n skipLicenseWarning: boolean;\n}\n\nexport interface IPersonFreelanceContractInfo {\n dateFrom: Date;\n dateTo?: Date;\n typeModel: ContractModelType;\n contractDetails: string;\n flyingDutyPercentage?: number;\n}\nexport class PersonFreelanceContractInfo extends BaseApiModelClass< IPersonFreelanceContractInfo > implements IPersonFreelanceContractInfo {\n dateFrom: Date;\n dateTo?: Date;\n typeModel: ContractModelType;\n contractDetails: string;\n flyingDutyPercentage?: number;\n}\n\nexport interface IPersonFunctionDto {\n name?: string;\n dateFrom: Date;\n dateTo?: Date;\n functionGroupId?: string;\n planningFunctionId?: string;\n planningFunctionGroupId?: string;\n functionId: string;\n isFcm: boolean;\n isCabin: boolean;\n isGround: boolean;\n isCockpit: boolean;\n}\nexport class PersonFunctionDto extends BaseApiModelClass< IPersonFunctionDto > implements IPersonFunctionDto {\n name?: string;\n dateFrom: Date;\n dateTo?: Date;\n functionGroupId?: string;\n planningFunctionId?: string;\n planningFunctionGroupId?: string;\n functionId: string;\n readonly isFcm: boolean;\n readonly isCabin: boolean;\n readonly isGround: boolean;\n readonly isCockpit: boolean;\n}\n\nexport enum PersonGroupType {\n Cabin = \"Cabin\",\n Cockpit = \"Cockpit\",\n Ground = \"Ground\",\n None = \"None\",\n}\n\nexport interface IPersonHotelBookingDetailModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode: string;\n email?: string;\n name?: string;\n currentLocationRouteCode?: string;\n currentLocationDepartureRouteCode?: string;\n firstPassportNumber?: string;\n firstPassportExpirationDate?: Date;\n firstNationality?: string;\n secondPassportNumber?: string;\n secondPassportExpirationDate?: Date;\n secondNationality?: string;\n passportNumber?: string;\n passportExpirationDate?: Date;\n nationality?: string;\n passportExpirationEmailDate?: string;\n birthDate?: Date;\n birthEmailDate?: string;\n rank: string;\n position?: string;\n positionSortOrder: number;\n}\nexport class PersonHotelBookingDetailModel extends BaseApiModelClass< IPersonHotelBookingDetailModel > implements IPersonHotelBookingDetailModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n personCode: string;\n email?: string;\n name?: string;\n currentLocationRouteCode?: string;\n currentLocationDepartureRouteCode?: string;\n firstPassportNumber?: string;\n firstPassportExpirationDate?: Date;\n firstNationality?: string;\n secondPassportNumber?: string;\n secondPassportExpirationDate?: Date;\n secondNationality?: string;\n passportNumber?: string;\n passportExpirationDate?: Date;\n nationality?: string;\n passportExpirationEmailDate?: string;\n birthDate?: Date;\n birthEmailDate?: string;\n rank: string;\n position?: string;\n positionSortOrder: number;\n}\n\nexport interface IPersonHotelBookingDetailModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class PersonHotelBookingDetailModelDataSourceLoadOptions extends BaseApiModelClass< IPersonHotelBookingDetailModelDataSourceLoadOptions > implements IPersonHotelBookingDetailModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IPersonIdCodeModel {\n id: string;\n code: string;\n}\nexport class PersonIdCodeModel extends BaseApiModelClass< IPersonIdCodeModel > implements IPersonIdCodeModel {\n id: string;\n code: string;\n}\n\nexport interface IPersonInfoModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n id: string;\n code: string;\n lastName?: string;\n firstName?: string;\n licenseFleet?: string;\n birthDate?: Date;\n entryDate?: Date;\n function?: FunctionModel;\n experience?: ExperienceModel;\n personContract?: PersonContractInfoModel;\n personLicenses?: LicenseModel[];\n hasComments: boolean;\n hasMedicalRestriction: boolean;\n department?: string;\n}\nexport class PersonInfoModel extends BaseApiModelClass< IPersonInfoModel > implements IPersonInfoModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n id: string;\n code: string;\n lastName?: string;\n firstName?: string;\n licenseFleet?: string;\n birthDate?: Date;\n entryDate?: Date;\n function?: FunctionModel;\n experience?: ExperienceModel;\n personContract?: PersonContractInfoModel;\n personLicenses?: LicenseModel[];\n hasComments: boolean;\n hasMedicalRestriction: boolean;\n department?: string;\n}\n\nexport interface IPersonInfoModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class PersonInfoModelDataSourceLoadOptions extends BaseApiModelClass< IPersonInfoModelDataSourceLoadOptions > implements IPersonInfoModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IPersonLicenseInfo {\n id: string;\n personId: string;\n licenseId: string;\n licenseName: string;\n shortNameNeutral: string;\n expirationDate?: Date;\n dateFrom?: Date;\n dateTo?: Date;\n hardDateTo?: Date;\n isTrainee: boolean;\n isNewcomer: boolean;\n isExtension: boolean;\n isActiveSoft: boolean;\n isActiveHard: boolean;\n isAircraftRelated: boolean;\n isAirportRelated: boolean;\n sortOrder: number;\n}\nexport class PersonLicenseInfo extends BaseApiModelClass< IPersonLicenseInfo > implements IPersonLicenseInfo {\n id: string;\n personId: string;\n licenseId: string;\n licenseName: string;\n shortNameNeutral: string;\n expirationDate?: Date;\n dateFrom?: Date;\n dateTo?: Date;\n hardDateTo?: Date;\n isTrainee: boolean;\n isNewcomer: boolean;\n isExtension: boolean;\n isActiveSoft: boolean;\n isActiveHard: boolean;\n isAircraftRelated: boolean;\n isAirportRelated: boolean;\n sortOrder: number;\n}\n\nexport enum PersonLicenseStatus {\n DarkBlue = \"DarkBlue\",\n LightBlue = \"LightBlue\",\n None = \"None\",\n}\n\nexport interface IPersonLocation {\n personId: string;\n location: string;\n date: Date;\n}\nexport class PersonLocation extends BaseApiModelClass< IPersonLocation > implements IPersonLocation {\n personId: string;\n location: string;\n date: Date;\n}\n\nexport interface IPersonLookupByPhoneModel {\n code: string;\n functionId: string;\n}\nexport class PersonLookupByPhoneModel extends BaseApiModelClass< IPersonLookupByPhoneModel > implements IPersonLookupByPhoneModel {\n code: string;\n functionId: string;\n}\n\nexport interface IPersonLookupModel {\n id: string;\n code: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n searchState: SearchMatched;\n isActive: boolean;\n}\nexport class PersonLookupModel extends BaseApiModelClass< IPersonLookupModel > implements IPersonLookupModel {\n id: string;\n code: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n searchState: SearchMatched;\n isActive: boolean;\n}\n\nexport interface IPersonMclModel {\n id: string;\n code?: string;\n timestamp: Date;\n firstName?: string;\n lastName?: string;\n validationError?: string;\n function?: string;\n functionDateFrom?: Date;\n nearestDutyDate?: Date;\n nearestFlightDate?: Date;\n pendingAction?: CrewApiPersonChangeAction;\n}\nexport class PersonMclModel extends BaseApiModelClass< IPersonMclModel > implements IPersonMclModel {\n id: string;\n code?: string;\n timestamp: Date;\n firstName?: string;\n lastName?: string;\n validationError?: string;\n function?: string;\n functionDateFrom?: Date;\n nearestDutyDate?: Date;\n nearestFlightDate?: Date;\n pendingAction?: CrewApiPersonChangeAction;\n}\n\nexport interface IPersonMintLicenseInactivationInfo {\n licenseCode: string;\n dateFrom: Date;\n dateTo?: Date;\n comment?: string;\n}\nexport class PersonMintLicenseInactivationInfo extends BaseApiModelClass< IPersonMintLicenseInactivationInfo > implements IPersonMintLicenseInactivationInfo {\n licenseCode: string;\n dateFrom: Date;\n dateTo?: Date;\n comment?: string;\n}\n\nexport interface IPersonMintLicenseInfo {\n name: string;\n licenseCode: string;\n expirationDate?: Date;\n issueDate?: Date;\n deactivationDate?: Date;\n reactivationDate?: Date;\n}\nexport class PersonMintLicenseInfo extends BaseApiModelClass< IPersonMintLicenseInfo > implements IPersonMintLicenseInfo {\n name: string;\n licenseCode: string;\n expirationDate?: Date;\n issueDate?: Date;\n deactivationDate?: Date;\n reactivationDate?: Date;\n}\n\nexport interface IPersonModel {\n id: string;\n code: string;\n lastName?: string;\n firstName?: string;\n email?: string;\n phoneNumber?: string;\n phone?: string;\n phoneMobile?: string;\n phonePrivate?: string;\n phoneMobilePrivate?: string;\n birthDate?: Date;\n department?: string;\n isActive: boolean;\n functionId?: string;\n planningFunctionId?: string;\n}\nexport class PersonModel extends BaseApiModelClass< IPersonModel > implements IPersonModel {\n id: string;\n code: string;\n lastName?: string;\n firstName?: string;\n email?: string;\n phoneNumber?: string;\n phone?: string;\n phoneMobile?: string;\n phonePrivate?: string;\n phoneMobilePrivate?: string;\n birthDate?: Date;\n department?: string;\n isActive: boolean;\n functionId?: string;\n planningFunctionId?: string;\n}\n\nexport interface IPersonModifications {\n createdAtUtc: Date;\n createdBy: string;\n modifiedAtUtc?: Date;\n modifiedBy?: string;\n}\nexport class PersonModifications extends BaseApiModelClass< IPersonModifications > implements IPersonModifications {\n createdAtUtc: Date;\n createdBy: string;\n modifiedAtUtc?: Date;\n modifiedBy?: string;\n}\n\nexport interface IPersonNbuFilter {\n dateMonthStart: Date;\n personId: string;\n periodFrom?: Date;\n periodTo?: Date;\n}\nexport class PersonNbuFilter extends BaseApiModelClass< IPersonNbuFilter > implements IPersonNbuFilter {\n dateMonthStart: Date;\n personId: string;\n periodFrom?: Date;\n periodTo?: Date;\n}\n\nexport interface IPersonNbuModel {\n date: Date;\n nbuType?: PersonNbuType;\n nbuId?: string;\n nbuStartUtc?: Date;\n nbuEndUtc?: Date;\n nbuBlockOnUtc?: Date;\n nbuBhSecs?: number;\n nbuDhSecs?: number;\n nbuDescription?: string;\n duty?: string;\n checkInUtc?: Date;\n checkOutUtc?: Date;\n validationErrors?: DutyValidationErrorModel[];\n bhSecs?: number;\n bh28DSecs?: number;\n bh1YSecs?: number;\n dhSecs?: number;\n dh7DSecs?: number;\n dh14DSecs?: number;\n dh28DSecs?: number;\n dh1YSecs?: number;\n fdpSecs?: number;\n}\nexport class PersonNbuModel extends BaseApiModelClass< IPersonNbuModel > implements IPersonNbuModel {\n date: Date;\n nbuType?: PersonNbuType;\n nbuId?: string;\n nbuStartUtc?: Date;\n nbuEndUtc?: Date;\n nbuBlockOnUtc?: Date;\n nbuBhSecs?: number;\n nbuDhSecs?: number;\n nbuDescription?: string;\n duty?: string;\n checkInUtc?: Date;\n checkOutUtc?: Date;\n validationErrors?: DutyValidationErrorModel[];\n bhSecs?: number;\n bh28DSecs?: number;\n bh1YSecs?: number;\n dhSecs?: number;\n dh7DSecs?: number;\n dh14DSecs?: number;\n dh28DSecs?: number;\n dh1YSecs?: number;\n fdpSecs?: number;\n}\n\nexport interface IPersonNbuMonthModel {\n isCompleted: boolean;\n completedAtUtc?: Date;\n}\nexport class PersonNbuMonthModel extends BaseApiModelClass< IPersonNbuMonthModel > implements IPersonNbuMonthModel {\n isCompleted: boolean;\n completedAtUtc?: Date;\n}\n\nexport enum PersonNbuType {\n Flight = \"Flight\",\n Other = \"Other\",\n}\n\nexport interface IPersonNbuUpdateModel {\n id?: string;\n type: PersonNbuType;\n date: Date;\n startZrh: Date;\n endZrh: Date;\n bonZrh?: Date;\n dhSecs: number;\n bhSecs: number;\n description: string;\n}\nexport class PersonNbuUpdateModel extends BaseApiModelClass< IPersonNbuUpdateModel > implements IPersonNbuUpdateModel {\n id?: string;\n type: PersonNbuType;\n date: Date;\n startZrh: Date;\n endZrh: Date;\n bonZrh?: Date;\n dhSecs: number;\n bhSecs: number;\n description: string;\n}\n\nexport interface IPersonOffRequestCreate {\n periodDateFrom: Date;\n periodDateTo: Date;\n comment: string;\n type: PersonRequestOffType;\n}\nexport class PersonOffRequestCreate extends BaseApiModelClass< IPersonOffRequestCreate > implements IPersonOffRequestCreate {\n periodDateFrom: Date;\n periodDateTo: Date;\n comment: string;\n type: PersonRequestOffType;\n}\n\nexport interface IPersonOffRequestUpdate {\n comment: string;\n}\nexport class PersonOffRequestUpdate extends BaseApiModelClass< IPersonOffRequestUpdate > implements IPersonOffRequestUpdate {\n comment: string;\n}\n\nexport enum PersonPlanningDayType {\n Off = \"Off\",\n Rsv = \"Rsv\",\n}\n\nexport interface IPersonPlanningFunctionOverruleInfo {\n functionName: string;\n functionOverruleType: FunctionOverruleType;\n dateFrom: Date;\n dateTo?: Date;\n comment?: string;\n}\nexport class PersonPlanningFunctionOverruleInfo extends BaseApiModelClass< IPersonPlanningFunctionOverruleInfo > implements IPersonPlanningFunctionOverruleInfo {\n functionName: string;\n functionOverruleType: FunctionOverruleType;\n dateFrom: Date;\n dateTo?: Date;\n comment?: string;\n}\n\nexport interface IPersonPointsPeriodDto {\n personId: string;\n dateFrom: Date;\n dateTo: Date;\n label: string;\n}\nexport class PersonPointsPeriodDto extends BaseApiModelClass< IPersonPointsPeriodDto > implements IPersonPointsPeriodDto {\n personId: string;\n dateFrom: Date;\n dateTo: Date;\n label: string;\n}\n\nexport interface IPersonQuarterDaysOffModel {\n personId: string;\n year: number;\n quarter1?: number;\n quarter2?: number;\n quarter3?: number;\n quarter4?: number;\n quarter1Limit?: number;\n quarter2Limit?: number;\n quarter3Limit?: number;\n quarter4Limit?: number;\n}\nexport class PersonQuarterDaysOffModel extends BaseApiModelClass< IPersonQuarterDaysOffModel > implements IPersonQuarterDaysOffModel {\n personId: string;\n year: number;\n quarter1?: number;\n quarter2?: number;\n quarter3?: number;\n quarter4?: number;\n quarter1Limit?: number;\n quarter2Limit?: number;\n quarter3Limit?: number;\n quarter4Limit?: number;\n}\n\nexport interface IPersonReportFilter {\n rowLimit?: number;\n functionId?: string;\n contractTypes?: ContractType[];\n}\nexport class PersonReportFilter extends BaseApiModelClass< IPersonReportFilter > implements IPersonReportFilter {\n rowLimit?: number;\n functionId?: string;\n contractTypes?: ContractType[];\n}\n\nexport interface IPersonRequestAvailableFlightDto {\n flightBids: PersonRequestFlightBidDto[];\n date: Date;\n flightId: string;\n rotationId: string;\n flightNumber: number;\n isLongHaul: boolean;\n originRcd?: string;\n destinationRcd?: string;\n aircraftTypeRcd?: string;\n departureDateTimeUtc?: Date;\n departureTimeDiffToLt?: string;\n arrivalDateTimeUtc?: Date;\n arrivalTimeDiffToLt?: string;\n functionId: string;\n locations?: string;\n days: number;\n isFlightUnavailable: boolean;\n}\nexport class PersonRequestAvailableFlightDto extends BaseApiModelClass< IPersonRequestAvailableFlightDto > implements IPersonRequestAvailableFlightDto {\n flightBids: PersonRequestFlightBidDto[];\n date: Date;\n flightId: string;\n rotationId: string;\n flightNumber: number;\n isLongHaul: boolean;\n originRcd?: string;\n destinationRcd?: string;\n aircraftTypeRcd?: string;\n departureDateTimeUtc?: Date;\n departureTimeDiffToLt?: string;\n arrivalDateTimeUtc?: Date;\n arrivalTimeDiffToLt?: string;\n functionId: string;\n locations?: string;\n days: number;\n isFlightUnavailable: boolean;\n}\n\nexport interface IPersonRequestAvailableFlightsDto {\n availableFlights: PersonRequestAvailableFlightDto[];\n isMoreFlightAvailable: boolean;\n}\nexport class PersonRequestAvailableFlightsDto extends BaseApiModelClass< IPersonRequestAvailableFlightsDto > implements IPersonRequestAvailableFlightsDto {\n availableFlights: PersonRequestAvailableFlightDto[];\n isMoreFlightAvailable: boolean;\n}\n\nexport interface IPersonRequestBlockedDayDto {\n date: Date;\n isForCockpit: boolean;\n isForCabin: boolean;\n comment?: string;\n type: BlockedDayType;\n}\nexport class PersonRequestBlockedDayDto extends BaseApiModelClass< IPersonRequestBlockedDayDto > implements IPersonRequestBlockedDayDto {\n date: Date;\n isForCockpit: boolean;\n isForCabin: boolean;\n comment?: string;\n type: BlockedDayType;\n}\n\nexport interface IPersonRequestBlockedFlightDto {\n flightId: string;\n isForCockpit: boolean;\n isForCabin: boolean;\n comment?: string;\n}\nexport class PersonRequestBlockedFlightDto extends BaseApiModelClass< IPersonRequestBlockedFlightDto > implements IPersonRequestBlockedFlightDto {\n flightId: string;\n isForCockpit: boolean;\n isForCabin: boolean;\n comment?: string;\n}\n\nexport interface IPersonRequestBlockedFlightInfoDto {\n date: Date;\n flightId: string;\n flightNumber: number;\n isLongHaul: boolean;\n originRcd: string;\n destinationRcd: string;\n aircraftTypeRcd?: string;\n aircraftRegistrationNumber?: string;\n departureDateTimeUtc: Date;\n departureTimeDiffToLt: string;\n arrivalDateTimeUtc: Date;\n arrivalTimeDiffToLt: string;\n isForCabin: boolean;\n isForCockpit: boolean;\n comment?: string;\n}\nexport class PersonRequestBlockedFlightInfoDto extends BaseApiModelClass< IPersonRequestBlockedFlightInfoDto > implements IPersonRequestBlockedFlightInfoDto {\n date: Date;\n flightId: string;\n flightNumber: number;\n isLongHaul: boolean;\n originRcd: string;\n destinationRcd: string;\n aircraftTypeRcd?: string;\n aircraftRegistrationNumber?: string;\n departureDateTimeUtc: Date;\n departureTimeDiffToLt: string;\n arrivalDateTimeUtc: Date;\n arrivalTimeDiffToLt: string;\n isForCabin: boolean;\n isForCockpit: boolean;\n comment?: string;\n}\n\nexport interface IPersonRequestDayDto {\n date: Date;\n type?: PersonRequestDayType;\n}\nexport class PersonRequestDayDto extends BaseApiModelClass< IPersonRequestDayDto > implements IPersonRequestDayDto {\n date: Date;\n type?: PersonRequestDayType;\n}\n\nexport enum PersonRequestDayType {\n And = \"And\",\n Bnd = \"Bnd\",\n Flight = \"Flight\",\n FlightAndPos = \"FlightAndPos\",\n Lay = \"Lay\",\n Off = \"Off\",\n Pos = \"Pos\",\n RsvP = \"RsvP\",\n Vac = \"Vac\",\n}\n\nexport interface IPersonRequestDto {\n id: string;\n personId: string;\n dateFrom: Date;\n dateTo: Date;\n type: PersonRequestType;\n vacationType?: PersonRequestVacType;\n isAlternative: boolean;\n summaryStatus: PersonRequestSummaryStatus;\n crewStatus: PersonRequestSummaryStatus;\n title?: string;\n daysInfo: PersonRequestDayDto[];\n}\nexport class PersonRequestDto extends BaseApiModelClass< IPersonRequestDto > implements IPersonRequestDto {\n id: string;\n personId: string;\n dateFrom: Date;\n dateTo: Date;\n type: PersonRequestType;\n vacationType?: PersonRequestVacType;\n isAlternative: boolean;\n summaryStatus: PersonRequestSummaryStatus;\n crewStatus: PersonRequestSummaryStatus;\n title?: string;\n daysInfo: PersonRequestDayDto[];\n}\n\nexport interface IPersonRequestFlightBidDto {\n bidPoints: number;\n isMine?: boolean;\n functionId: string;\n personContractType: ContractType;\n senioritySortKey: number;\n}\nexport class PersonRequestFlightBidDto extends BaseApiModelClass< IPersonRequestFlightBidDto > implements IPersonRequestFlightBidDto {\n bidPoints: number;\n isMine?: boolean;\n functionId: string;\n personContractType: ContractType;\n senioritySortKey: number;\n}\n\nexport interface IPersonRequestFlightCreateResult {\n isValid: boolean;\n comment: string;\n requestId?: string;\n requestDto?: PersonRequestFlightWithBidsDto;\n isWarning: boolean;\n}\nexport class PersonRequestFlightCreateResult extends BaseApiModelClass< IPersonRequestFlightCreateResult > implements IPersonRequestFlightCreateResult {\n isValid: boolean;\n comment: string;\n requestId?: string;\n requestDto?: PersonRequestFlightWithBidsDto;\n isWarning: boolean;\n}\n\nexport interface IPersonRequestFlightRejectModel {\n id: string;\n comment: string;\n}\nexport class PersonRequestFlightRejectModel extends BaseApiModelClass< IPersonRequestFlightRejectModel > implements IPersonRequestFlightRejectModel {\n id: string;\n comment: string;\n}\n\nexport enum PersonRequestFlightStatus {\n Approved = \"Approved\",\n Rejected = \"Rejected\",\n RejectedByCancellation = \"RejectedByCancellation\",\n RejectedByCrew = \"RejectedByCrew\",\n RejectedByPlanning = \"RejectedByPlanning\",\n Requested = \"Requested\",\n}\n\nexport enum PersonRequestFlightType {\n LongHaul = \"LongHaul\",\n ShortHaul = \"ShortHaul\",\n}\n\nexport interface IPersonRequestFlightWithBidsDto {\n id: string;\n requestDate: Date;\n personId: string;\n functionId: string;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n flightId: string;\n flightNumber: number;\n flightDate: Date;\n originRcd: string;\n destinationRcd: string;\n departureDateTimeUtc?: Date;\n departureTimeDiffToLt?: string;\n arrivalDateTimeUtc?: Date;\n arrivalTimeDiffToLt?: string;\n commentPlanner?: string;\n isDeleted: boolean;\n personBidPoints: number;\n personMaxBidPoints?: number;\n status: PersonRequestFlightStatus;\n type: PersonRequestFlightType;\n senioritySortKey: number;\n personContractType?: ContractType;\n flightBids: PersonRequestFlightBidDto[];\n currentMaxBidPoints?: number;\n locations?: string;\n days: number;\n}\nexport class PersonRequestFlightWithBidsDto extends BaseApiModelClass< IPersonRequestFlightWithBidsDto > implements IPersonRequestFlightWithBidsDto {\n id: string;\n requestDate: Date;\n personId: string;\n functionId: string;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n flightId: string;\n flightNumber: number;\n flightDate: Date;\n originRcd: string;\n destinationRcd: string;\n departureDateTimeUtc?: Date;\n departureTimeDiffToLt?: string;\n arrivalDateTimeUtc?: Date;\n arrivalTimeDiffToLt?: string;\n commentPlanner?: string;\n isDeleted: boolean;\n personBidPoints: number;\n personMaxBidPoints?: number;\n status: PersonRequestFlightStatus;\n type: PersonRequestFlightType;\n senioritySortKey: number;\n personContractType?: ContractType;\n readonly flightBids: PersonRequestFlightBidDto[];\n currentMaxBidPoints?: number;\n locations?: string;\n days: number;\n}\n\nexport interface IPersonRequestFreelanceConfirmModel {\n freelanceYearId: string;\n freelanceYearPeriodId: string;\n isConfirmed: boolean;\n}\nexport class PersonRequestFreelanceConfirmModel extends BaseApiModelClass< IPersonRequestFreelanceConfirmModel > implements IPersonRequestFreelanceConfirmModel {\n freelanceYearId: string;\n freelanceYearPeriodId: string;\n isConfirmed: boolean;\n}\n\nexport interface IPersonRequestFreelanceCreateModel {\n type: FreelanceActivityType;\n dates: Date[];\n}\nexport class PersonRequestFreelanceCreateModel extends BaseApiModelClass< IPersonRequestFreelanceCreateModel > implements IPersonRequestFreelanceCreateModel {\n type: FreelanceActivityType;\n dates: Date[];\n}\n\nexport interface IPersonRequestFreelanceDeviateModel {\n freelanceYearId: string;\n freelanceYearPeriodId: string;\n isConfirmed: boolean;\n isDeviated: boolean;\n}\nexport class PersonRequestFreelanceDeviateModel extends BaseApiModelClass< IPersonRequestFreelanceDeviateModel > implements IPersonRequestFreelanceDeviateModel {\n freelanceYearId: string;\n freelanceYearPeriodId: string;\n isConfirmed: boolean;\n isDeviated: boolean;\n}\n\nexport interface IPersonRequestFreelanceResultModel {\n errors?: string[];\n}\nexport class PersonRequestFreelanceResultModel extends BaseApiModelClass< IPersonRequestFreelanceResultModel > implements IPersonRequestFreelanceResultModel {\n errors?: string[];\n}\n\nexport interface IPersonRequestFunctionInfoDto {\n dateFrom: Date;\n dateTo?: Date;\n functionId: string;\n planningFunctionId?: string;\n functionGroupId?: string;\n planningFunctionGroupId?: string;\n functionName: string;\n}\nexport class PersonRequestFunctionInfoDto extends BaseApiModelClass< IPersonRequestFunctionInfoDto > implements IPersonRequestFunctionInfoDto {\n dateFrom: Date;\n dateTo?: Date;\n functionId: string;\n planningFunctionId?: string;\n functionGroupId?: string;\n planningFunctionGroupId?: string;\n functionName: string;\n}\n\nexport interface IPersonRequestItemDto {\n id: string;\n dateFrom: Date;\n dateTo: Date;\n type: PersonRequestType;\n}\nexport class PersonRequestItemDto extends BaseApiModelClass< IPersonRequestItemDto > implements IPersonRequestItemDto {\n id: string;\n dateFrom: Date;\n dateTo: Date;\n type: PersonRequestType;\n}\n\nexport interface IPersonRequestOffDto {\n id: string;\n personId: string;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n createdDateAt: Date;\n periodDateFrom: Date;\n periodDateTo: Date;\n costPoints: number;\n status: PersonRequestOffStatus;\n type: PersonRequestOffType;\n commentPerson?: string;\n commentPlanner?: string;\n isDeleted: boolean;\n}\nexport class PersonRequestOffDto extends BaseApiModelClass< IPersonRequestOffDto > implements IPersonRequestOffDto {\n id: string;\n personId: string;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n createdDateAt: Date;\n periodDateFrom: Date;\n periodDateTo: Date;\n costPoints: number;\n status: PersonRequestOffStatus;\n type: PersonRequestOffType;\n commentPerson?: string;\n commentPlanner?: string;\n isDeleted: boolean;\n}\n\nexport enum PersonRequestOffStatus {\n Approved = \"Approved\",\n ManualAction = \"ManualAction\",\n Rejected = \"Rejected\",\n RequestedToApprove = \"RequestedToApprove\",\n RequestedToRemove = \"RequestedToRemove\",\n}\n\nexport enum PersonRequestOffType {\n LongTerm = \"LongTerm\",\n LongTermEvening = \"LongTermEvening\",\n ShortTerm = \"ShortTerm\",\n}\n\nexport interface IPersonRequestOffValidationResult {\n comment: string;\n isValid: boolean;\n}\nexport class PersonRequestOffValidationResult extends BaseApiModelClass< IPersonRequestOffValidationResult > implements IPersonRequestOffValidationResult {\n comment: string;\n isValid: boolean;\n}\n\nexport interface IPersonRequestPersonInfoDto {\n personId: string;\n functions: PersonRequestFunctionInfoDto[];\n unconfirmedChangeLogCount: number;\n isAeropersMember: boolean;\n optInShowAeropersSchedule: boolean;\n}\nexport class PersonRequestPersonInfoDto extends BaseApiModelClass< IPersonRequestPersonInfoDto > implements IPersonRequestPersonInfoDto {\n personId: string;\n functions: PersonRequestFunctionInfoDto[];\n unconfirmedChangeLogCount: number;\n isAeropersMember: boolean;\n optInShowAeropersSchedule: boolean;\n}\n\nexport interface IPersonRequestPointsActualBalance {\n date: Date;\n personId: string;\n grantedByContractBalance: number;\n grantedTotalBalance: number;\n usedBalance: number;\n reservedPoints: number;\n nextFlightFee: number;\n totalReservedFee: number;\n}\nexport class PersonRequestPointsActualBalance extends BaseApiModelClass< IPersonRequestPointsActualBalance > implements IPersonRequestPointsActualBalance {\n date: Date;\n personId: string;\n grantedByContractBalance: number;\n grantedTotalBalance: number;\n usedBalance: number;\n reservedPoints: number;\n nextFlightFee: number;\n totalReservedFee: number;\n}\n\nexport interface IPersonRequestPointsLogDto {\n personId: string;\n dateTime: Date;\n useType: RequestPointUseType;\n subType?: RequestPointSubType;\n periodDateFrom?: Date;\n periodDateTo?: Date;\n costPoints: number;\n availableBalance: number;\n reason?: string[];\n}\nexport class PersonRequestPointsLogDto extends BaseApiModelClass< IPersonRequestPointsLogDto > implements IPersonRequestPointsLogDto {\n personId: string;\n dateTime: Date;\n useType: RequestPointUseType;\n subType?: RequestPointSubType;\n periodDateFrom?: Date;\n periodDateTo?: Date;\n costPoints: number;\n availableBalance: number;\n reason?: string[];\n}\n\nexport interface IPersonRequestReserveAvailableDto {\n requestedRequests: number;\n availableRequests: number;\n}\nexport class PersonRequestReserveAvailableDto extends BaseApiModelClass< IPersonRequestReserveAvailableDto > implements IPersonRequestReserveAvailableDto {\n requestedRequests: number;\n availableRequests: number;\n}\n\nexport interface IPersonRequestReserveBalance {\n available: number;\n used: number;\n free: number;\n contractInfos: PersonContractReserveLimitInfo[];\n usedDutyBlocks: DutiesBlocksGroupedByMonthModel[];\n}\nexport class PersonRequestReserveBalance extends BaseApiModelClass< IPersonRequestReserveBalance > implements IPersonRequestReserveBalance {\n available: number;\n used: number;\n free: number;\n contractInfos: PersonContractReserveLimitInfo[];\n usedDutyBlocks: DutiesBlocksGroupedByMonthModel[];\n}\n\nexport interface IPersonRequestReserveCreateResult {\n requestId?: string;\n dateFrom?: Date;\n dateTo?: Date;\n isValid: boolean;\n validationMessage?: string;\n blockId: string;\n}\nexport class PersonRequestReserveCreateResult extends BaseApiModelClass< IPersonRequestReserveCreateResult > implements IPersonRequestReserveCreateResult {\n requestId?: string;\n dateFrom?: Date;\n dateTo?: Date;\n isValid: boolean;\n validationMessage?: string;\n blockId: string;\n}\n\nexport interface IPersonRequestReserveDto {\n id: string;\n reserveBlockId: string;\n personId: string;\n personCode: string;\n reserveYearId: string;\n reserveYearPeriodId: string;\n status: PersonRequestReserveStatus;\n reserveBlockDateFrom: Date;\n reserveBlockDateTo: Date;\n createdDateAt: Date;\n createdByPrincipalId: string;\n modifiedAtUtc?: Date;\n modifiedByPrincipalId?: string;\n reserveBlockRsvGroup: PersonRequestReserveGroupType;\n reserveBlockFunction: string;\n commentVisibleToCrew?: string;\n}\nexport class PersonRequestReserveDto extends BaseApiModelClass< IPersonRequestReserveDto > implements IPersonRequestReserveDto {\n id: string;\n reserveBlockId: string;\n personId: string;\n personCode: string;\n reserveYearId: string;\n reserveYearPeriodId: string;\n status: PersonRequestReserveStatus;\n reserveBlockDateFrom: Date;\n reserveBlockDateTo: Date;\n createdDateAt: Date;\n createdByPrincipalId: string;\n modifiedAtUtc?: Date;\n modifiedByPrincipalId?: string;\n reserveBlockRsvGroup: PersonRequestReserveGroupType;\n reserveBlockFunction: string;\n commentVisibleToCrew?: string;\n}\n\nexport enum PersonRequestReserveGroupType {\n A320 = \"A320\",\n A345 = \"A345\",\n}\n\nexport enum PersonRequestReserveStatus {\n Approved = \"Approved\",\n Confirmed = \"Confirmed\",\n Denied = \"Denied\",\n ManualAction = \"ManualAction\",\n Requested = \"Requested\",\n}\n\nexport enum PersonRequestSummaryStatus {\n Approved = \"Approved\",\n Deleted = \"Deleted\",\n InProgress = \"InProgress\",\n ManualAction = \"ManualAction\",\n Rejected = \"Rejected\",\n}\n\nexport enum PersonRequestType {\n Changelog = \"Changelog\",\n Flight = \"Flight\",\n LTE = \"LTE\",\n LTO = \"LTO\",\n Reserve = \"Reserve\",\n STO = \"STO\",\n Tzv = \"Tzv\",\n Vacation = \"Vacation\",\n}\n\nexport enum PersonRequestVac14DaysRuleStatus {\n IsFulfilled = \"IsFulfilled\",\n IsNotFulfilled = \"IsNotFulfilled\",\n IsNotFulfilledYetButCanBe = \"IsNotFulfilledYetButCanBe\",\n}\n\nexport interface IPersonRequestVacAlternativeCreate {\n periodDateFrom: Date;\n periodDateTo: Date;\n priority: PersonRequestVacPriority;\n ignoreValidationWarnings: boolean;\n}\nexport class PersonRequestVacAlternativeCreate extends BaseApiModelClass< IPersonRequestVacAlternativeCreate > implements IPersonRequestVacAlternativeCreate {\n periodDateFrom: Date;\n periodDateTo: Date;\n priority: PersonRequestVacPriority;\n ignoreValidationWarnings: boolean;\n}\n\nexport enum PersonRequestVacAnswer {\n PersonAvailable = \"PersonAvailable\",\n PersonNotAvailable = \"PersonNotAvailable\",\n PersonNotAvailableAtDateRange = \"PersonNotAvailableAtDateRange\",\n}\n\nexport interface IPersonRequestVacApproveModel {\n ignoreValidationWarnings: boolean;\n}\nexport class PersonRequestVacApproveModel extends BaseApiModelClass< IPersonRequestVacApproveModel > implements IPersonRequestVacApproveModel {\n ignoreValidationWarnings: boolean;\n}\n\nexport enum PersonRequestVacBlockDecision {\n Confirmed = \"Confirmed\",\n ConfirmedAlternative = \"ConfirmedAlternative\",\n Denied = \"Denied\",\n DeniedAlternative = \"DeniedAlternative\",\n None = \"None\",\n}\n\nexport interface IPersonRequestVacBlockDto {\n requestBlockId: string;\n personId: string;\n personCode: string;\n vacationYearId: string;\n vacationYearPeriodId: string;\n type: PersonRequestVacType;\n referenceDate: Date;\n blockStatus: PersonRequestVacBlockStatus;\n decision: PersonRequestVacBlockDecision;\n approvedDateFrom?: Date;\n approvedDateTo?: Date;\n approvedDays?: number;\n approvedVacDays?: number;\n minPeriodFrom: Date;\n commentVisibleToCrew?: string;\n isAutogenerated: boolean;\n personAnswer?: PersonRequestVacAnswer;\n personNotAvailableDateFrom?: Date;\n personNotAvailableDateTo?: Date;\n requests: PersonRequestVacDto[];\n}\nexport class PersonRequestVacBlockDto extends BaseApiModelClass< IPersonRequestVacBlockDto > implements IPersonRequestVacBlockDto {\n requestBlockId: string;\n personId: string;\n personCode: string;\n vacationYearId: string;\n vacationYearPeriodId: string;\n type: PersonRequestVacType;\n referenceDate: Date;\n blockStatus: PersonRequestVacBlockStatus;\n decision: PersonRequestVacBlockDecision;\n approvedDateFrom?: Date;\n approvedDateTo?: Date;\n approvedDays?: number;\n approvedVacDays?: number;\n minPeriodFrom: Date;\n commentVisibleToCrew?: string;\n isAutogenerated: boolean;\n personAnswer?: PersonRequestVacAnswer;\n personNotAvailableDateFrom?: Date;\n personNotAvailableDateTo?: Date;\n requests: PersonRequestVacDto[];\n}\n\nexport interface IPersonRequestVacBlockLogInfo {\n id: string;\n modifiedDate: Date;\n modifiedBy: string;\n requestBlockId: string;\n changedFields: ChangeField[];\n requestLogs?: PersonRequestVacLogInfo[];\n}\nexport class PersonRequestVacBlockLogInfo extends BaseApiModelClass< IPersonRequestVacBlockLogInfo > implements IPersonRequestVacBlockLogInfo {\n id: string;\n modifiedDate: Date;\n modifiedBy: string;\n requestBlockId: string;\n changedFields: ChangeField[];\n requestLogs?: PersonRequestVacLogInfo[];\n}\n\nexport interface IPersonRequestVacBlockPersonAnswerModel {\n requestBlockId: string;\n answer: PersonRequestVacAnswer;\n personNotAvailableDateFrom?: Date;\n personNotAvailableDateTo?: Date;\n}\nexport class PersonRequestVacBlockPersonAnswerModel extends BaseApiModelClass< IPersonRequestVacBlockPersonAnswerModel > implements IPersonRequestVacBlockPersonAnswerModel {\n requestBlockId: string;\n answer: PersonRequestVacAnswer;\n personNotAvailableDateFrom?: Date;\n personNotAvailableDateTo?: Date;\n}\n\nexport enum PersonRequestVacBlockStatus {\n Alternative_Offered = \"Alternative_Offered\",\n Alternative_Pending = \"Alternative_Pending\",\n Closed = \"Closed\",\n Pending = \"Pending\",\n Requested = \"Requested\",\n}\n\nexport enum PersonRequestVacCategory {\n Alternative = \"Alternative\",\n Reality = \"Reality\",\n Variant = \"Variant\",\n}\n\nexport interface IPersonRequestVacCommentDto {\n requestBlockId: string;\n comment?: string;\n isVisibleToCrewComment: boolean;\n}\nexport class PersonRequestVacCommentDto extends BaseApiModelClass< IPersonRequestVacCommentDto > implements IPersonRequestVacCommentDto {\n requestBlockId: string;\n comment?: string;\n isVisibleToCrewComment: boolean;\n}\n\nexport interface IPersonRequestVacCreate {\n requestBlockId?: string;\n periodDateFrom: Date;\n periodDateTo: Date;\n type: PersonRequestVacType;\n priority: PersonRequestVacPriority;\n days: number;\n daysMin?: number;\n commentPerson?: string;\n isRequestedFromManagement?: boolean;\n}\nexport class PersonRequestVacCreate extends BaseApiModelClass< IPersonRequestVacCreate > implements IPersonRequestVacCreate {\n requestBlockId?: string;\n periodDateFrom: Date;\n periodDateTo: Date;\n type: PersonRequestVacType;\n priority: PersonRequestVacPriority;\n days: number;\n daysMin?: number;\n commentPerson?: string;\n isRequestedFromManagement?: boolean;\n}\n\nexport interface IPersonRequestVacDeadlineOption {\n amount: number;\n days: number;\n}\nexport class PersonRequestVacDeadlineOption extends BaseApiModelClass< IPersonRequestVacDeadlineOption > implements IPersonRequestVacDeadlineOption {\n amount: number;\n days: number;\n}\n\nexport interface IPersonRequestVacDto {\n id: string;\n personId: string;\n createdDateAt: Date;\n requestBlockId: string;\n blockStatus: PersonRequestVacBlockStatus;\n decision: PersonRequestVacBlockDecision;\n vacationYearId: string;\n vacationYearPeriodId: string;\n requestedByPrincipalId: string;\n periodDateFrom: Date;\n periodDateTo: Date;\n selectedDateFrom: Date;\n selectedDateTo: Date;\n days: number;\n daysMin?: number;\n type: PersonRequestVacType;\n priority: PersonRequestVacPriority;\n status: PersonRequestVacStatus;\n category: PersonRequestVacCategory;\n isAlternative: boolean;\n isDeleted: boolean;\n approvedAtUtc?: Date;\n approvedByPrincipalId?: string;\n commentPerson?: string;\n}\nexport class PersonRequestVacDto extends BaseApiModelClass< IPersonRequestVacDto > implements IPersonRequestVacDto {\n id: string;\n personId: string;\n createdDateAt: Date;\n requestBlockId: string;\n blockStatus: PersonRequestVacBlockStatus;\n decision: PersonRequestVacBlockDecision;\n vacationYearId: string;\n vacationYearPeriodId: string;\n requestedByPrincipalId: string;\n periodDateFrom: Date;\n periodDateTo: Date;\n selectedDateFrom: Date;\n selectedDateTo: Date;\n days: number;\n daysMin?: number;\n type: PersonRequestVacType;\n priority: PersonRequestVacPriority;\n status: PersonRequestVacStatus;\n category: PersonRequestVacCategory;\n readonly isAlternative: boolean;\n isDeleted: boolean;\n approvedAtUtc?: Date;\n approvedByPrincipalId?: string;\n commentPerson?: string;\n}\n\nexport interface IPersonRequestVacInformModel {\n doNotSendEmail: boolean;\n overrideAllowed: boolean;\n}\nexport class PersonRequestVacInformModel extends BaseApiModelClass< IPersonRequestVacInformModel > implements IPersonRequestVacInformModel {\n doNotSendEmail: boolean;\n overrideAllowed: boolean;\n}\n\nexport interface IPersonRequestVacLogInfo {\n id?: string;\n requestPeriodFromDate: Date;\n requestPeriodToDate: Date;\n changedFields: ChangeField[];\n}\nexport class PersonRequestVacLogInfo extends BaseApiModelClass< IPersonRequestVacLogInfo > implements IPersonRequestVacLogInfo {\n id?: string;\n requestPeriodFromDate: Date;\n requestPeriodToDate: Date;\n changedFields: ChangeField[];\n}\n\nexport enum PersonRequestVacLogUseType {\n GrantedAeropersReduction = \"GrantedAeropersReduction\",\n GrantedBonus = \"GrantedBonus\",\n GrantedByContract = \"GrantedByContract\",\n ManualCorrection = \"ManualCorrection\",\n PreviousVacationYearBalance = \"PreviousVacationYearBalance\",\n ReductionBlockIllAccMil = \"ReductionBlockIllAccMil\",\n ReductionBlockPre = \"ReductionBlockPre\",\n ReductionBlockUbu = \"ReductionBlockUbu\",\n ReductionByTzv = \"ReductionByTzv\",\n VacAdded = \"VacAdded\",\n VacDeleted = \"VacDeleted\",\n}\n\nexport enum PersonRequestVacPriority {\n High = \"High\",\n Low = \"Low\",\n Medium = \"Medium\",\n}\n\nexport interface IPersonRequestVacRulesStatus {\n vacationYearId: string;\n is14DaysRuleFulfilled: PersonRequestVac14DaysRuleStatus;\n isHalfYearRuleFulfilled: boolean;\n}\nexport class PersonRequestVacRulesStatus extends BaseApiModelClass< IPersonRequestVacRulesStatus > implements IPersonRequestVacRulesStatus {\n vacationYearId: string;\n is14DaysRuleFulfilled: PersonRequestVac14DaysRuleStatus;\n isHalfYearRuleFulfilled: boolean;\n}\n\nexport enum PersonRequestVacStatus {\n Confirmed = \"Confirmed\",\n Denied = \"Denied\",\n ManualAction = \"ManualAction\",\n Pending = \"Pending\",\n RequestedToApprove = \"RequestedToApprove\",\n}\n\nexport enum PersonRequestVacType {\n U_UBU = \"U_UBU\",\n UBU = \"UBU\",\n UBU_C = \"UBU_C\",\n UBU_J_S = \"UBU_J_S\",\n UBU_K = \"UBU_K\",\n UBU_P = \"UBU_P\",\n VAC = \"VAC\",\n VAC_N = \"VAC_N\",\n VAC_P = \"VAC_P\",\n VAC_S = \"VAC_S\",\n VAC_V = \"VAC_V\",\n VAC_W = \"VAC_W\",\n}\n\nexport interface IPersonRequestVacTypeModel {\n type: PersonRequestVacType;\n isDisabled: boolean;\n reason: string;\n}\nexport class PersonRequestVacTypeModel extends BaseApiModelClass< IPersonRequestVacTypeModel > implements IPersonRequestVacTypeModel {\n type: PersonRequestVacType;\n isDisabled: boolean;\n reason: string;\n}\n\nexport interface IPersonRequestVacUpdate {\n requestBlockId?: string;\n periodDateFrom: Date;\n periodDateTo: Date;\n type: PersonRequestVacType;\n priority: PersonRequestVacPriority;\n days: number;\n daysMin?: number;\n commentPerson?: string;\n isRequestedFromManagement?: boolean;\n id: string;\n}\nexport class PersonRequestVacUpdate extends BaseApiModelClass< IPersonRequestVacUpdate > implements IPersonRequestVacUpdate {\n requestBlockId?: string;\n periodDateFrom: Date;\n periodDateTo: Date;\n type: PersonRequestVacType;\n priority: PersonRequestVacPriority;\n days: number;\n daysMin?: number;\n commentPerson?: string;\n isRequestedFromManagement?: boolean;\n id: string;\n}\n\nexport interface IPersonRequestVacValidationContext {\n dateFrom: Date;\n personId: string;\n vacationYearPeriodId: string;\n vacationYear: VacationYearDto;\n contextCreationErrors?: string[];\n personGroupType: PersonGroupType;\n}\nexport class PersonRequestVacValidationContext extends BaseApiModelClass< IPersonRequestVacValidationContext > implements IPersonRequestVacValidationContext {\n dateFrom: Date;\n personId: string;\n vacationYearPeriodId: string;\n vacationYear: VacationYearDto;\n contextCreationErrors?: string[];\n personGroupType: PersonGroupType;\n}\n\nexport interface IPersonRequestVacValidationResult {\n warnings: string[];\n errors: string[];\n context: PersonRequestVacValidationContext;\n}\nexport class PersonRequestVacValidationResult extends BaseApiModelClass< IPersonRequestVacValidationResult > implements IPersonRequestVacValidationResult {\n warnings: string[];\n errors: string[];\n context: PersonRequestVacValidationContext;\n}\n\nexport interface IPersonRequestVacationDaysBalanceInfo {\n personId: string;\n vacationYearId: string;\n previousVacationYearBalance: number;\n grantedByContract: number;\n grantedByContractRounded: number;\n grantedByContract80Rounded: number;\n bonus: number;\n bonusRounded: number;\n aeropersReductions: number;\n aeropersReductionsRounded: number;\n tzvReduction: number;\n tzvReductionRounded: number;\n tzvReductionComment?: string;\n correctionRounded: number;\n grantedTotal: number;\n reductions: PersonRequestVacationDaysReductionDto[];\n reductionTotal: number;\n manualCorrections: PersonRequestVacationDaysManualCorrectionDto[];\n manualCorrectionsTotal: number;\n correctedYearlyEntitlement: number;\n totalCanBeUsedThisYear: number;\n vacNCount: number;\n vacPCount: number;\n vacSCount: number;\n vacVCount: number;\n vacCount: number;\n vacWCount: number;\n vacCountTotal: number;\n reserved: number;\n plannable: number;\n daysAvailableFromThisYearOnly: number;\n available: number;\n}\nexport class PersonRequestVacationDaysBalanceInfo extends BaseApiModelClass< IPersonRequestVacationDaysBalanceInfo > implements IPersonRequestVacationDaysBalanceInfo {\n personId: string;\n vacationYearId: string;\n previousVacationYearBalance: number;\n grantedByContract: number;\n grantedByContractRounded: number;\n grantedByContract80Rounded: number;\n bonus: number;\n bonusRounded: number;\n aeropersReductions: number;\n aeropersReductionsRounded: number;\n tzvReduction: number;\n tzvReductionRounded: number;\n tzvReductionComment?: string;\n correctionRounded: number;\n grantedTotal: number;\n reductions: PersonRequestVacationDaysReductionDto[];\n reductionTotal: number;\n manualCorrections: PersonRequestVacationDaysManualCorrectionDto[];\n manualCorrectionsTotal: number;\n correctedYearlyEntitlement: number;\n totalCanBeUsedThisYear: number;\n vacNCount: number;\n vacPCount: number;\n vacSCount: number;\n vacVCount: number;\n vacCount: number;\n vacWCount: number;\n vacCountTotal: number;\n reserved: number;\n plannable: number;\n daysAvailableFromThisYearOnly: number;\n available: number;\n}\n\nexport interface IPersonRequestVacationDaysManualCorrectionDto {\n id: string;\n description: string;\n vacationDaysDelta: number;\n}\nexport class PersonRequestVacationDaysManualCorrectionDto extends BaseApiModelClass< IPersonRequestVacationDaysManualCorrectionDto > implements IPersonRequestVacationDaysManualCorrectionDto {\n id: string;\n description: string;\n vacationDaysDelta: number;\n}\n\nexport interface IPersonRequestVacationDaysReductionDto {\n reductionType: PersonRequestVacLogUseType;\n description: string;\n days: number;\n vacationDaysDelta: number;\n}\nexport class PersonRequestVacationDaysReductionDto extends BaseApiModelClass< IPersonRequestVacationDaysReductionDto > implements IPersonRequestVacationDaysReductionDto {\n reductionType: PersonRequestVacLogUseType;\n description: string;\n days: number;\n vacationDaysDelta: number;\n}\n\nexport interface IPersonRequestWishModel {\n date: Date;\n wishType: string;\n id: string;\n status: PersonWishStatus;\n}\nexport class PersonRequestWishModel extends BaseApiModelClass< IPersonRequestWishModel > implements IPersonRequestWishModel {\n date: Date;\n wishType: string;\n id: string;\n status: PersonWishStatus;\n}\n\nexport interface IPersonReserveRequestCreate {\n reserveBlockId: string;\n}\nexport class PersonReserveRequestCreate extends BaseApiModelClass< IPersonReserveRequestCreate > implements IPersonReserveRequestCreate {\n reserveBlockId: string;\n}\n\nexport interface IPersonRosterActivityModel {\n identity: string;\n fullName?: string;\n roles: string[];\n cells: RosterSelectedCell[];\n}\nexport class PersonRosterActivityModel extends BaseApiModelClass< IPersonRosterActivityModel > implements IPersonRosterActivityModel {\n identity: string;\n fullName?: string;\n roles: string[];\n cells: RosterSelectedCell[];\n}\n\nexport interface IPersonRotationComplementsDto {\n activityCodeName: string;\n flightNumbers: number[];\n rotationComplements: RotationCrewComplement[];\n}\nexport class PersonRotationComplementsDto extends BaseApiModelClass< IPersonRotationComplementsDto > implements IPersonRotationComplementsDto {\n activityCodeName: string;\n flightNumbers: number[];\n rotationComplements: RotationCrewComplement[];\n}\n\nexport interface IPersonShortInfoModel {\n id: string;\n code: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n phoneNumber?: string;\n isAeropersMember: boolean;\n optInShowAeropersSchedule: boolean;\n nbuRelated: boolean;\n}\nexport class PersonShortInfoModel extends BaseApiModelClass< IPersonShortInfoModel > implements IPersonShortInfoModel {\n id: string;\n code: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n phoneNumber?: string;\n isAeropersMember: boolean;\n optInShowAeropersSchedule: boolean;\n nbuRelated: boolean;\n}\n\nexport enum PersonSortOrder {\n Activity = \"Activity\",\n AmjMonths = \"AmjMonths\",\n AsoMonths = \"AsoMonths\",\n BlockHours = \"BlockHours\",\n Code = \"Code\",\n Default = \"Default\",\n DeltaQ = \"DeltaQ\",\n DeltaY = \"DeltaY\",\n Department = \"Department\",\n DjfMonths = \"DjfMonths\",\n DutyHours = \"DutyHours\",\n FmaMonths = \"FmaMonths\",\n FreeOfDutyDays = \"FreeOfDutyDays\",\n GroundAd1Count = \"GroundAd1Count\",\n GroundAd2Count = \"GroundAd2Count\",\n GroundAdmCount = \"GroundAdmCount\",\n GroundDisCount = \"GroundDisCount\",\n GroundECount = \"GroundECount\",\n GroundLCount = \"GroundLCount\",\n GroundNitCount = \"GroundNitCount\",\n GroundOfcCircleCount = \"GroundOfcCircleCount\",\n GroundOfcCircleHoCount = \"GroundOfcCircleHoCount\",\n GroundOfcCount = \"GroundOfcCount\",\n GroundOfcFlexCount = \"GroundOfcFlexCount\",\n GroundOfcHoCount = \"GroundOfcHoCount\",\n GroundOfcOpcCount = \"GroundOfcOpcCount\",\n GroundOffCount = \"GroundOffCount\",\n GroundOpsCount = \"GroundOpsCount\",\n GroundTrvCount = \"GroundTrvCount\",\n GroundVacCount = \"GroundVacCount\",\n HasOffDaysBlockError = \"HasOffDaysBlockError\",\n JasMonths = \"JasMonths\",\n JfmMonths = \"JfmMonths\",\n JjaMonths = \"JjaMonths\",\n LocalDays = \"LocalDays\",\n MamMonths = \"MamMonths\",\n MjjMonths = \"MjjMonths\",\n NdjMonths = \"NdjMonths\",\n None = \"None\",\n OffCount = \"OffCount\",\n OndMonths = \"OndMonths\",\n Ox2Count = \"Ox2Count\",\n Quarter1 = \"Quarter1\",\n Quarter2 = \"Quarter2\",\n Quarter3 = \"Quarter3\",\n Quarter4 = \"Quarter4\",\n SingleDays = \"SingleDays\",\n SonMonths = \"SonMonths\",\n}\n\nexport interface IPersonSummaryFiguresModel {\n personId: string;\n date: Date;\n offCount: number;\n freeOfDutyDays: number;\n hasOffDaysBlockError?: boolean;\n ox2Count: number;\n singleDays: number;\n localDaysPts: number;\n localDays: number;\n blockHoursSecs: number;\n blockHoursLimit: number;\n dutyHoursSecs: number;\n blockHours: number;\n dutyHours: number;\n groundOffCount: number;\n groundOpsCount: number;\n groundDisCount: number;\n groundNitCount: number;\n groundAdmCount: number;\n groundTrvCount: number;\n groundVacCount: number;\n groundAd1Count: number;\n groundAd2Count: number;\n groundECount: number;\n groundLCount: number;\n groundOfcCount: number;\n groundOfcOpcCount: number;\n groundOfcCircleCount: number;\n groundOfcHoCount: number;\n groundOfcCircleHoCount: number;\n groundOfcFlexCount: number;\n}\nexport class PersonSummaryFiguresModel extends BaseApiModelClass< IPersonSummaryFiguresModel > implements IPersonSummaryFiguresModel {\n personId: string;\n date: Date;\n offCount: number;\n freeOfDutyDays: number;\n hasOffDaysBlockError?: boolean;\n ox2Count: number;\n singleDays: number;\n localDaysPts: number;\n readonly localDays: number;\n blockHoursSecs: number;\n blockHoursLimit: number;\n dutyHoursSecs: number;\n readonly blockHours: number;\n readonly dutyHours: number;\n groundOffCount: number;\n groundOpsCount: number;\n groundDisCount: number;\n groundNitCount: number;\n groundAdmCount: number;\n groundTrvCount: number;\n groundVacCount: number;\n groundAd1Count: number;\n groundAd2Count: number;\n groundECount: number;\n groundLCount: number;\n groundOfcCount: number;\n groundOfcOpcCount: number;\n groundOfcCircleCount: number;\n groundOfcHoCount: number;\n groundOfcCircleHoCount: number;\n groundOfcFlexCount: number;\n}\n\nexport interface IPersonTzvContractInfo {\n dateFrom: Date;\n dateTo?: Date;\n partTimePercentage: number;\n typeModel: ContractModelType;\n typeModelDisplayName: string;\n typeModelDetails: string;\n typeModelSpecialDetails?: string;\n}\nexport class PersonTzvContractInfo extends BaseApiModelClass< IPersonTzvContractInfo > implements IPersonTzvContractInfo {\n dateFrom: Date;\n dateTo?: Date;\n partTimePercentage: number;\n typeModel: ContractModelType;\n typeModelDisplayName: string;\n typeModelDetails: string;\n typeModelSpecialDetails?: string;\n}\n\nexport interface IPersonTzvDayAssignmentModel {\n id: string;\n date: Date;\n status: PersonTzvDayAssignmentType;\n comment?: string;\n timestamp: Date;\n createdByPrincipal: string;\n}\nexport class PersonTzvDayAssignmentModel extends BaseApiModelClass< IPersonTzvDayAssignmentModel > implements IPersonTzvDayAssignmentModel {\n id: string;\n date: Date;\n status: PersonTzvDayAssignmentType;\n comment?: string;\n timestamp: Date;\n createdByPrincipal: string;\n}\n\nexport enum PersonTzvDayAssignmentType {\n Added = \"Added\",\n Removed = \"Removed\",\n}\n\nexport interface IPersonVacDetailsModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n crewId: string;\n personCode: string;\n personName?: string;\n entryDate?: Date;\n exitDate?: Date;\n personSeniority: number;\n personSeniorityRank: number;\n personFunction?: string;\n personContract?: number;\n personContractType: ContractType;\n contractModelType: ContractModelType;\n personContractTypeModel?: string;\n vacEntitlement?: number;\n licenseFleet?: string;\n fleetType?: FleetType;\n fleetGroup?: string;\n vacationYear: string;\n vacationYearId: string;\n backlogPreviousYear: number;\n entitlementActualYear: number;\n otherGranted: number;\n reductionTotal: number;\n manualCorrection: number;\n correctedEntitlement: number;\n requestedVac: number;\n pendingConfirmed: number;\n confirmedPeriod1: number;\n confirmedPeriod2: number;\n confirmed: number;\n daysRemaining?: number;\n balance: number;\n confirmedVacP: number;\n confirmedVacS: number;\n confirmedVacN: number;\n confirmedVacV: number;\n confirmedVacVac: number;\n confirmedVacW: number;\n ubuCount: number;\n illCount: number;\n accCount: number;\n milCount: number;\n preCount: number;\n m_pCount: number;\n m_uCount: number;\n tzvCount: number;\n lastVacDate?: Date;\n req14DaysRuleStatus: PersonRequestVac14DaysRuleStatus;\n cfm14DaysRuleStatus: PersonRequestVac14DaysRuleStatus;\n cfm28DaysRuleStatus: PersonRequestVac14DaysRuleStatus;\n cabinHalfYearRuleStatus: PersonRequestVac14DaysRuleStatus;\n alternativeOfferedFirstPeriodStatus: PersonRequestVac14DaysRuleStatus;\n alternativeOfferedSecondPeriodStatus: PersonRequestVac14DaysRuleStatus;\n}\nexport class PersonVacDetailsModel extends BaseApiModelClass< IPersonVacDetailsModel > implements IPersonVacDetailsModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n readonly crewId: string;\n personCode: string;\n personName?: string;\n entryDate?: Date;\n exitDate?: Date;\n personSeniority: number;\n personSeniorityRank: number;\n personFunction?: string;\n personContract?: number;\n personContractType: ContractType;\n contractModelType: ContractModelType;\n readonly personContractTypeModel?: string;\n vacEntitlement?: number;\n licenseFleet?: string;\n fleetType?: FleetType;\n readonly fleetGroup?: string;\n vacationYear: string;\n vacationYearId: string;\n backlogPreviousYear: number;\n entitlementActualYear: number;\n otherGranted: number;\n reductionTotal: number;\n manualCorrection: number;\n correctedEntitlement: number;\n requestedVac: number;\n pendingConfirmed: number;\n confirmedPeriod1: number;\n confirmedPeriod2: number;\n confirmed: number;\n daysRemaining?: number;\n balance: number;\n confirmedVacP: number;\n confirmedVacS: number;\n confirmedVacN: number;\n confirmedVacV: number;\n confirmedVacVac: number;\n confirmedVacW: number;\n ubuCount: number;\n illCount: number;\n accCount: number;\n milCount: number;\n preCount: number;\n m_pCount: number;\n m_uCount: number;\n tzvCount: number;\n lastVacDate?: Date;\n req14DaysRuleStatus: PersonRequestVac14DaysRuleStatus;\n cfm14DaysRuleStatus: PersonRequestVac14DaysRuleStatus;\n cfm28DaysRuleStatus: PersonRequestVac14DaysRuleStatus;\n cabinHalfYearRuleStatus: PersonRequestVac14DaysRuleStatus;\n alternativeOfferedFirstPeriodStatus: PersonRequestVac14DaysRuleStatus;\n alternativeOfferedSecondPeriodStatus: PersonRequestVac14DaysRuleStatus;\n}\n\nexport interface IPersonVacDetailsModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class PersonVacDetailsModelDataSourceLoadOptions extends BaseApiModelClass< IPersonVacDetailsModelDataSourceLoadOptions > implements IPersonVacDetailsModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IPersonViewLicenseModel {\n licenseName: string;\n licenseId: string;\n expiryDate?: Date;\n showExpired: boolean;\n}\nexport class PersonViewLicenseModel extends BaseApiModelClass< IPersonViewLicenseModel > implements IPersonViewLicenseModel {\n licenseName: string;\n licenseId: string;\n expiryDate?: Date;\n showExpired: boolean;\n}\n\nexport interface IPersonViewModel {\n passportExpiryDate?: Date;\n secondPassportExpiryDate?: Date;\n nationality?: string;\n secondNationality?: string;\n medicalExpiryDate?: Date;\n visaUsaBExpiryDate?: Date;\n visaUsaCExpiryDate?: Date;\n visaRUExpiryDate?: Date;\n cmcDate?: Date;\n function?: string;\n entryDateFrom?: Date;\n planningSeniorityBaseDate?: Date;\n experience320: string;\n experience340: string;\n experience350: string;\n dosimetryTotalMsv: number;\n dosimetryYearToDateMsv: number;\n showCrewScheduleLink: boolean;\n showFlightDutyTimeRecord: boolean;\n optInShowAeropersSchedule: boolean;\n licenses: PersonViewLicenseModel[];\n qualifications: PersonViewLicenseModel[];\n seniorityRank: number;\n seniorityRankMax: number;\n backgroundCheckDate?: Date;\n}\nexport class PersonViewModel extends BaseApiModelClass< IPersonViewModel > implements IPersonViewModel {\n passportExpiryDate?: Date;\n secondPassportExpiryDate?: Date;\n nationality?: string;\n secondNationality?: string;\n medicalExpiryDate?: Date;\n visaUsaBExpiryDate?: Date;\n visaUsaCExpiryDate?: Date;\n visaRUExpiryDate?: Date;\n cmcDate?: Date;\n function?: string;\n entryDateFrom?: Date;\n planningSeniorityBaseDate?: Date;\n experience320: string;\n experience340: string;\n experience350: string;\n dosimetryTotalMsv: number;\n dosimetryYearToDateMsv: number;\n showCrewScheduleLink: boolean;\n showFlightDutyTimeRecord: boolean;\n optInShowAeropersSchedule: boolean;\n licenses: PersonViewLicenseModel[];\n qualifications: PersonViewLicenseModel[];\n seniorityRank: number;\n seniorityRankMax: number;\n backgroundCheckDate?: Date;\n}\n\nexport interface IPersonWishCreateModel {\n wishTypeId: string;\n}\nexport class PersonWishCreateModel extends BaseApiModelClass< IPersonWishCreateModel > implements IPersonWishCreateModel {\n wishTypeId: string;\n}\n\nexport enum PersonWishStatus {\n Approved = \"Approved\",\n Complete = \"Complete\",\n Pending = \"Pending\",\n Rejected = \"Rejected\",\n}\n\nexport interface IPlannedSimulationInfo {\n memberType: SimulationMemberType;\n personCode: string;\n personId: string;\n lpl4PersonCode?: string;\n}\nexport class PlannedSimulationInfo extends BaseApiModelClass< IPlannedSimulationInfo > implements IPlannedSimulationInfo {\n memberType: SimulationMemberType;\n personCode: string;\n personId: string;\n lpl4PersonCode?: string;\n}\n\nexport interface IPlannedSimulationModel {\n aircraftType: SimulationAircraftType;\n simulationType: SimulationType;\n startDateUtc: Date;\n endDateUtc: Date;\n plannedSimulations: PlannedSimulationInfo[];\n airportRcd?: string;\n ebtModuleType?: EbtModuleType;\n}\nexport class PlannedSimulationModel extends BaseApiModelClass< IPlannedSimulationModel > implements IPlannedSimulationModel {\n aircraftType: SimulationAircraftType;\n simulationType: SimulationType;\n startDateUtc: Date;\n endDateUtc: Date;\n plannedSimulations: PlannedSimulationInfo[];\n airportRcd?: string;\n ebtModuleType?: EbtModuleType;\n}\n\nexport interface IPlannedTrainingReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n flightDate?: Date;\n checkerPersonId?: string;\n checkerPersonDisplayName?: string;\n checkerPersonCode?: string;\n traineePersonId: string;\n traineePersonDisplayName?: string;\n traineePersonCode?: string;\n traineePersonContractType?: string;\n traineePersonFunction?: string;\n flightNumber: string;\n flightLegs?: string;\n aircraftTypeGroupDisplayName?: string;\n function: CheckerTraineeFunction;\n functionDisplayName: string;\n}\nexport class PlannedTrainingReportModel extends BaseApiModelClass< IPlannedTrainingReportModel > implements IPlannedTrainingReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n flightDate?: Date;\n checkerPersonId?: string;\n checkerPersonDisplayName?: string;\n checkerPersonCode?: string;\n traineePersonId: string;\n traineePersonDisplayName?: string;\n traineePersonCode?: string;\n traineePersonContractType?: string;\n traineePersonFunction?: string;\n flightNumber: string;\n flightLegs?: string;\n aircraftTypeGroupDisplayName?: string;\n function: CheckerTraineeFunction;\n readonly functionDisplayName: string;\n}\n\nexport interface IPlannedTrainingReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class PlannedTrainingReportModelDataSourceLoadOptions extends BaseApiModelClass< IPlannedTrainingReportModelDataSourceLoadOptions > implements IPlannedTrainingReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IPlannedTrainingsReportFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n}\nexport class PlannedTrainingsReportFilter extends BaseApiModelClass< IPlannedTrainingsReportFilter > implements IPlannedTrainingsReportFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n}\n\nexport interface IPlanningDayDto {\n id: string;\n date: Date;\n personId: string;\n type: PersonPlanningDayType;\n createdAtUtc: Date;\n createdByPrincipalIdentity?: string;\n operationId: string;\n activityRcd: string;\n dateTimeFromUtc?: Date;\n dateTimeToUtc?: Date;\n dateTimeFromDiffToLt?: string;\n dateTimeToDiffToLt?: string;\n customDayTitle?: string;\n title?: string;\n dutyTimeSec: number;\n blockTimeSec: number;\n oldText?: string;\n}\nexport class PlanningDayDto extends BaseApiModelClass< IPlanningDayDto > implements IPlanningDayDto {\n id: string;\n date: Date;\n personId: string;\n type: PersonPlanningDayType;\n createdAtUtc: Date;\n createdByPrincipalIdentity?: string;\n operationId: string;\n activityRcd: string;\n dateTimeFromUtc?: Date;\n dateTimeToUtc?: Date;\n dateTimeFromDiffToLt?: string;\n dateTimeToDiffToLt?: string;\n customDayTitle?: string;\n title?: string;\n dutyTimeSec: number;\n blockTimeSec: number;\n oldText?: string;\n}\n\nexport enum PlanningGroupDayStatus {\n None = \"None\",\n Planned = \"Planned\",\n}\n\nexport interface IPlanningGroupDayStatusRequest {\n date: Date;\n functionGroupId: string;\n functionId?: string;\n status: PlanningGroupDayStatus;\n}\nexport class PlanningGroupDayStatusRequest extends BaseApiModelClass< IPlanningGroupDayStatusRequest > implements IPlanningGroupDayStatusRequest {\n date: Date;\n functionGroupId: string;\n functionId?: string;\n status: PlanningGroupDayStatus;\n}\n\nexport interface IPlanningGroupDto {\n name?: string;\n functionGroupId: string;\n functionId?: string;\n functionName?: string;\n functionGroupName?: string;\n releaseLevel: ReleaseLevel;\n}\nexport class PlanningGroupDto extends BaseApiModelClass< IPlanningGroupDto > implements IPlanningGroupDto {\n name?: string;\n functionGroupId: string;\n functionId?: string;\n functionName?: string;\n functionGroupName?: string;\n releaseLevel: ReleaseLevel;\n}\n\nexport interface IPlanningPeriodConfigRequest {\n hidePlanningPeriod: boolean;\n functionGroupId: string;\n functionId?: string;\n}\nexport class PlanningPeriodConfigRequest extends BaseApiModelClass< IPlanningPeriodConfigRequest > implements IPlanningPeriodConfigRequest {\n hidePlanningPeriod: boolean;\n functionGroupId: string;\n functionId?: string;\n}\n\nexport interface IPlanningPeriodDto {\n id: string;\n periodFrom: Date;\n periodTo: Date;\n functionGroupId: string;\n functionId?: string;\n}\nexport class PlanningPeriodDto extends BaseApiModelClass< IPlanningPeriodDto > implements IPlanningPeriodDto {\n id: string;\n periodFrom: Date;\n periodTo: Date;\n functionGroupId: string;\n functionId?: string;\n}\n\nexport interface IPointsManualCorrectionModel {\n referenceDate: Date;\n points: number;\n reason: string;\n}\nexport class PointsManualCorrectionModel extends BaseApiModelClass< IPointsManualCorrectionModel > implements IPointsManualCorrectionModel {\n referenceDate: Date;\n points: number;\n reason: string;\n}\n\nexport interface IPopUpDayComment {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n id?: string;\n date: Date;\n createdOnDateUtc: Date;\n createdBy: string;\n category: CommentCategory;\n}\nexport class PopUpDayComment extends BaseApiModelClass< IPopUpDayComment > implements IPopUpDayComment {\n text: string;\n isStandby: boolean;\n isVisibleByCrewMember: boolean;\n isVisibleToAllUsers: boolean;\n personId: string;\n id?: string;\n date: Date;\n createdOnDateUtc: Date;\n createdBy: string;\n category: CommentCategory;\n}\n\nexport interface IPosDutyData {\n positioningId?: string;\n positioningType: PositioningType;\n positioningCustom?: string;\n append: boolean;\n flightId?: string;\n originRcd: string;\n destinationRcd: string;\n startLocal: Date;\n endLocal: Date;\n}\nexport class PosDutyData extends BaseApiModelClass< IPosDutyData > implements IPosDutyData {\n positioningId?: string;\n positioningType: PositioningType;\n positioningCustom?: string;\n append: boolean;\n flightId?: string;\n originRcd: string;\n destinationRcd: string;\n startLocal: Date;\n endLocal: Date;\n}\n\nexport interface IPositioningCustomModel {\n custom?: string;\n originRcd: string;\n destinationRcd: string;\n dateTimeFrom: Date;\n dateTimeTo: Date;\n dateTimeFromDiffToLt?: string;\n dateTimeToDiffToLt?: string;\n checkIn: number;\n checkOut: number;\n}\nexport class PositioningCustomModel extends BaseApiModelClass< IPositioningCustomModel > implements IPositioningCustomModel {\n custom?: string;\n originRcd: string;\n destinationRcd: string;\n dateTimeFrom: Date;\n dateTimeTo: Date;\n dateTimeFromDiffToLt?: string;\n dateTimeToDiffToLt?: string;\n checkIn: number;\n checkOut: number;\n}\n\nexport interface IPositioningModel {\n id: string;\n custom?: string;\n type: PositioningType;\n flightId?: string;\n originRcd?: string;\n destinationRcd?: string;\n startDateUtc: Date;\n endDateUtc: Date;\n checkinDateUtc: Date;\n checkoutDateUtc: Date;\n dateTimeFromDiffToLt?: string;\n dateTimeToDiffToLt?: string;\n}\nexport class PositioningModel extends BaseApiModelClass< IPositioningModel > implements IPositioningModel {\n id: string;\n custom?: string;\n type: PositioningType;\n flightId?: string;\n originRcd?: string;\n destinationRcd?: string;\n startDateUtc: Date;\n endDateUtc: Date;\n checkinDateUtc: Date;\n checkoutDateUtc: Date;\n dateTimeFromDiffToLt?: string;\n dateTimeToDiffToLt?: string;\n}\n\nexport enum PositioningType {\n Other = \"Other\",\n OtherFlight = \"OtherFlight\",\n WkFlight = \"WkFlight\",\n}\n\nexport interface IPreReservationHotelBookingDetailModel {\n hotelEmail?: string;\n hotelTitle?: string;\n location: string;\n transitionDate: Date;\n}\nexport class PreReservationHotelBookingDetailModel extends BaseApiModelClass< IPreReservationHotelBookingDetailModel > implements IPreReservationHotelBookingDetailModel {\n hotelEmail?: string;\n hotelTitle?: string;\n location: string;\n transitionDate: Date;\n}\n\nexport interface IPreReservationLocationsModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n location: string;\n}\nexport class PreReservationLocationsModel extends BaseApiModelClass< IPreReservationLocationsModel > implements IPreReservationLocationsModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n location: string;\n}\n\nexport interface IPreReservationLocationsModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class PreReservationLocationsModelDataSourceLoadOptions extends BaseApiModelClass< IPreReservationLocationsModelDataSourceLoadOptions > implements IPreReservationLocationsModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IPredefinedRoleModel {\n id: number;\n codeName: string;\n description: string;\n permissionIds: number[];\n}\nexport class PredefinedRoleModel extends BaseApiModelClass< IPredefinedRoleModel > implements IPredefinedRoleModel {\n id: number;\n codeName: string;\n description: string;\n permissionIds: number[];\n}\n\nexport interface IQualityLoopExportReportItem {\n id: string;\n principalDisplayName?: string;\n principalEmail?: string;\n createdAtUtc: Date;\n periodFrom: Date;\n periodTo: Date;\n}\nexport class QualityLoopExportReportItem extends BaseApiModelClass< IQualityLoopExportReportItem > implements IQualityLoopExportReportItem {\n id: string;\n principalDisplayName?: string;\n principalEmail?: string;\n createdAtUtc: Date;\n periodFrom: Date;\n periodTo: Date;\n}\n\nexport interface IQualityLoopJobStartModel {\n periodFrom?: Date;\n periodTo?: Date;\n}\nexport class QualityLoopJobStartModel extends BaseApiModelClass< IQualityLoopJobStartModel > implements IQualityLoopJobStartModel {\n periodFrom?: Date;\n periodTo?: Date;\n}\n\nexport interface IQueueStatisticsModel {\n queueName: string;\n messagesCount?: number;\n deadletterMessagesCount?: number;\n messagesPerMinuteIn: number;\n messagesPerMinuteOut: number;\n status: SelfTestResultStatus;\n statusMessage?: string;\n}\nexport class QueueStatisticsModel extends BaseApiModelClass< IQueueStatisticsModel > implements IQueueStatisticsModel {\n queueName: string;\n messagesCount?: number;\n deadletterMessagesCount?: number;\n messagesPerMinuteIn: number;\n messagesPerMinuteOut: number;\n status: SelfTestResultStatus;\n statusMessage?: string;\n}\n\nexport interface IReccurentTrainingReportFilter {\n rowLimit?: number;\n functionId?: string;\n contractTypes?: ContractType[];\n}\nexport class ReccurentTrainingReportFilter extends BaseApiModelClass< IReccurentTrainingReportFilter > implements IReccurentTrainingReportFilter {\n rowLimit?: number;\n functionId?: string;\n contractTypes?: ContractType[];\n}\n\nexport interface IRecencyItem {\n aircraftType: AircraftType;\n landingType: LandingType;\n date?: Date;\n landings: RecencyItemEvent[];\n events: RecencyItemEvent[];\n}\nexport class RecencyItem extends BaseApiModelClass< IRecencyItem > implements IRecencyItem {\n aircraftType: AircraftType;\n landingType: LandingType;\n date?: Date;\n readonly landings: RecencyItemEvent[];\n events: RecencyItemEvent[];\n}\n\nexport interface IRecencyItemEvent {\n date: Date;\n}\nexport class RecencyItemEvent extends BaseApiModelClass< IRecencyItemEvent > implements IRecencyItemEvent {\n date: Date;\n}\n\nexport interface IRecencyResponse {\n personId: string;\n date: Date;\n items: RecencyItem[];\n landings: RecencyItem[];\n takeOffs: RecencyItem[];\n combined: RecencyItem[];\n}\nexport class RecencyResponse extends BaseApiModelClass< IRecencyResponse > implements IRecencyResponse {\n personId: string;\n date: Date;\n readonly items: RecencyItem[];\n landings: RecencyItem[];\n takeOffs: RecencyItem[];\n combined: RecencyItem[];\n}\n\nexport interface IRecurrentTrainingReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n personCode: string;\n personName?: string;\n contract?: string;\n function?: string;\n licenseFleet?: string;\n entryDate?: Date;\n exitDate?: Date;\n lineCheckExpireDate?: Date;\n lastTraineeDate?: Date;\n lastTraineeAircraftType?: string;\n nextTraineeDate?: Date;\n nextTraineeFunction?: string;\n lineCheckRemainingDays?: number;\n nextTraineeAircraftType?: string;\n}\nexport class RecurrentTrainingReportModel extends BaseApiModelClass< IRecurrentTrainingReportModel > implements IRecurrentTrainingReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n personCode: string;\n personName?: string;\n contract?: string;\n function?: string;\n licenseFleet?: string;\n entryDate?: Date;\n exitDate?: Date;\n lineCheckExpireDate?: Date;\n lastTraineeDate?: Date;\n lastTraineeAircraftType?: string;\n nextTraineeDate?: Date;\n nextTraineeFunction?: string;\n lineCheckRemainingDays?: number;\n nextTraineeAircraftType?: string;\n}\n\nexport interface IRecurrentTrainingReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class RecurrentTrainingReportModelDataSourceLoadOptions extends BaseApiModelClass< IRecurrentTrainingReportModelDataSourceLoadOptions > implements IRecurrentTrainingReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IRejectRequestModel {\n commentVisibleToCrew?: string;\n}\nexport class RejectRequestModel extends BaseApiModelClass< IRejectRequestModel > implements IRejectRequestModel {\n commentVisibleToCrew?: string;\n}\n\nexport interface IRejectReserveRequestModel {\n id: string;\n commentVisibleToCrew?: string;\n}\nexport class RejectReserveRequestModel extends BaseApiModelClass< IRejectReserveRequestModel > implements IRejectReserveRequestModel {\n id: string;\n commentVisibleToCrew?: string;\n}\n\nexport interface IRelatedPersonResponse {\n currentPerson: PersonShortInfoModel;\n authenticatedPerson?: PersonModel;\n actualPerson?: PersonModel;\n}\nexport class RelatedPersonResponse extends BaseApiModelClass< IRelatedPersonResponse > implements IRelatedPersonResponse {\n currentPerson: PersonShortInfoModel;\n authenticatedPerson?: PersonModel;\n actualPerson?: PersonModel;\n}\n\nexport enum ReleaseFilterType {\n AgreementError = \"AgreementError\",\n Blank = \"Blank\",\n COU = \"COU\",\n DTY = \"DTY\",\n EasaError = \"EasaError\",\n EasaNext2hError = \"EasaNext2hError\",\n FtlError = \"FtlError\",\n GavError = \"GavError\",\n LicenseExpired = \"LicenseExpired\",\n OtherError = \"OtherError\",\n VAC = \"VAC\",\n}\n\nexport interface IReleaseHistoryDateItem {\n functionGroupId: string;\n functionId?: string;\n date: Date;\n}\nexport class ReleaseHistoryDateItem extends BaseApiModelClass< IReleaseHistoryDateItem > implements IReleaseHistoryDateItem {\n functionGroupId: string;\n functionId?: string;\n date: Date;\n}\n\nexport enum ReleaseLevel {\n Function = \"Function\",\n FunctionGroup = \"FunctionGroup\",\n None = \"None\",\n}\n\nexport interface IReleaseNoteDtoShort {\n id: string;\n title: string;\n text: string;\n isForCrewPage: boolean;\n isForCrewPortal: boolean;\n isDraft: boolean;\n showAfterDateUtc?: Date;\n releasedAtUtc?: Date;\n releasedWithCommitId?: string;\n isNew: boolean;\n}\nexport class ReleaseNoteDtoShort extends BaseApiModelClass< IReleaseNoteDtoShort > implements IReleaseNoteDtoShort {\n id: string;\n title: string;\n text: string;\n isForCrewPage: boolean;\n isForCrewPortal: boolean;\n isDraft: boolean;\n showAfterDateUtc?: Date;\n releasedAtUtc?: Date;\n releasedWithCommitId?: string;\n isNew: boolean;\n}\n\nexport interface IReleaseNoteModel {\n title: string;\n text: string;\n isForCrewPage: boolean;\n isForCrewPortal: boolean;\n isDraft: boolean;\n showAfterDateUtc?: Date;\n releasedAtUtc?: Date;\n releasedWithCommitId?: string;\n}\nexport class ReleaseNoteModel extends BaseApiModelClass< IReleaseNoteModel > implements IReleaseNoteModel {\n title: string;\n text: string;\n isForCrewPage: boolean;\n isForCrewPortal: boolean;\n isDraft: boolean;\n showAfterDateUtc?: Date;\n releasedAtUtc?: Date;\n releasedWithCommitId?: string;\n}\n\nexport interface IReleaseNoteResponseItem {\n id: string;\n title: string;\n text: string;\n isForCrewPage: boolean;\n isForCrewPortal: boolean;\n isDraft: boolean;\n showAfterDateUtc?: Date;\n releasedAtUtc?: Date;\n releasedWithCommitId?: string;\n}\nexport class ReleaseNoteResponseItem extends BaseApiModelClass< IReleaseNoteResponseItem > implements IReleaseNoteResponseItem {\n id: string;\n title: string;\n text: string;\n isForCrewPage: boolean;\n isForCrewPortal: boolean;\n isDraft: boolean;\n showAfterDateUtc?: Date;\n releasedAtUtc?: Date;\n releasedWithCommitId?: string;\n}\n\nexport interface IReleasePeriodModel {\n periodFromUtc: Date;\n periodToUtc: Date;\n}\nexport class ReleasePeriodModel extends BaseApiModelClass< IReleasePeriodModel > implements IReleasePeriodModel {\n periodFromUtc: Date;\n periodToUtc: Date;\n}\n\nexport interface IReleaseStatus {\n principalId?: string;\n principalDisplayName?: string;\n isReleasedDate: boolean;\n isPendingReleaseDate: boolean;\n}\nexport class ReleaseStatus extends BaseApiModelClass< IReleaseStatus > implements IReleaseStatus {\n principalId?: string;\n principalDisplayName?: string;\n isReleasedDate: boolean;\n isPendingReleaseDate: boolean;\n}\n\nexport interface IReleasedPeriodDto {\n name?: string;\n functionGroupId: string;\n functionId?: string;\n functionName?: string;\n functionGroupName?: string;\n releaseLevel: ReleaseLevel;\n periodFromUtc: Date;\n periodToUtc: Date;\n releasedBy?: string;\n releasedAtUtc?: Date;\n isReleased: boolean;\n isLast: boolean;\n}\nexport class ReleasedPeriodDto extends BaseApiModelClass< IReleasedPeriodDto > implements IReleasedPeriodDto {\n name?: string;\n functionGroupId: string;\n functionId?: string;\n functionName?: string;\n functionGroupName?: string;\n releaseLevel: ReleaseLevel;\n periodFromUtc: Date;\n periodToUtc: Date;\n releasedBy?: string;\n releasedAtUtc?: Date;\n readonly isReleased: boolean;\n isLast: boolean;\n}\n\nexport interface IRequestCapacityAnalyzedModel {\n excelFileId: string;\n capacities: RequestCapacityValueModel[];\n}\nexport class RequestCapacityAnalyzedModel extends BaseApiModelClass< IRequestCapacityAnalyzedModel > implements IRequestCapacityAnalyzedModel {\n excelFileId: string;\n capacities: RequestCapacityValueModel[];\n}\n\nexport enum RequestCapacityDateStatus {\n InPast = \"InPast\",\n Normal = \"Normal\",\n Overlapping = \"Overlapping\",\n}\n\nexport interface IRequestCapacityToolOverview {\n offCapacity: RequestCapacityToolOverviewItem[];\n vacCapacity: RequestCapacityToolOverviewItem[];\n freelanceCapacity: RequestCapacityToolOverviewItem[];\n}\nexport class RequestCapacityToolOverview extends BaseApiModelClass< IRequestCapacityToolOverview > implements IRequestCapacityToolOverview {\n offCapacity: RequestCapacityToolOverviewItem[];\n vacCapacity: RequestCapacityToolOverviewItem[];\n freelanceCapacity: RequestCapacityToolOverviewItem[];\n}\n\nexport interface IRequestCapacityToolOverviewDay {\n date: Date;\n capacity?: number;\n usedCapacity?: number;\n remainingCapacity?: number;\n}\nexport class RequestCapacityToolOverviewDay extends BaseApiModelClass< IRequestCapacityToolOverviewDay > implements IRequestCapacityToolOverviewDay {\n date: Date;\n capacity?: number;\n usedCapacity?: number;\n readonly remainingCapacity?: number;\n}\n\nexport interface IRequestCapacityToolOverviewItem {\n type: RequestCapacityType;\n functionId: string;\n fleetType: FleetType;\n days: RequestCapacityToolOverviewDay[];\n}\nexport class RequestCapacityToolOverviewItem extends BaseApiModelClass< IRequestCapacityToolOverviewItem > implements IRequestCapacityToolOverviewItem {\n type: RequestCapacityType;\n functionId: string;\n fleetType: FleetType;\n days: RequestCapacityToolOverviewDay[];\n}\n\nexport enum RequestCapacityType {\n Freelance = \"Freelance\",\n Off = \"Off\",\n Vac = \"Vac\",\n}\n\nexport interface IRequestCapacityValueModel {\n capacityType: RequestCapacityType;\n fleet: FleetType;\n functionName?: string;\n functionId: string;\n dateFrom: Date;\n dateFromStatus: RequestCapacityDateStatus;\n dateTo: Date;\n dateToStatus: RequestCapacityDateStatus;\n values: CapacityModel[];\n}\nexport class RequestCapacityValueModel extends BaseApiModelClass< IRequestCapacityValueModel > implements IRequestCapacityValueModel {\n capacityType: RequestCapacityType;\n fleet: FleetType;\n functionName?: string;\n functionId: string;\n dateFrom: Date;\n dateFromStatus: RequestCapacityDateStatus;\n dateTo: Date;\n dateToStatus: RequestCapacityDateStatus;\n values: CapacityModel[];\n}\n\nexport interface IRequestDutyData {\n bid: number;\n}\nexport class RequestDutyData extends BaseApiModelClass< IRequestDutyData > implements IRequestDutyData {\n bid: number;\n}\n\nexport enum RequestPointSubType {\n GrantByContract = \"GrantByContract\",\n PointsReducedUbu = \"PointsReducedUbu\",\n}\n\nexport enum RequestPointUseType {\n FlightAdded = \"FlightAdded\",\n FlightAddedByUndo = \"FlightAddedByUndo\",\n FlightDeleted = \"FlightDeleted\",\n FlightDeletedWithoutRevertPoints = \"FlightDeletedWithoutRevertPoints\",\n FlightRequestFee = \"FlightRequestFee\",\n GrantByContract = \"GrantByContract\",\n GrantedRequests = \"GrantedRequests\",\n LTEAdded = \"LTEAdded\",\n LTEAddedByUndo = \"LTEAddedByUndo\",\n LTEDeleted = \"LTEDeleted\",\n LTEDeletedWithoutRevertPoints = \"LTEDeletedWithoutRevertPoints\",\n LTOAdded = \"LTOAdded\",\n LTOAddedByUndo = \"LTOAddedByUndo\",\n LTODeleted = \"LTODeleted\",\n LTODeletedWithoutRevertPoints = \"LTODeletedWithoutRevertPoints\",\n ManualCorrection = \"ManualCorrection\",\n STOAdded = \"STOAdded\",\n STODeleted = \"STODeleted\",\n}\n\nexport interface IReserveBlockDTO {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id?: string;\n dateFrom: Date;\n dateTo: Date;\n rsvGroup: PersonRequestReserveGroupType;\n function: string;\n hasRequested: boolean;\n hasConfirmed: boolean;\n}\nexport class ReserveBlockDTO extends BaseApiModelClass< IReserveBlockDTO > implements IReserveBlockDTO {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id?: string;\n dateFrom: Date;\n dateTo: Date;\n rsvGroup: PersonRequestReserveGroupType;\n function: string;\n hasRequested: boolean;\n hasConfirmed: boolean;\n}\n\nexport interface IReserveBlockDTODataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class ReserveBlockDTODataSourceLoadOptions extends BaseApiModelClass< IReserveBlockDTODataSourceLoadOptions > implements IReserveBlockDTODataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IReserveBlocksFilter {\n rowLimit?: number;\n}\nexport class ReserveBlocksFilter extends BaseApiModelClass< IReserveBlocksFilter > implements IReserveBlocksFilter {\n rowLimit?: number;\n}\n\nexport interface IReserveManagementReportFilter {\n rowLimit?: number;\n}\nexport class ReserveManagementReportFilter extends BaseApiModelClass< IReserveManagementReportFilter > implements IReserveManagementReportFilter {\n rowLimit?: number;\n}\n\nexport interface IReservePeriodChangeStatusModel {\n status: VacationYearPeriodStatus;\n}\nexport class ReservePeriodChangeStatusModel extends BaseApiModelClass< IReservePeriodChangeStatusModel > implements IReservePeriodChangeStatusModel {\n status: VacationYearPeriodStatus;\n}\n\nexport interface IReserveRequestChangePlannersCommentModel {\n requestId: string;\n comment?: string;\n}\nexport class ReserveRequestChangePlannersCommentModel extends BaseApiModelClass< IReserveRequestChangePlannersCommentModel > implements IReserveRequestChangePlannersCommentModel {\n requestId: string;\n comment?: string;\n}\n\nexport interface IReserveRequestModel {\n id: string;\n}\nexport class ReserveRequestModel extends BaseApiModelClass< IReserveRequestModel > implements IReserveRequestModel {\n id: string;\n}\n\nexport interface IReserveRequestReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n requestId: string;\n personId: string;\n personCode: string;\n personName?: string;\n personSeniority: number;\n rsvGroup: PersonRequestReserveGroupType;\n function: string;\n createdDate: Date;\n reserveYear: string;\n reserveYearPeriod: string;\n dateFrom: Date;\n dateTo: Date;\n commentVisibleToCrew?: string;\n status: PersonRequestReserveStatus;\n typeRating?: string;\n isInstructor: boolean;\n reserveBlockId: string;\n requestPriority: number;\n approvedRequests: number;\n}\nexport class ReserveRequestReportModel extends BaseApiModelClass< IReserveRequestReportModel > implements IReserveRequestReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n requestId: string;\n personId: string;\n personCode: string;\n personName?: string;\n personSeniority: number;\n rsvGroup: PersonRequestReserveGroupType;\n function: string;\n createdDate: Date;\n reserveYear: string;\n reserveYearPeriod: string;\n dateFrom: Date;\n dateTo: Date;\n commentVisibleToCrew?: string;\n status: PersonRequestReserveStatus;\n typeRating?: string;\n isInstructor: boolean;\n reserveBlockId: string;\n requestPriority: number;\n approvedRequests: number;\n}\n\nexport interface IReserveRequestReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class ReserveRequestReportModelDataSourceLoadOptions extends BaseApiModelClass< IReserveRequestReportModelDataSourceLoadOptions > implements IReserveRequestReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IReserveYearPeriodDto {\n id: string;\n codeName: string;\n dateFrom: Date;\n dateTo: Date;\n status: VacationYearPeriodStatus;\n yearId: string;\n yearCodeName: string;\n yearDateFrom: Date;\n yearDateTo: Date;\n}\nexport class ReserveYearPeriodDto extends BaseApiModelClass< IReserveYearPeriodDto > implements IReserveYearPeriodDto {\n id: string;\n codeName: string;\n dateFrom: Date;\n dateTo: Date;\n status: VacationYearPeriodStatus;\n yearId: string;\n yearCodeName: string;\n yearDateFrom: Date;\n yearDateTo: Date;\n}\n\nexport interface IReserveYearPeriodModel {\n label: string;\n value: string;\n yearId: string;\n status: VacationYearPeriodStatus;\n}\nexport class ReserveYearPeriodModel extends BaseApiModelClass< IReserveYearPeriodModel > implements IReserveYearPeriodModel {\n label: string;\n value: string;\n yearId: string;\n status: VacationYearPeriodStatus;\n}\n\nexport interface IReserveYearPeriodReportFilterOption {\n codeName: string;\n status: VacationYearPeriodStatus;\n}\nexport class ReserveYearPeriodReportFilterOption extends BaseApiModelClass< IReserveYearPeriodReportFilterOption > implements IReserveYearPeriodReportFilterOption {\n codeName: string;\n status: VacationYearPeriodStatus;\n}\n\nexport interface IResumeValidationModel {\n date: Date;\n personId: string;\n errorKey: string;\n}\nexport class ResumeValidationModel extends BaseApiModelClass< IResumeValidationModel > implements IResumeValidationModel {\n date: Date;\n personId: string;\n errorKey: string;\n}\n\nexport interface IRevalidatePersonModel {\n personId: string;\n date: Date;\n functionGroupId: string;\n}\nexport class RevalidatePersonModel extends BaseApiModelClass< IRevalidatePersonModel > implements IRevalidatePersonModel {\n personId: string;\n date: Date;\n functionGroupId: string;\n}\n\nexport interface IRosterImportDetailsFilter {\n rowLimit?: number;\n importId: string;\n}\nexport class RosterImportDetailsFilter extends BaseApiModelClass< IRosterImportDetailsFilter > implements IRosterImportDetailsFilter {\n rowLimit?: number;\n importId: string;\n}\n\nexport interface IRosterImportErrorExceptionModel {\n message: string;\n}\nexport class RosterImportErrorExceptionModel extends BaseApiModelClass< IRosterImportErrorExceptionModel > implements IRosterImportErrorExceptionModel {\n message: string;\n}\n\nexport interface IRosterImportErrorMessageModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n personId?: string;\n crewId?: string;\n personCode: string;\n activity: string;\n message: string;\n errorType: RosterImportErrorType;\n}\nexport class RosterImportErrorMessageModel extends BaseApiModelClass< IRosterImportErrorMessageModel > implements IRosterImportErrorMessageModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n personId?: string;\n readonly crewId?: string;\n personCode: string;\n activity: string;\n message: string;\n errorType: RosterImportErrorType;\n}\n\nexport interface IRosterImportErrorMessageModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class RosterImportErrorMessageModelDataSourceLoadOptions extends BaseApiModelClass< IRosterImportErrorMessageModelDataSourceLoadOptions > implements IRosterImportErrorMessageModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport enum RosterImportErrorType {\n Flight = \"Flight\",\n Roster = \"Roster\",\n Rotation = \"Rotation\",\n}\n\nexport interface IRosterImportFilter {\n rowLimit?: number;\n}\nexport class RosterImportFilter extends BaseApiModelClass< IRosterImportFilter > implements IRosterImportFilter {\n rowLimit?: number;\n}\n\nexport interface IRosterImportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n status: string;\n principalDisplayName: string;\n startDateTimeUtc: Date;\n periodStartDateTimeUtc?: Date;\n periodEndDateTimeUtc?: Date;\n flightsCount: number;\n tripsCount: number;\n rostersCount: number;\n duration: number;\n jobParameters?: string;\n hasErrorMessages: boolean;\n hasFile: boolean;\n}\nexport class RosterImportModel extends BaseApiModelClass< IRosterImportModel > implements IRosterImportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n status: string;\n principalDisplayName: string;\n startDateTimeUtc: Date;\n periodStartDateTimeUtc?: Date;\n periodEndDateTimeUtc?: Date;\n flightsCount: number;\n tripsCount: number;\n rostersCount: number;\n duration: number;\n jobParameters?: string;\n hasErrorMessages: boolean;\n hasFile: boolean;\n}\n\nexport interface IRosterImportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class RosterImportModelDataSourceLoadOptions extends BaseApiModelClass< IRosterImportModelDataSourceLoadOptions > implements IRosterImportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IRosterSelectedCell {\n personId: string;\n personCode?: string;\n date: Date;\n isActive: boolean;\n}\nexport class RosterSelectedCell extends BaseApiModelClass< IRosterSelectedCell > implements IRosterSelectedCell {\n personId: string;\n personCode?: string;\n date: Date;\n isActive: boolean;\n}\n\nexport enum RosterType {\n Full = \"Full\",\n Person = \"Person\",\n Report = \"Report\",\n RequestToolCalendar = \"RequestToolCalendar\",\n RequestToolFlight = \"RequestToolFlight\",\n RequestToolFreelance = \"RequestToolFreelance\",\n RequestToolGeneral = \"RequestToolGeneral\",\n RequestToolOff = \"RequestToolOff\",\n RequestToolVacCabin = \"RequestToolVacCabin\",\n RequestToolVacCockpit = \"RequestToolVacCockpit\",\n RequestToolVacGround = \"RequestToolVacGround\",\n VacationManagment = \"VacationManagment\",\n}\n\nexport interface IRotationActionResult {\n errors: string[];\n hasErrors: boolean;\n rotationId?: string;\n}\nexport class RotationActionResult extends BaseApiModelClass< IRotationActionResult > implements IRotationActionResult {\n errors: string[];\n readonly hasErrors: boolean;\n rotationId?: string;\n}\n\nexport interface IRotationCopyModel {\n rotationId: string;\n name: string;\n isForCabin: boolean;\n isForCockpit: boolean;\n startDate?: Date;\n rotationCrewComplements: RotationCrewComplement[];\n}\nexport class RotationCopyModel extends BaseApiModelClass< IRotationCopyModel > implements IRotationCopyModel {\n rotationId: string;\n name: string;\n isForCabin: boolean;\n isForCockpit: boolean;\n startDate?: Date;\n rotationCrewComplements: RotationCrewComplement[];\n}\n\nexport interface IRotationCrewComplement {\n crewComplementFunction: string;\n crewComplementCount: number;\n}\nexport class RotationCrewComplement extends BaseApiModelClass< IRotationCrewComplement > implements IRotationCrewComplement {\n crewComplementFunction: string;\n crewComplementCount: number;\n}\n\nexport enum RotationCrewComplementsFunction {\n CC = \"CC\",\n FO = \"FO\",\n OBS1 = \"OBS1\",\n OBS2 = \"OBS2\",\n PIC = \"PIC\",\n SC = \"SC\",\n}\n\nexport interface IRotationDay {\n activities: RotationDayActivity[];\n date: Date;\n}\nexport class RotationDay extends BaseApiModelClass< IRotationDay > implements IRotationDay {\n activities: RotationDayActivity[];\n date: Date;\n}\n\nexport interface IRotationDayActivity {\n flightNumber?: number;\n flightLegNumber?: number;\n operationalSuffix?: string;\n flightId?: string;\n activityRcd: string;\n originRcd?: string;\n destinationRcd?: string;\n flightComment?: string;\n flightIsDeleted: boolean;\n departureDateTimeUtc?: Date;\n arrivalDateTimeUtc?: Date;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n scheduledArrivalDateTimeUtc?: Date;\n intoTheGateDateTimeUtc?: Date;\n isGav: boolean;\n isFtl: boolean;\n isAfterNightDuty: boolean;\n isBeforeNightDuty: boolean;\n flightCrewComplements: RotationCrewComplement[];\n flightIsAugmentedCockpit: boolean;\n flightIsAugmentedCabin: boolean;\n flightIsExtendedCabin: boolean;\n flightIsExtendedCockpit: boolean;\n flightIsXStarCockpit: boolean;\n}\nexport class RotationDayActivity extends BaseApiModelClass< IRotationDayActivity > implements IRotationDayActivity {\n flightNumber?: number;\n flightLegNumber?: number;\n operationalSuffix?: string;\n flightId?: string;\n activityRcd: string;\n originRcd?: string;\n destinationRcd?: string;\n flightComment?: string;\n flightIsDeleted: boolean;\n departureDateTimeUtc?: Date;\n arrivalDateTimeUtc?: Date;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n scheduledArrivalDateTimeUtc?: Date;\n intoTheGateDateTimeUtc?: Date;\n isGav: boolean;\n isFtl: boolean;\n isAfterNightDuty: boolean;\n isBeforeNightDuty: boolean;\n flightCrewComplements: RotationCrewComplement[];\n flightIsAugmentedCockpit: boolean;\n flightIsAugmentedCabin: boolean;\n flightIsExtendedCabin: boolean;\n flightIsExtendedCockpit: boolean;\n flightIsXStarCockpit: boolean;\n}\n\nexport interface IRotationDayActivityInfo {\n id?: string;\n flightNumber?: number;\n operationalSuffix?: string;\n flightId?: string;\n activityRcd: string;\n aircraftTypeRcd?: string;\n departureRcd?: string;\n departureUtcDate?: Date;\n departureDiffToLt?: string;\n startUtcDate?: Date;\n arrivalRcd?: string;\n arrivalUtcDate?: Date;\n arrivalDiffToLt?: string;\n endUtcDate?: Date;\n positioningBy?: string;\n positioningType?: PositioningType;\n airlineRcd?: string;\n}\nexport class RotationDayActivityInfo extends BaseApiModelClass< IRotationDayActivityInfo > implements IRotationDayActivityInfo {\n id?: string;\n flightNumber?: number;\n operationalSuffix?: string;\n flightId?: string;\n activityRcd: string;\n aircraftTypeRcd?: string;\n departureRcd?: string;\n departureUtcDate?: Date;\n departureDiffToLt?: string;\n startUtcDate?: Date;\n arrivalRcd?: string;\n arrivalUtcDate?: Date;\n arrivalDiffToLt?: string;\n endUtcDate?: Date;\n positioningBy?: string;\n positioningType?: PositioningType;\n airlineRcd?: string;\n}\n\nexport interface IRotationDayInfo {\n activities: RotationDayActivityInfo[];\n date: Date;\n isGav: boolean;\n isFtl: boolean;\n isAfterNightDuty: boolean;\n isBeforeNightDuty: boolean;\n isAugmentedFlight: boolean;\n isExtendedFlight: boolean;\n isXStarFlight: boolean;\n acclimatisationStatus?: AcclimatisationStatus;\n errors: ValidationErrorModel[];\n hasErrors: boolean;\n hasOffDayDifference: boolean;\n hasOffTypeDifference: boolean;\n}\nexport class RotationDayInfo extends BaseApiModelClass< IRotationDayInfo > implements IRotationDayInfo {\n activities: RotationDayActivityInfo[];\n date: Date;\n isGav: boolean;\n isFtl: boolean;\n isAfterNightDuty: boolean;\n isBeforeNightDuty: boolean;\n isAugmentedFlight: boolean;\n isExtendedFlight: boolean;\n isXStarFlight: boolean;\n acclimatisationStatus?: AcclimatisationStatus;\n readonly errors: ValidationErrorModel[];\n readonly hasErrors: boolean;\n hasOffDayDifference: boolean;\n hasOffTypeDifference: boolean;\n}\n\nexport interface IRotationDutiesItem {\n id: string;\n isLongHaul: boolean;\n aircraftTypeRcd: string;\n flights: RotationFlightItem[];\n duties: RotationDutyActivity[];\n flightCount: number;\n codeName: string;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n scheduledArrivalDateTimeUtc: Date;\n isOperatedByWk: boolean;\n hasPositioning: boolean;\n isForCabin: boolean;\n isForCockpit: boolean;\n isDeleted: boolean;\n intoTheGateDateTimeUtc?: Date;\n isValid: boolean;\n isInvalidCabin: boolean;\n isInvalidCockpit: boolean;\n rotationCrewComplements: RotationCrewComplement[];\n}\nexport class RotationDutiesItem extends BaseApiModelClass< IRotationDutiesItem > implements IRotationDutiesItem {\n id: string;\n isLongHaul: boolean;\n aircraftTypeRcd: string;\n flights: RotationFlightItem[];\n duties: RotationDutyActivity[];\n readonly flightCount: number;\n codeName: string;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n scheduledArrivalDateTimeUtc: Date;\n isOperatedByWk: boolean;\n hasPositioning: boolean;\n isForCabin: boolean;\n isForCockpit: boolean;\n isDeleted: boolean;\n intoTheGateDateTimeUtc?: Date;\n readonly isValid: boolean;\n isInvalidCabin: boolean;\n isInvalidCockpit: boolean;\n rotationCrewComplements: RotationCrewComplement[];\n}\n\nexport interface IRotationDutyActivity {\n date: Date;\n personId: string;\n personCodeName: string;\n activityCodeName: string;\n flightId?: string;\n personBirthDate?: Date;\n flightIsAugmentedCockpit?: boolean;\n flightIsExtendedCockpit?: boolean;\n flightIsXStarCockpit?: boolean;\n flightIsAugmentedCabin?: boolean;\n flightIsExtendedCabin?: boolean;\n flightIsDeleted?: boolean;\n personHasMedicalRestrictions?: boolean;\n personLicenseStatus: PersonLicenseStatus;\n personExperienceCodeName?: string;\n functionName?: string;\n hasFtlErrors: boolean;\n hasGavErrors: boolean;\n hasEasaErrors: boolean;\n hasAgreementErrors: boolean;\n hasOtherErrors: boolean;\n flightNumber: number;\n flightDepartureDateTimeUtc?: Date;\n}\nexport class RotationDutyActivity extends BaseApiModelClass< IRotationDutyActivity > implements IRotationDutyActivity {\n date: Date;\n personId: string;\n personCodeName: string;\n activityCodeName: string;\n flightId?: string;\n personBirthDate?: Date;\n flightIsAugmentedCockpit?: boolean;\n flightIsExtendedCockpit?: boolean;\n flightIsXStarCockpit?: boolean;\n flightIsAugmentedCabin?: boolean;\n flightIsExtendedCabin?: boolean;\n flightIsDeleted?: boolean;\n personHasMedicalRestrictions?: boolean;\n personLicenseStatus: PersonLicenseStatus;\n personExperienceCodeName?: string;\n functionName?: string;\n hasFtlErrors: boolean;\n hasGavErrors: boolean;\n hasEasaErrors: boolean;\n hasAgreementErrors: boolean;\n hasOtherErrors: boolean;\n flightNumber: number;\n flightDepartureDateTimeUtc?: Date;\n}\n\nexport interface IRotationFlightItem {\n flightId: string;\n flightNumber: number;\n operationalSuffix: string;\n flightDestinationRcd: string;\n flightOriginRcd: string;\n flightArrivalDateTimeUtc: Date;\n flightDepartureDateTimeUtc: Date;\n flightEstimatedArrivalDateTimeUtc?: Date;\n flightEstimatedDepartureDateTimeUtc?: Date;\n flightIsAugmentedCockpit: boolean;\n flightIsExtendedCockpit: boolean;\n flightIsXStarCockpit: boolean;\n flightIsAugmentedCabin: boolean;\n flightIsExtendedCabin: boolean;\n aircraftRegistrationNumber: string;\n flightComment: string;\n flightCrewComplements: RotationCrewComplement[];\n}\nexport class RotationFlightItem extends BaseApiModelClass< IRotationFlightItem > implements IRotationFlightItem {\n flightId: string;\n flightNumber: number;\n operationalSuffix: string;\n flightDestinationRcd: string;\n flightOriginRcd: string;\n flightArrivalDateTimeUtc: Date;\n flightDepartureDateTimeUtc: Date;\n flightEstimatedArrivalDateTimeUtc?: Date;\n flightEstimatedDepartureDateTimeUtc?: Date;\n flightIsAugmentedCockpit: boolean;\n flightIsExtendedCockpit: boolean;\n flightIsXStarCockpit: boolean;\n flightIsAugmentedCabin: boolean;\n flightIsExtendedCabin: boolean;\n aircraftRegistrationNumber: string;\n flightComment: string;\n flightCrewComplements: RotationCrewComplement[];\n}\n\nexport interface IRotationFlightsInfoModel {\n flightsNumbers: string;\n flightsCodeName: string;\n startDateTimeUtc?: Date;\n endDateTimeUtc?: Date;\n startDateTimeLocal?: Date;\n endDateTimeLocal?: Date;\n fdpExtensionType: FdpExtensionType;\n}\nexport class RotationFlightsInfoModel extends BaseApiModelClass< IRotationFlightsInfoModel > implements IRotationFlightsInfoModel {\n flightsNumbers: string;\n flightsCodeName: string;\n startDateTimeUtc?: Date;\n endDateTimeUtc?: Date;\n startDateTimeLocal?: Date;\n endDateTimeLocal?: Date;\n fdpExtensionType: FdpExtensionType;\n}\n\nexport interface IRotationInfo {\n days: RotationDay[];\n id: string;\n isLongHaul: boolean;\n routing?: string;\n name?: string;\n flightsCount: number;\n firstRotationDeparture: Date;\n lastRotationArrival: Date;\n isForCockpit: boolean;\n isForCabin: boolean;\n flightNumbers: string;\n}\nexport class RotationInfo extends BaseApiModelClass< IRotationInfo > implements IRotationInfo {\n days: RotationDay[];\n id: string;\n isLongHaul: boolean;\n routing?: string;\n name?: string;\n readonly flightsCount: number;\n readonly firstRotationDeparture: Date;\n readonly lastRotationArrival: Date;\n isForCockpit: boolean;\n isForCabin: boolean;\n readonly flightNumbers: string;\n}\n\nexport interface IRotationInfoWithActivities {\n rotation: RotationInfo;\n assignedActivities: RotationDutyActivity[];\n}\nexport class RotationInfoWithActivities extends BaseApiModelClass< IRotationInfoWithActivities > implements IRotationInfoWithActivities {\n rotation: RotationInfo;\n assignedActivities: RotationDutyActivity[];\n}\n\nexport interface IRotationModel {\n id?: string;\n days: RotationDayInfo[];\n isLongHaul: boolean;\n name: string;\n direction: string;\n aircraftTypeGroupId?: string;\n startRotationDate: Date;\n endRotationDate: Date;\n startUtc?: Date;\n isForCockpit: boolean;\n isForCabin: boolean;\n errors: string[];\n hasErrors: boolean;\n rotationCrewComplements: RotationCrewComplement[];\n isCockpitComplements: boolean;\n isCabinComplements: boolean;\n}\nexport class RotationModel extends BaseApiModelClass< IRotationModel > implements IRotationModel {\n id?: string;\n days: RotationDayInfo[];\n isLongHaul: boolean;\n name: string;\n direction: string;\n aircraftTypeGroupId?: string;\n readonly startRotationDate: Date;\n readonly endRotationDate: Date;\n readonly startUtc?: Date;\n isForCockpit: boolean;\n isForCabin: boolean;\n errors: string[];\n readonly hasErrors: boolean;\n rotationCrewComplements: RotationCrewComplement[];\n readonly isCockpitComplements: boolean;\n readonly isCabinComplements: boolean;\n}\n\nexport interface IRotationOffsItemModel {\n offCount: number;\n rotationId: string;\n hasBlockedDays: boolean;\n}\nexport class RotationOffsItemModel extends BaseApiModelClass< IRotationOffsItemModel > implements IRotationOffsItemModel {\n offCount: number;\n rotationId: string;\n hasBlockedDays: boolean;\n}\n\nexport interface IRotationOffsModel {\n items: RotationOffsItemModel[];\n parallelCalculations: number;\n}\nexport class RotationOffsModel extends BaseApiModelClass< IRotationOffsModel > implements IRotationOffsModel {\n items: RotationOffsItemModel[];\n parallelCalculations: number;\n}\n\nexport interface IRotationOffsRequestModel {\n rotationIds?: string[];\n personId: string;\n packSize?: number;\n}\nexport class RotationOffsRequestModel extends BaseApiModelClass< IRotationOffsRequestModel > implements IRotationOffsRequestModel {\n rotationIds?: string[];\n personId: string;\n packSize?: number;\n}\n\nexport enum RotationType {\n Longhaul = \"Longhaul\",\n Sector = \"Sector\",\n Shorthaul = \"Shorthaul\",\n}\n\nexport enum SchedulerStatus {\n FailedToStart = \"FailedToStart\",\n SchedulingJobs = \"SchedulingJobs\",\n SchedulingPostponedJobs = \"SchedulingPostponedJobs\",\n ServiceNotStarted = \"ServiceNotStarted\",\n ShuttingDown = \"ShuttingDown\",\n Started = \"Started\",\n Starting = \"Starting\",\n StutDown = \"StutDown\",\n WaitingForDatabase = \"WaitingForDatabase\",\n}\n\nexport enum SearchMatched {\n FullMatched = \"FullMatched\",\n SearchMatched = \"SearchMatched\",\n Selected = \"Selected\",\n}\n\nexport interface ISectorDutyItem {\n date: Date;\n personId: string;\n personCodeName: string;\n activityCodeName: string;\n flightId?: string;\n personBirthDate?: Date;\n flightIsAugmentedCockpit?: boolean;\n flightIsExtendedCockpit?: boolean;\n flightIsXStarCockpit?: boolean;\n flightIsAugmentedCabin?: boolean;\n flightIsExtendedCabin?: boolean;\n flightIsDeleted?: boolean;\n personHasMedicalRestrictions?: boolean;\n personLicenseStatus: PersonLicenseStatus;\n personExperienceCodeName?: string;\n functionName?: string;\n hasFtlErrors: boolean;\n hasGavErrors: boolean;\n hasEasaErrors: boolean;\n hasAgreementErrors: boolean;\n hasOtherErrors: boolean;\n}\nexport class SectorDutyItem extends BaseApiModelClass< ISectorDutyItem > implements ISectorDutyItem {\n date: Date;\n personId: string;\n personCodeName: string;\n activityCodeName: string;\n flightId?: string;\n personBirthDate?: Date;\n flightIsAugmentedCockpit?: boolean;\n flightIsExtendedCockpit?: boolean;\n flightIsXStarCockpit?: boolean;\n flightIsAugmentedCabin?: boolean;\n flightIsExtendedCabin?: boolean;\n flightIsDeleted?: boolean;\n personHasMedicalRestrictions?: boolean;\n personLicenseStatus: PersonLicenseStatus;\n personExperienceCodeName?: string;\n functionName?: string;\n hasFtlErrors: boolean;\n hasGavErrors: boolean;\n hasEasaErrors: boolean;\n hasAgreementErrors: boolean;\n hasOtherErrors: boolean;\n}\n\nexport interface ISectorItem {\n flightId: string;\n flightNumber: number;\n operationalSuffix?: string;\n flightLegSequenceNumber: number;\n aircraftTypeRcd?: string;\n aircraftTypeId?: string;\n flightDestinationRcd: string;\n flightOriginRcd: string;\n flightComment?: string;\n flightDepartureDateTimeUtc: Date;\n flightArrivalDateTimeUtc: Date;\n flightDepartureTimeDiffToLt: string;\n flightArrivalTimeDiffToLt: string;\n flightEstimatedDepartureDateTimeUtc?: Date;\n flightEstimatedArrivalDateTimeUtc?: Date;\n flightStatusIdentifier?: string;\n flightStatusActionIdentifier?: string;\n flightCabinOperatedByWk: boolean;\n flightCockpitOperatedByWk: boolean;\n isOperatedByWk: boolean;\n flightUrgentIsCrewCompleteSuppressed: boolean;\n flightUrgentCommentText?: string;\n flightUrgentSuppressReason?: UrgentFlightSupressType;\n flightUrgentModifiedDateTime?: Date;\n flightUrgentPrincipalDisplayName?: string;\n flightIntoTheGateDateTimeUtc?: Date;\n isValid: boolean;\n isInvalidCabin: boolean;\n isInvalidCockpit: boolean;\n duties: SectorDutyItem[];\n flightIsDeleted: boolean;\n flightIsAugmentedCockpit: boolean;\n flightIsAugmentedCabin: boolean;\n flightIsExtendedCockpit: boolean;\n flightIsExtendedCabin: boolean;\n flightIsXStarCockpit: boolean;\n isLongHaulFlight: boolean;\n aircraftRegistrationNumber?: string;\n flightCrewComplements: RotationCrewComplement[];\n}\nexport class SectorItem extends BaseApiModelClass< ISectorItem > implements ISectorItem {\n flightId: string;\n flightNumber: number;\n operationalSuffix?: string;\n flightLegSequenceNumber: number;\n aircraftTypeRcd?: string;\n aircraftTypeId?: string;\n flightDestinationRcd: string;\n flightOriginRcd: string;\n flightComment?: string;\n flightDepartureDateTimeUtc: Date;\n flightArrivalDateTimeUtc: Date;\n flightDepartureTimeDiffToLt: string;\n flightArrivalTimeDiffToLt: string;\n flightEstimatedDepartureDateTimeUtc?: Date;\n flightEstimatedArrivalDateTimeUtc?: Date;\n flightStatusIdentifier?: string;\n flightStatusActionIdentifier?: string;\n flightCabinOperatedByWk: boolean;\n flightCockpitOperatedByWk: boolean;\n isOperatedByWk: boolean;\n flightUrgentIsCrewCompleteSuppressed: boolean;\n flightUrgentCommentText?: string;\n flightUrgentSuppressReason?: UrgentFlightSupressType;\n flightUrgentModifiedDateTime?: Date;\n flightUrgentPrincipalDisplayName?: string;\n flightIntoTheGateDateTimeUtc?: Date;\n readonly isValid: boolean;\n readonly isInvalidCabin: boolean;\n readonly isInvalidCockpit: boolean;\n duties: SectorDutyItem[];\n flightIsDeleted: boolean;\n flightIsAugmentedCockpit: boolean;\n flightIsAugmentedCabin: boolean;\n flightIsExtendedCockpit: boolean;\n flightIsExtendedCabin: boolean;\n flightIsXStarCockpit: boolean;\n isLongHaulFlight: boolean;\n aircraftRegistrationNumber?: string;\n flightCrewComplements: RotationCrewComplement[];\n}\n\nexport interface ISectorsReportFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n}\nexport class SectorsReportFilter extends BaseApiModelClass< ISectorsReportFilter > implements ISectorsReportFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n}\n\nexport interface ISectorsReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n isDeleted: boolean;\n rotationType: string;\n aircraftType: string;\n flightNumber: number;\n route?: string;\n departureDateUtc: Date;\n arrivalDateUtc: Date;\n pic?: string;\n fo?: string;\n obs1?: string;\n obs2?: string;\n sc?: string;\n cc2?: string;\n cc3?: string;\n cc4?: string;\n cc5?: string;\n cc6?: string;\n cc7?: string;\n cc8?: string;\n cc9?: string;\n cc10?: string;\n cc11?: string;\n cc12?: string;\n cc13?: string;\n aircraftRegistation?: string;\n}\nexport class SectorsReportModel extends BaseApiModelClass< ISectorsReportModel > implements ISectorsReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n date: Date;\n isDeleted: boolean;\n rotationType: string;\n aircraftType: string;\n flightNumber: number;\n route?: string;\n departureDateUtc: Date;\n arrivalDateUtc: Date;\n pic?: string;\n fo?: string;\n obs1?: string;\n obs2?: string;\n sc?: string;\n cc2?: string;\n cc3?: string;\n cc4?: string;\n cc5?: string;\n cc6?: string;\n cc7?: string;\n cc8?: string;\n cc9?: string;\n cc10?: string;\n cc11?: string;\n cc12?: string;\n cc13?: string;\n aircraftRegistation?: string;\n}\n\nexport interface ISectorsReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class SectorsReportModelDataSourceLoadOptions extends BaseApiModelClass< ISectorsReportModelDataSourceLoadOptions > implements ISectorsReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface ISelfTestResult {\n name: string;\n status: SelfTestResultStatus;\n title?: string;\n message?: string;\n payload?: any;\n}\nexport class SelfTestResult extends BaseApiModelClass< ISelfTestResult > implements ISelfTestResult {\n name: string;\n status: SelfTestResultStatus;\n title?: string;\n message?: string;\n payload?: any;\n}\n\nexport enum SelfTestResultStatus {\n Fail = \"Fail\",\n Success = \"Success\",\n Warning = \"Warning\",\n}\n\nexport interface ISendCrewSmsInfo {\n phoneNumbers: string[];\n text: string;\n occEmailSubject: string;\n}\nexport class SendCrewSmsInfo extends BaseApiModelClass< ISendCrewSmsInfo > implements ISendCrewSmsInfo {\n phoneNumbers: string[];\n text: string;\n occEmailSubject: string;\n}\n\nexport interface ISendSmsBody {\n phoneNumbers: string[];\n text: string;\n notifyOccEmailSubject?: string;\n}\nexport class SendSmsBody extends BaseApiModelClass< ISendSmsBody > implements ISendSmsBody {\n phoneNumbers: string[];\n text: string;\n notifyOccEmailSubject?: string;\n}\n\nexport interface ISendSmsResponse {\n result: SendSmsResponseItem[];\n}\nexport class SendSmsResponse extends BaseApiModelClass< ISendSmsResponse > implements ISendSmsResponse {\n result: SendSmsResponseItem[];\n}\n\nexport interface ISendSmsResponseItem {\n principalId: string;\n phoneNumber: string;\n error?: string;\n}\nexport class SendSmsResponseItem extends BaseApiModelClass< ISendSmsResponseItem > implements ISendSmsResponseItem {\n principalId: string;\n phoneNumber: string;\n error?: string;\n}\n\nexport interface ISeniorityCommentModel {\n personId: string;\n comment: string;\n}\nexport class SeniorityCommentModel extends BaseApiModelClass< ISeniorityCommentModel > implements ISeniorityCommentModel {\n personId: string;\n comment: string;\n}\n\nexport interface ISeniorityEntryDateModel {\n personId: string;\n entryDate?: Date;\n}\nexport class SeniorityEntryDateModel extends BaseApiModelClass< ISeniorityEntryDateModel > implements ISeniorityEntryDateModel {\n personId: string;\n entryDate?: Date;\n}\n\nexport interface ISeniorityExitDateModel {\n personId: string;\n exitDate?: Date;\n}\nexport class SeniorityExitDateModel extends BaseApiModelClass< ISeniorityExitDateModel > implements ISeniorityExitDateModel {\n personId: string;\n exitDate?: Date;\n}\n\nexport interface ISeniorityReportFilter {\n rowLimit?: number;\n personId?: string;\n}\nexport class SeniorityReportFilter extends BaseApiModelClass< ISeniorityReportFilter > implements ISeniorityReportFilter {\n rowLimit?: number;\n personId?: string;\n}\n\nexport interface ISeniorityReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personRank: number;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n personSuperior?: string;\n personEntryDate: Date;\n personBirthDate?: Date;\n personFunction: string;\n personContractType: ContractType;\n personContract?: string;\n personExitDate?: Date;\n flightHoursBeforeEdwSec: number;\n flightHoursEdwShSec: number;\n flightHoursEdwLhSec: number;\n flightHoursTotalEdwSec: number;\n flightHoursTotalSec: number;\n ofcInsHoursTotalSec: number;\n personWishCreatedDate?: Date;\n personWishType?: string;\n personWishStatus?: PersonWishStatus;\n personCrpInputDate?: Date;\n personId: string;\n nextStep?: string;\n typeRating?: string;\n typeRatingMint?: string;\n seniorityComment?: string;\n commentChangedBy?: string;\n commentChangedDate?: Date;\n projectedExitDate?: Date;\n manualPlannedExitDate?: Date;\n manualEntryDate?: Date;\n}\nexport class SeniorityReportModel extends BaseApiModelClass< ISeniorityReportModel > implements ISeniorityReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personRank: number;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n personSuperior?: string;\n personEntryDate: Date;\n personBirthDate?: Date;\n personFunction: string;\n personContractType: ContractType;\n personContract?: string;\n personExitDate?: Date;\n flightHoursBeforeEdwSec: number;\n flightHoursEdwShSec: number;\n flightHoursEdwLhSec: number;\n flightHoursTotalEdwSec: number;\n flightHoursTotalSec: number;\n ofcInsHoursTotalSec: number;\n personWishCreatedDate?: Date;\n personWishType?: string;\n personWishStatus?: PersonWishStatus;\n personCrpInputDate?: Date;\n personId: string;\n nextStep?: string;\n typeRating?: string;\n typeRatingMint?: string;\n seniorityComment?: string;\n commentChangedBy?: string;\n commentChangedDate?: Date;\n readonly projectedExitDate?: Date;\n manualPlannedExitDate?: Date;\n manualEntryDate?: Date;\n}\n\nexport interface ISeniorityReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class SeniorityReportModelDataSourceLoadOptions extends BaseApiModelClass< ISeniorityReportModelDataSourceLoadOptions > implements ISeniorityReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface ISetEstimatedCiCoModel {\n cells: CheckInCheckOutModel[];\n}\nexport class SetEstimatedCiCoModel extends BaseApiModelClass< ISetEstimatedCiCoModel > implements ISetEstimatedCiCoModel {\n cells: CheckInCheckOutModel[];\n}\n\nexport interface ISetEstimatedCiCoResult {\n operationId: string;\n flightIds: string[];\n}\nexport class SetEstimatedCiCoResult extends BaseApiModelClass< ISetEstimatedCiCoResult > implements ISetEstimatedCiCoResult {\n operationId: string;\n flightIds: string[];\n}\n\nexport enum ShadowDutyType {\n Lay = \"Lay\",\n None = \"None\",\n Off = \"Off\",\n}\n\nexport enum ShadowOffCategory {\n AfterDub = \"AfterDub\",\n AfterLhRotation = \"AfterLhRotation\",\n AfterReserve = \"AfterReserve\",\n AfterShBlock = \"AfterShBlock\",\n AfterVac = \"AfterVac\",\n BeforeAbsence = \"BeforeAbsence\",\n BeforeLhRotation = \"BeforeLhRotation\",\n BeforeNightDuty = \"BeforeNightDuty\",\n BeforeReserve = \"BeforeReserve\",\n BeforeSim = \"BeforeSim\",\n BeforeVac = \"BeforeVac\",\n Military = \"Military\",\n None = \"None\",\n}\n\nexport enum ShadowOffType {\n Ftl = \"Ftl\",\n Gav = \"Gav\",\n LayT = \"LayT\",\n None = \"None\",\n}\n\nexport interface IShowSettingModel {\n value: boolean;\n}\nexport class ShowSettingModel extends BaseApiModelClass< IShowSettingModel > implements IShowSettingModel {\n value: boolean;\n}\n\nexport interface ISignAttestateDto {\n courseId: string;\n firstName: string;\n lastName: string;\n nationality: string;\n birthDate: Date;\n placeOfBirth: string;\n isAlreadyHaveCCA: boolean;\n locationLatitude?: number;\n locationLongitude?: number;\n signature: string;\n}\nexport class SignAttestateDto extends BaseApiModelClass< ISignAttestateDto > implements ISignAttestateDto {\n courseId: string;\n firstName: string;\n lastName: string;\n nationality: string;\n birthDate: Date;\n placeOfBirth: string;\n isAlreadyHaveCCA: boolean;\n locationLatitude?: number;\n locationLongitude?: number;\n signature: string;\n}\n\nexport interface ISimCoursePositionInfo {\n oldSimCourseId?: string;\n newSimCourseId?: string;\n timestamp: Date;\n date: Date;\n operationName: string;\n personId: string;\n personCode: string;\n principalName: string;\n isChangeLogEnabled: boolean;\n}\nexport class SimCoursePositionInfo extends BaseApiModelClass< ISimCoursePositionInfo > implements ISimCoursePositionInfo {\n oldSimCourseId?: string;\n newSimCourseId?: string;\n timestamp: Date;\n date: Date;\n operationName: string;\n personId: string;\n personCode: string;\n principalName: string;\n isChangeLogEnabled: boolean;\n}\n\nexport interface ISimCoursePositionLogInfo {\n timestamp: Date;\n operationName: string;\n principalName: string;\n oldCount?: number;\n newCount?: number;\n oldInstructorRequirements?: InstructorRequirements;\n newInstructorRequirements?: InstructorRequirements;\n isRolledBack: boolean;\n}\nexport class SimCoursePositionLogInfo extends BaseApiModelClass< ISimCoursePositionLogInfo > implements ISimCoursePositionLogInfo {\n timestamp: Date;\n operationName: string;\n principalName: string;\n oldCount?: number;\n newCount?: number;\n oldInstructorRequirements?: InstructorRequirements;\n newInstructorRequirements?: InstructorRequirements;\n isRolledBack: boolean;\n}\n\nexport interface ISimDutyData {\n aircraftType: SimulationAircraftType;\n memberType: SimulationMemberType;\n simulationType: SimulationType;\n instructorRequirements?: InstructorRequirements;\n airportRcd?: string;\n locationRcd?: string;\n startTimezone: string;\n lpl4TraineePersonId?: string;\n simulationCourseId?: string;\n crewPosition?: SimulationCoursePosition;\n ebtModuleId?: string;\n startUtc: Date;\n endUtc: Date;\n}\nexport class SimDutyData extends BaseApiModelClass< ISimDutyData > implements ISimDutyData {\n aircraftType: SimulationAircraftType;\n memberType: SimulationMemberType;\n simulationType: SimulationType;\n instructorRequirements?: InstructorRequirements;\n airportRcd?: string;\n locationRcd?: string;\n startTimezone: string;\n lpl4TraineePersonId?: string;\n simulationCourseId?: string;\n crewPosition?: SimulationCoursePosition;\n ebtModuleId?: string;\n startUtc: Date;\n endUtc: Date;\n}\n\nexport interface ISimLogItem {\n id: string;\n timestamp: Date;\n operationName: string;\n modifiedBy: string;\n date: Date;\n simulationCourseId: string;\n isRolledBack: boolean;\n type: number;\n oldAircraftType?: SimulationAircraftType;\n newAircraftType?: SimulationAircraftType;\n oldSimulationType?: SimulationType;\n newSimulationType?: SimulationType;\n oldAirportRcd?: string;\n newAirportRcd?: string;\n oldLocationRcd?: string;\n newLocationRcd?: string;\n oldSimName?: string;\n newSimName?: string;\n oldStartBriefingUtc?: Date;\n newStartBriefingUtc?: Date;\n oldStartUtc?: Date;\n newStartUtc?: Date;\n oldEndUtc?: Date;\n newEndUtc?: Date;\n oldEndDebriefingUtc?: Date;\n newEndDebriefingUtc?: Date;\n oldCourseId?: string;\n newCourseId?: string;\n oldCourseName?: string;\n newCourseName?: string;\n oldCourseGroup?: string;\n newCourseGroup?: string;\n oldSimSession?: string;\n newSimSession?: string;\n oldFreetext?: string;\n newFreetext?: string;\n oldEbtModuleType?: EbtModuleType;\n newEbtModuleType?: EbtModuleType;\n oldStartTimeZone?: string;\n newStartTimeZone?: string;\n}\nexport class SimLogItem extends BaseApiModelClass< ISimLogItem > implements ISimLogItem {\n id: string;\n timestamp: Date;\n operationName: string;\n modifiedBy: string;\n date: Date;\n simulationCourseId: string;\n isRolledBack: boolean;\n type: number;\n oldAircraftType?: SimulationAircraftType;\n newAircraftType?: SimulationAircraftType;\n oldSimulationType?: SimulationType;\n newSimulationType?: SimulationType;\n oldAirportRcd?: string;\n newAirportRcd?: string;\n oldLocationRcd?: string;\n newLocationRcd?: string;\n oldSimName?: string;\n newSimName?: string;\n oldStartBriefingUtc?: Date;\n newStartBriefingUtc?: Date;\n oldStartUtc?: Date;\n newStartUtc?: Date;\n oldEndUtc?: Date;\n newEndUtc?: Date;\n oldEndDebriefingUtc?: Date;\n newEndDebriefingUtc?: Date;\n oldCourseId?: string;\n newCourseId?: string;\n oldCourseName?: string;\n newCourseName?: string;\n oldCourseGroup?: string;\n newCourseGroup?: string;\n oldSimSession?: string;\n newSimSession?: string;\n oldFreetext?: string;\n newFreetext?: string;\n oldEbtModuleType?: EbtModuleType;\n newEbtModuleType?: EbtModuleType;\n oldStartTimeZone?: string;\n newStartTimeZone?: string;\n}\n\nexport enum SimulationAircraftType {\n Is320 = \"Is320\",\n Is330 = \"Is330\",\n Is340 = \"Is340\",\n Is350 = \"Is350\",\n IsM83 = \"IsM83\",\n}\n\nexport interface ISimulationBriefInfo {\n id: string;\n referenceDate: Date;\n startDateUtc: Date;\n endDateUtc: Date;\n startOffsetLt: string;\n endOffsetLt: string;\n aircraftType: SimulationAircraftType;\n memberType: SimulationMemberType;\n simulationType: SimulationType;\n instructorRequirements?: InstructorRequirements;\n lpl4TraineePersonName?: string;\n locationRcd?: string;\n ebtModuleType?: EbtModuleType;\n}\nexport class SimulationBriefInfo extends BaseApiModelClass< ISimulationBriefInfo > implements ISimulationBriefInfo {\n id: string;\n referenceDate: Date;\n startDateUtc: Date;\n endDateUtc: Date;\n startOffsetLt: string;\n endOffsetLt: string;\n aircraftType: SimulationAircraftType;\n memberType: SimulationMemberType;\n simulationType: SimulationType;\n instructorRequirements?: InstructorRequirements;\n lpl4TraineePersonName?: string;\n locationRcd?: string;\n ebtModuleType?: EbtModuleType;\n}\n\nexport interface ISimulationCourseCrewDto {\n id: string;\n code: string;\n memberType: SimulationMemberType;\n coursePosition?: SimulationCoursePosition;\n lpl4TraineePerson?: string;\n instructorRequirements?: InstructorRequirements;\n}\nexport class SimulationCourseCrewDto extends BaseApiModelClass< ISimulationCourseCrewDto > implements ISimulationCourseCrewDto {\n id: string;\n code: string;\n memberType: SimulationMemberType;\n coursePosition?: SimulationCoursePosition;\n lpl4TraineePerson?: string;\n instructorRequirements?: InstructorRequirements;\n}\n\nexport interface ISimulationCourseDto {\n overrideAllowed: boolean;\n comment?: string;\n commentIdsToDelete: string[];\n swapType?: PersonDutySwapType;\n ltoRequestComment?: string;\n stoRequestComment?: string;\n flightRequestComment?: string;\n doNotRevertPoints: boolean;\n id?: string;\n aircraftType: SimulationAircraftType;\n courseId: string;\n courseGroup?: string;\n courseName?: string;\n simName?: string;\n simSession?: string;\n simulationType: SimulationType;\n date: Date;\n startBriefingUtc: Date;\n startUtc: Date;\n endDebriefingUtc: Date;\n endUtc: Date;\n freetext?: string;\n locationRcd: string;\n airportRcd?: string;\n ebtModuleType?: EbtModuleType;\n startTimeZone: string;\n endTimeZone?: string;\n dutyIds: string[];\n positions: SimulationCoursePositionDto[];\n crews?: SimulationCourseCrewDto[];\n}\nexport class SimulationCourseDto extends BaseApiModelClass< ISimulationCourseDto > implements ISimulationCourseDto {\n overrideAllowed: boolean;\n comment?: string;\n commentIdsToDelete: string[];\n swapType?: PersonDutySwapType;\n ltoRequestComment?: string;\n stoRequestComment?: string;\n flightRequestComment?: string;\n doNotRevertPoints: boolean;\n id?: string;\n aircraftType: SimulationAircraftType;\n courseId: string;\n courseGroup?: string;\n courseName?: string;\n simName?: string;\n simSession?: string;\n simulationType: SimulationType;\n date: Date;\n startBriefingUtc: Date;\n startUtc: Date;\n endDebriefingUtc: Date;\n endUtc: Date;\n freetext?: string;\n locationRcd: string;\n airportRcd?: string;\n ebtModuleType?: EbtModuleType;\n startTimeZone: string;\n endTimeZone?: string;\n dutyIds: string[];\n positions: SimulationCoursePositionDto[];\n crews?: SimulationCourseCrewDto[];\n}\n\nexport enum SimulationCoursePosition {\n Assist = \"Assist\",\n CM = \"CM\",\n FO = \"FO\",\n Instructor = \"Instructor\",\n Instructor2 = \"Instructor2\",\n Observer = \"Observer\",\n}\n\nexport interface ISimulationCoursePositionDto {\n coursePosition: SimulationCoursePosition;\n count: number;\n instructorRequirements?: InstructorRequirements;\n}\nexport class SimulationCoursePositionDto extends BaseApiModelClass< ISimulationCoursePositionDto > implements ISimulationCoursePositionDto {\n coursePosition: SimulationCoursePosition;\n count: number;\n instructorRequirements?: InstructorRequirements;\n}\n\nexport interface ISimulationCourseResult {\n duties: DutyItem[];\n operationId?: string;\n errorMessage?: string;\n simulationCourseId: string;\n}\nexport class SimulationCourseResult extends BaseApiModelClass< ISimulationCourseResult > implements ISimulationCourseResult {\n duties: DutyItem[];\n operationId?: string;\n errorMessage?: string;\n simulationCourseId: string;\n}\n\nexport enum SimulationMemberType {\n Assist = \"Assist\",\n Crew = \"Crew\",\n Instructor = \"Instructor\",\n Observer = \"Observer\",\n}\n\nexport interface ISimulationModel {\n id: string;\n aircraftType: SimulationAircraftType;\n memberType: SimulationMemberType;\n simulationType: SimulationType;\n instructorRequirements?: InstructorRequirements;\n airportRcd?: string;\n locationRcd?: string;\n startDateUtc: Date;\n endDateUtc: Date;\n checkinDateUtc: Date;\n checkoutDateUtc: Date;\n lp4TraineePersonId?: string;\n simulationCourseId?: string;\n coursePosition?: SimulationCoursePosition;\n ebtModuleId?: string;\n startTimeZone: string;\n}\nexport class SimulationModel extends BaseApiModelClass< ISimulationModel > implements ISimulationModel {\n id: string;\n aircraftType: SimulationAircraftType;\n memberType: SimulationMemberType;\n simulationType: SimulationType;\n instructorRequirements?: InstructorRequirements;\n airportRcd?: string;\n locationRcd?: string;\n startDateUtc: Date;\n endDateUtc: Date;\n checkinDateUtc: Date;\n checkoutDateUtc: Date;\n lp4TraineePersonId?: string;\n simulationCourseId?: string;\n coursePosition?: SimulationCoursePosition;\n ebtModuleId?: string;\n startTimeZone: string;\n}\n\nexport interface ISimulationReportFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n simulationType: SimulationType[];\n}\nexport class SimulationReportFilter extends BaseApiModelClass< ISimulationReportFilter > implements ISimulationReportFilter {\n rowLimit?: number;\n dateFrom: Date;\n dateTo: Date;\n simulationType: SimulationType[];\n}\n\nexport interface ISimulationReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n aircraftType: SimulationAircraftType;\n simName?: string;\n simSession?: string;\n locationRcd: string;\n instructorId?: string;\n instructorCode?: string;\n instructorFirstName?: string;\n instructorLastName?: string;\n crewCmId?: string;\n crewCmCode?: string;\n crewCmFirstName?: string;\n crewCmLastName?: string;\n crewFoId?: string;\n crewFoCode?: string;\n crewFoFirstName?: string;\n crewFoLastName?: string;\n startDate: Date;\n endDate: Date;\n timeFromLt: Date;\n timeToLt: Date;\n simulationType: SimulationType;\n}\nexport class SimulationReportModel extends BaseApiModelClass< ISimulationReportModel > implements ISimulationReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n aircraftType: SimulationAircraftType;\n simName?: string;\n simSession?: string;\n locationRcd: string;\n instructorId?: string;\n instructorCode?: string;\n instructorFirstName?: string;\n instructorLastName?: string;\n crewCmId?: string;\n crewCmCode?: string;\n crewCmFirstName?: string;\n crewCmLastName?: string;\n crewFoId?: string;\n crewFoCode?: string;\n crewFoFirstName?: string;\n crewFoLastName?: string;\n startDate: Date;\n endDate: Date;\n timeFromLt: Date;\n timeToLt: Date;\n simulationType: SimulationType;\n}\n\nexport interface ISimulationReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class SimulationReportModelDataSourceLoadOptions extends BaseApiModelClass< ISimulationReportModelDataSourceLoadOptions > implements ISimulationReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport enum SimulationType {\n AirportRecency = \"AirportRecency\",\n Check = \"Check\",\n EbtDay1 = \"EbtDay1\",\n EbtDay2 = \"EbtDay2\",\n LdgRecency = \"LdgRecency\",\n None = \"None\",\n Refresher = \"Refresher\",\n Skilltest = \"Skilltest\",\n Training = \"Training\",\n}\n\nexport interface ISimulatorLicenseStatusReportFilter {\n rowLimit?: number;\n isShowOverrides: boolean;\n}\nexport class SimulatorLicenseStatusReportFilter extends BaseApiModelClass< ISimulatorLicenseStatusReportFilter > implements ISimulatorLicenseStatusReportFilter {\n rowLimit?: number;\n isShowOverrides: boolean;\n}\n\nexport interface ISimulatorLicenseStatusReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n crewId: string;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n function?: string;\n a320: boolean;\n a340: boolean;\n a350: boolean;\n licenseFleet?: string;\n opcDate?: Date;\n tr320Date?: Date;\n tr340Date?: Date;\n tr350Date?: Date;\n lastSimDutyDate?: Date;\n lastSimDutyType?: string;\n lastSimDutyEbtModuleType?: string;\n nextSimDutyDate?: Date;\n nextSimDutyType?: string;\n nextSimDutyEbtModuleType?: string;\n}\nexport class SimulatorLicenseStatusReportModel extends BaseApiModelClass< ISimulatorLicenseStatusReportModel > implements ISimulatorLicenseStatusReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personId: string;\n crewId: string;\n personCode: string;\n personFirstName?: string;\n personLastName?: string;\n function?: string;\n a320: boolean;\n a340: boolean;\n a350: boolean;\n licenseFleet?: string;\n opcDate?: Date;\n tr320Date?: Date;\n tr340Date?: Date;\n tr350Date?: Date;\n lastSimDutyDate?: Date;\n lastSimDutyType?: string;\n lastSimDutyEbtModuleType?: string;\n nextSimDutyDate?: Date;\n nextSimDutyType?: string;\n nextSimDutyEbtModuleType?: string;\n}\n\nexport interface ISimulatorLicenseStatusReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class SimulatorLicenseStatusReportModelDataSourceLoadOptions extends BaseApiModelClass< ISimulatorLicenseStatusReportModelDataSourceLoadOptions > implements ISimulatorLicenseStatusReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface ISingleDaysModel {\n singleDaysMonthPt: number;\n singleDaysMonthInvalid: boolean;\n}\nexport class SingleDaysModel extends BaseApiModelClass< ISingleDaysModel > implements ISingleDaysModel {\n singleDaysMonthPt: number;\n singleDaysMonthInvalid: boolean;\n}\n\nexport enum SortOrder {\n Asc = \"Asc\",\n Desc = \"Desc\",\n}\n\nexport interface ISortingInfo {\n selector?: string;\n desc: boolean;\n}\nexport class SortingInfo extends BaseApiModelClass< ISortingInfo > implements ISortingInfo {\n selector?: string;\n desc: boolean;\n}\n\nexport interface IStandbyReportComment {\n personId?: string;\n id: string;\n text?: string;\n validFromDate: Date;\n category: CommentCategory;\n}\nexport class StandbyReportComment extends BaseApiModelClass< IStandbyReportComment > implements IStandbyReportComment {\n personId?: string;\n id: string;\n text?: string;\n validFromDate: Date;\n category: CommentCategory;\n}\n\nexport interface IStandbyReportFilter {\n rowLimit?: number;\n date?: Date;\n functionId?: string;\n contractTypes?: ContractType[];\n personIds?: string[];\n isIncludeFormerSbx: boolean;\n isOnlyFormerSbx: boolean;\n}\nexport class StandbyReportFilter extends BaseApiModelClass< IStandbyReportFilter > implements IStandbyReportFilter {\n rowLimit?: number;\n date?: Date;\n functionId?: string;\n contractTypes?: ContractType[];\n personIds?: string[];\n isIncludeFormerSbx: boolean;\n isOnlyFormerSbx: boolean;\n}\n\nexport interface IStandbyReportLicenseInfo {\n personId: string;\n name: string;\n shortName: string;\n shortNameNeutral?: string;\n licenseId: string;\n}\nexport class StandbyReportLicenseInfo extends BaseApiModelClass< IStandbyReportLicenseInfo > implements IStandbyReportLicenseInfo {\n personId: string;\n name: string;\n shortName: string;\n shortNameNeutral?: string;\n licenseId: string;\n}\n\nexport interface IStandbyReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n code: string;\n name?: string;\n function: string;\n contract: string;\n licenses: StandbyReportLicenseInfo[];\n a320: string;\n comments: StandbyReportComment[];\n title?: string;\n dayDuty: string;\n offDaysMonth: number;\n offDaysQuarter: number;\n offDaysYear: number;\n dh7?: string;\n dh14?: string;\n dh28?: string;\n bh28?: string;\n email?: string;\n phoneNumber?: string;\n phone?: string;\n phoneMobile?: string;\n phoneMobilePrivate?: string;\n phonePrivate?: string;\n fromDate?: string;\n toDate?: string;\n}\nexport class StandbyReportModel extends BaseApiModelClass< IStandbyReportModel > implements IStandbyReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n code: string;\n name?: string;\n function: string;\n contract: string;\n licenses: StandbyReportLicenseInfo[];\n a320: string;\n comments: StandbyReportComment[];\n title?: string;\n dayDuty: string;\n offDaysMonth: number;\n offDaysQuarter: number;\n offDaysYear: number;\n dh7?: string;\n dh14?: string;\n dh28?: string;\n bh28?: string;\n email?: string;\n phoneNumber?: string;\n phone?: string;\n phoneMobile?: string;\n phoneMobilePrivate?: string;\n phonePrivate?: string;\n fromDate?: string;\n toDate?: string;\n}\n\nexport interface IStandbyReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class StandbyReportModelDataSourceLoadOptions extends BaseApiModelClass< IStandbyReportModelDataSourceLoadOptions > implements IStandbyReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface ISummaryInfo {\n selector?: string;\n summaryType?: string;\n}\nexport class SummaryInfo extends BaseApiModelClass< ISummaryInfo > implements ISummaryInfo {\n selector?: string;\n summaryType?: string;\n}\n\nexport interface ISuppressErrorsRequest {\n dutyCells: DutyCellModel[];\n errorType: string;\n reason: SuppressValidationErrorReason;\n commentText: string;\n}\nexport class SuppressErrorsRequest extends BaseApiModelClass< ISuppressErrorsRequest > implements ISuppressErrorsRequest {\n dutyCells: DutyCellModel[];\n errorType: string;\n reason: SuppressValidationErrorReason;\n commentText: string;\n}\n\nexport interface ISuppressErrorsResult {\n resolvedErrorsCount: number;\n}\nexport class SuppressErrorsResult extends BaseApiModelClass< ISuppressErrorsResult > implements ISuppressErrorsResult {\n resolvedErrorsCount: number;\n}\n\nexport enum SuppressValidationErrorReason {\n CrewControl = \"CrewControl\",\n CrewRequest = \"CrewRequest\",\n Irregularity = \"Irregularity\",\n Other = \"Other\",\n Planning = \"Planning\",\n Training = \"Training\",\n}\n\nexport interface ISuppressValidationModel {\n date: Date;\n personId: string;\n errorType?: string;\n errorKey: string;\n commentText: string;\n errorMessage: string;\n errorCategory?: ValidationErrorCategory;\n suppressReason: SuppressValidationErrorReason;\n isSecond: boolean;\n}\nexport class SuppressValidationModel extends BaseApiModelClass< ISuppressValidationModel > implements ISuppressValidationModel {\n date: Date;\n personId: string;\n errorType?: string;\n errorKey: string;\n commentText: string;\n errorMessage: string;\n errorCategory?: ValidationErrorCategory;\n suppressReason: SuppressValidationErrorReason;\n isSecond: boolean;\n}\n\nexport interface ISwapDutyData {\n personOne: string;\n personTwo: string;\n}\nexport class SwapDutyData extends BaseApiModelClass< ISwapDutyData > implements ISwapDutyData {\n personOne: string;\n personTwo: string;\n}\n\nexport interface ISwapRotationModel {\n sourceRotationId?: string;\n destinationRotationId: string;\n type: CrewType;\n overrideAllowed: boolean;\n}\nexport class SwapRotationModel extends BaseApiModelClass< ISwapRotationModel > implements ISwapRotationModel {\n sourceRotationId?: string;\n destinationRotationId: string;\n type: CrewType;\n overrideAllowed: boolean;\n}\n\nexport interface ISwapSectorModel {\n sourceFlightId?: string;\n destinationFlightId: string;\n type: CrewType;\n overrideAllowed: boolean;\n}\nexport class SwapSectorModel extends BaseApiModelClass< ISwapSectorModel > implements ISwapSectorModel {\n sourceFlightId?: string;\n destinationFlightId: string;\n type: CrewType;\n overrideAllowed: boolean;\n}\n\nexport interface ITempFileDto {\n id: string;\n fileName?: string;\n timestamp: Date;\n principalId: string;\n}\nexport class TempFileDto extends BaseApiModelClass< ITempFileDto > implements ITempFileDto {\n id: string;\n fileName?: string;\n timestamp: Date;\n principalId: string;\n}\n\nexport interface ITemplateFormattingModel {\n template: TemplateModel;\n dataModel?: string;\n}\nexport class TemplateFormattingModel extends BaseApiModelClass< ITemplateFormattingModel > implements ITemplateFormattingModel {\n template: TemplateModel;\n dataModel?: string;\n}\n\nexport interface ITemplateGenericParameterDescriptionModel {\n displayName?: string;\n text?: string;\n}\nexport class TemplateGenericParameterDescriptionModel extends BaseApiModelClass< ITemplateGenericParameterDescriptionModel > implements ITemplateGenericParameterDescriptionModel {\n displayName?: string;\n text?: string;\n}\n\nexport interface ITemplateGroupModel {\n name?: string;\n codes: string[];\n}\nexport class TemplateGroupModel extends BaseApiModelClass< ITemplateGroupModel > implements ITemplateGroupModel {\n name?: string;\n codes: string[];\n}\n\nexport interface ITemplateModel {\n group?: string;\n to?: string;\n cc?: string;\n bcc?: string;\n subject: string;\n body: string;\n genericParameters: TemplateGenericParameterDescriptionModel[];\n errors: { [key: string]: string; };\n}\nexport class TemplateModel extends BaseApiModelClass< ITemplateModel > implements ITemplateModel {\n group?: string;\n to?: string;\n cc?: string;\n bcc?: string;\n subject: string;\n body: string;\n genericParameters: TemplateGenericParameterDescriptionModel[];\n errors: { [key: string]: string; };\n}\n\nexport interface ITimeModel {\n dateTime: Date;\n timeZone?: string;\n}\nexport class TimeModel extends BaseApiModelClass< ITimeModel > implements ITimeModel {\n dateTime: Date;\n timeZone?: string;\n}\n\nexport interface ITimeTransitionEvent {\n timeUtc: Date;\n minutesUtcTimeDiff: number;\n}\nexport class TimeTransitionEvent extends BaseApiModelClass< ITimeTransitionEvent > implements ITimeTransitionEvent {\n timeUtc: Date;\n minutesUtcTimeDiff: number;\n}\n\nexport interface ITradeUnionButtonInfoModel {\n lastModifiedDateTimeUtc?: Date;\n exportedFileName?: string;\n isFileExist: boolean;\n fileSize: number;\n id: string;\n}\nexport class TradeUnionButtonInfoModel extends BaseApiModelClass< ITradeUnionButtonInfoModel > implements ITradeUnionButtonInfoModel {\n lastModifiedDateTimeUtc?: Date;\n exportedFileName?: string;\n isFileExist: boolean;\n fileSize: number;\n id: string;\n}\n\nexport interface ITradeUnionExportFilter {\n rowLimit?: number;\n}\nexport class TradeUnionExportFilter extends BaseApiModelClass< ITradeUnionExportFilter > implements ITradeUnionExportFilter {\n rowLimit?: number;\n}\n\nexport interface ITradeUnionExportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n jobStatus: string;\n principalDisplayName: string;\n startDateTimeUtc: Date;\n duration: number;\n jobParameters?: string;\n exception?: string;\n hasFile: boolean;\n}\nexport class TradeUnionExportModel extends BaseApiModelClass< ITradeUnionExportModel > implements ITradeUnionExportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n id: string;\n jobStatus: string;\n principalDisplayName: string;\n startDateTimeUtc: Date;\n duration: number;\n jobParameters?: string;\n exception?: string;\n hasFile: boolean;\n}\n\nexport interface ITradeUnionExportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class TradeUnionExportModelDataSourceLoadOptions extends BaseApiModelClass< ITradeUnionExportModelDataSourceLoadOptions > implements ITradeUnionExportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport enum TradeUnionExportType {\n AeroPers = \"AeroPers\",\n Efa = \"Efa\",\n}\n\nexport enum TypeRatingFilter {\n A320 = \"A320\",\n A320And330Only = \"A320And330Only\",\n A320And340Only = \"A320And340Only\",\n A320And350Only = \"A320And350Only\",\n A320Only = \"A320Only\",\n A330 = \"A330\",\n A330And340Only = \"A330And340Only\",\n A330Only = \"A330Only\",\n A334 = \"A334\",\n A340 = \"A340\",\n A340And350Only = \"A340And350Only\",\n A340Only = \"A340Only\",\n A345 = \"A345\",\n A350 = \"A350\",\n A350Only = \"A350Only\",\n NewCommer = \"NewCommer\",\n Training = \"Training\",\n}\n\nexport interface ITzvDayAssigmentCreateModel {\n date: Date;\n comment?: string;\n}\nexport class TzvDayAssigmentCreateModel extends BaseApiModelClass< ITzvDayAssigmentCreateModel > implements ITzvDayAssigmentCreateModel {\n date: Date;\n comment?: string;\n}\n\nexport interface ITzvDaysBalanceInfo {\n personId: string;\n tzvYearId: string;\n grantedByContract: number;\n reductionByVac: number;\n backlogPreviousYear: number;\n manualCorrections: TzvDaysManualCorrectionDto[];\n manualCorrectionsTotal: number;\n availableThisYear: number;\n totalAvailable: number;\n tzvCount: number;\n tzvFCount: number;\n tzvMCount: number;\n tzvVBCount: number;\n tzvCountTotal: number;\n remainingThisYear: number;\n balanceTotal: number;\n}\nexport class TzvDaysBalanceInfo extends BaseApiModelClass< ITzvDaysBalanceInfo > implements ITzvDaysBalanceInfo {\n personId: string;\n tzvYearId: string;\n grantedByContract: number;\n reductionByVac: number;\n backlogPreviousYear: number;\n manualCorrections: TzvDaysManualCorrectionDto[];\n manualCorrectionsTotal: number;\n availableThisYear: number;\n totalAvailable: number;\n tzvCount: number;\n tzvFCount: number;\n tzvMCount: number;\n tzvVBCount: number;\n tzvCountTotal: number;\n remainingThisYear: number;\n balanceTotal: number;\n}\n\nexport interface ITzvDaysManualCorrectionDto {\n id: string;\n description: string;\n tzvDaysDelta: number;\n}\nexport class TzvDaysManualCorrectionDto extends BaseApiModelClass< ITzvDaysManualCorrectionDto > implements ITzvDaysManualCorrectionDto {\n id: string;\n description: string;\n tzvDaysDelta: number;\n}\n\nexport interface ITzvYearDto {\n id: string;\n codeName: string;\n dateFrom: Date;\n dateTo: Date;\n personGroupType: PersonGroupType;\n}\nexport class TzvYearDto extends BaseApiModelClass< ITzvYearDto > implements ITzvYearDto {\n id: string;\n codeName: string;\n dateFrom: Date;\n dateTo: Date;\n personGroupType: PersonGroupType;\n}\n\nexport interface ITzvYearFilterModel {\n value: string;\n label: string;\n personGroupType: PersonGroupType;\n}\nexport class TzvYearFilterModel extends BaseApiModelClass< ITzvYearFilterModel > implements ITzvYearFilterModel {\n value: string;\n label: string;\n personGroupType: PersonGroupType;\n}\n\nexport interface ITzvYearOverviewFilter {\n rowLimit?: number;\n isForCabin: boolean;\n isForCockpit: boolean;\n}\nexport class TzvYearOverviewFilter extends BaseApiModelClass< ITzvYearOverviewFilter > implements ITzvYearOverviewFilter {\n rowLimit?: number;\n isForCabin: boolean;\n isForCockpit: boolean;\n}\n\nexport interface ITzvYearOverviewModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personCode: string;\n personId: string;\n crewId: string;\n personName?: string;\n personFunction?: string;\n personContract?: number;\n personContractTypeModel: string;\n contractModelType: ContractModelType;\n personContractTypeModelDetails?: string;\n personContractComment?: string;\n vacEntitlement?: number;\n personSeniorityRank: number;\n entryDate?: Date;\n exitDate?: Date;\n fleetGroup?: string;\n licenseFleet?: string;\n tzvYear: string;\n tzvYearId: string;\n backlogPreviousYear: number;\n entitlementActualYear: number;\n reductionByVac: number;\n manualCorrection: number;\n correctedEntitlement: number;\n confirmedTzv: number;\n daysRemainingActualYear: number;\n balance: number;\n cabinConfirmedJan?: number;\n cabinConfirmedFeb?: number;\n cabinConfirmedMar?: number;\n cabinConfirmedApr?: number;\n cabinConfirmedMay?: number;\n cabinConfirmedJun?: number;\n cabinConfirmedJul?: number;\n cabinConfirmedAug?: number;\n cabinConfirmedSep?: number;\n cabinConfirmedOct?: number;\n cabinConfirmedNov?: number;\n cabinConfirmedDec?: number;\n cockpitConfirmedJan?: number;\n cockpitConfirmedFeb?: number;\n cockpitConfirmedMar?: number;\n cockpitConfirmedApr?: number;\n cockpitConfirmedMay?: number;\n cockpitConfirmedJun?: number;\n cockpitConfirmedJul?: number;\n cockpitConfirmedAug?: number;\n cockpitConfirmedSep?: number;\n cockpitConfirmedOct?: number;\n cockpitConfirmedNov?: number;\n cockpitConfirmedDec?: number;\n plannerComment?: string;\n}\nexport class TzvYearOverviewModel extends BaseApiModelClass< ITzvYearOverviewModel > implements ITzvYearOverviewModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n personCode: string;\n personId: string;\n readonly crewId: string;\n personName?: string;\n personFunction?: string;\n personContract?: number;\n readonly personContractTypeModel: string;\n contractModelType: ContractModelType;\n personContractTypeModelDetails?: string;\n personContractComment?: string;\n vacEntitlement?: number;\n personSeniorityRank: number;\n entryDate?: Date;\n exitDate?: Date;\n fleetGroup?: string;\n licenseFleet?: string;\n tzvYear: string;\n tzvYearId: string;\n backlogPreviousYear: number;\n entitlementActualYear: number;\n reductionByVac: number;\n manualCorrection: number;\n correctedEntitlement: number;\n confirmedTzv: number;\n daysRemainingActualYear: number;\n balance: number;\n cabinConfirmedJan?: number;\n cabinConfirmedFeb?: number;\n cabinConfirmedMar?: number;\n cabinConfirmedApr?: number;\n cabinConfirmedMay?: number;\n cabinConfirmedJun?: number;\n cabinConfirmedJul?: number;\n cabinConfirmedAug?: number;\n cabinConfirmedSep?: number;\n cabinConfirmedOct?: number;\n cabinConfirmedNov?: number;\n cabinConfirmedDec?: number;\n cockpitConfirmedJan?: number;\n cockpitConfirmedFeb?: number;\n cockpitConfirmedMar?: number;\n cockpitConfirmedApr?: number;\n cockpitConfirmedMay?: number;\n cockpitConfirmedJun?: number;\n cockpitConfirmedJul?: number;\n cockpitConfirmedAug?: number;\n cockpitConfirmedSep?: number;\n cockpitConfirmedOct?: number;\n cockpitConfirmedNov?: number;\n cockpitConfirmedDec?: number;\n plannerComment?: string;\n}\n\nexport interface ITzvYearOverviewModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class TzvYearOverviewModelDataSourceLoadOptions extends BaseApiModelClass< ITzvYearOverviewModelDataSourceLoadOptions > implements ITzvYearOverviewModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface ITzvYearPlannersCommentModel {\n personId: string;\n tzvYearId: string;\n comment: string;\n}\nexport class TzvYearPlannersCommentModel extends BaseApiModelClass< ITzvYearPlannersCommentModel > implements ITzvYearPlannersCommentModel {\n personId: string;\n tzvYearId: string;\n comment: string;\n}\n\nexport interface IUndoOperationModel {\n operationId: string;\n operationDateUtc: Date;\n name: string;\n isChangeLogEnabled: boolean;\n}\nexport class UndoOperationModel extends BaseApiModelClass< IUndoOperationModel > implements IUndoOperationModel {\n operationId: string;\n operationDateUtc: Date;\n name: string;\n isChangeLogEnabled: boolean;\n}\n\nexport interface IUpdateChangeLogTextModel {\n changeLogItemId: string;\n text: string;\n}\nexport class UpdateChangeLogTextModel extends BaseApiModelClass< IUpdateChangeLogTextModel > implements IUpdateChangeLogTextModel {\n changeLogItemId: string;\n text: string;\n}\n\nexport interface IUpdateDutyResult {\n changes: DutyChangeRegions;\n warnings: DutyWarningModel[];\n errors: string[];\n changedFlights: string[];\n changedRotationWithRequests: string[];\n updatePendingDutyIds: string[];\n operationId: string;\n isUpdatePending: boolean;\n}\nexport class UpdateDutyResult extends BaseApiModelClass< IUpdateDutyResult > implements IUpdateDutyResult {\n readonly changes: DutyChangeRegions;\n readonly warnings: DutyWarningModel[];\n readonly errors: string[];\n readonly changedFlights: string[];\n readonly changedRotationWithRequests: string[];\n readonly updatePendingDutyIds: string[];\n readonly operationId: string;\n readonly isUpdatePending: boolean;\n}\n\nexport interface IUpdateNbuMonthRequest {\n date: Date;\n isCompete: boolean;\n}\nexport class UpdateNbuMonthRequest extends BaseApiModelClass< IUpdateNbuMonthRequest > implements IUpdateNbuMonthRequest {\n date: Date;\n isCompete: boolean;\n}\n\nexport interface IUrgentErrorDetail {\n personId: string;\n code: string;\n email?: string;\n phone?: string;\n date: Date;\n isCockpit: boolean;\n}\nexport class UrgentErrorDetail extends BaseApiModelClass< IUrgentErrorDetail > implements IUrgentErrorDetail {\n personId: string;\n code: string;\n email?: string;\n phone?: string;\n date: Date;\n isCockpit: boolean;\n}\n\nexport interface IUrgentErrorDetailOperation {\n name: string;\n person: string;\n date?: Date;\n}\nexport class UrgentErrorDetailOperation extends BaseApiModelClass< IUrgentErrorDetailOperation > implements IUrgentErrorDetailOperation {\n name: string;\n person: string;\n date?: Date;\n}\n\nexport interface IUrgentErrorsModel {\n errors: UrgentErrorDetail[];\n periodFrom: Date;\n periodTo: Date;\n}\nexport class UrgentErrorsModel extends BaseApiModelClass< IUrgentErrorsModel > implements IUrgentErrorsModel {\n errors: UrgentErrorDetail[];\n periodFrom: Date;\n periodTo: Date;\n}\n\nexport interface IUrgentFlightDetailsModel {\n duties: DutyPersonActivity[];\n complements: RotationCrewComplement[];\n causeOperations: UrgentErrorDetailOperation[];\n}\nexport class UrgentFlightDetailsModel extends BaseApiModelClass< IUrgentFlightDetailsModel > implements IUrgentFlightDetailsModel {\n duties: DutyPersonActivity[];\n complements: RotationCrewComplement[];\n causeOperations: UrgentErrorDetailOperation[];\n}\n\nexport interface IUrgentFlightModel {\n flightId: string;\n flightNumber: number;\n originRcd: string;\n destinationRcd: string;\n date: Date;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n departureTimeDiffToLt: string;\n arrivalTimeDiffToLt: string;\n statusActionIdentifier?: string;\n isCrewComplete: boolean;\n isCrewCompleteSuppressed: boolean;\n message?: string;\n}\nexport class UrgentFlightModel extends BaseApiModelClass< IUrgentFlightModel > implements IUrgentFlightModel {\n flightId: string;\n flightNumber: number;\n originRcd: string;\n destinationRcd: string;\n date: Date;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n departureTimeDiffToLt: string;\n arrivalTimeDiffToLt: string;\n statusActionIdentifier?: string;\n isCrewComplete: boolean;\n isCrewCompleteSuppressed: boolean;\n message?: string;\n}\n\nexport interface IUrgentFlightRequest {\n flightId: string;\n isCrewCompleteSuppressed: boolean;\n commentText?: string;\n suppressReason: UrgentFlightSupressType;\n}\nexport class UrgentFlightRequest extends BaseApiModelClass< IUrgentFlightRequest > implements IUrgentFlightRequest {\n flightId: string;\n isCrewCompleteSuppressed: boolean;\n commentText?: string;\n suppressReason: UrgentFlightSupressType;\n}\n\nexport enum UrgentFlightSupressType {\n Cancelled = \"Cancelled\",\n CrewIsComplete = \"CrewIsComplete\",\n NotOperatedByWK = \"NotOperatedByWK\",\n Other = \"Other\",\n}\n\nexport interface IUrgentFlightsModel {\n periodFrom: Date;\n periodTo: Date;\n flights: UrgentFlightModel[];\n}\nexport class UrgentFlightsModel extends BaseApiModelClass< IUrgentFlightsModel > implements IUrgentFlightsModel {\n periodFrom: Date;\n periodTo: Date;\n flights: UrgentFlightModel[];\n}\n\nexport interface IVacCapacityFiguresModel {\n date: Date;\n fleetType: FleetType;\n dailyCapacityAvailable: number;\n personTakeCapacity: number;\n}\nexport class VacCapacityFiguresModel extends BaseApiModelClass< IVacCapacityFiguresModel > implements IVacCapacityFiguresModel {\n date: Date;\n fleetType: FleetType;\n dailyCapacityAvailable: number;\n personTakeCapacity: number;\n}\n\nexport interface IVacCapacityMonthFiguresModel {\n personFleetType: string;\n capacityMonthValue: number;\n daysInMonth: number;\n monthStartDate: Date;\n monthEndDate: Date;\n}\nexport class VacCapacityMonthFiguresModel extends BaseApiModelClass< IVacCapacityMonthFiguresModel > implements IVacCapacityMonthFiguresModel {\n personFleetType: string;\n capacityMonthValue: number;\n daysInMonth: number;\n monthStartDate: Date;\n monthEndDate: Date;\n}\n\nexport interface IVacManagementCapacityGroupingModel {\n date: Date;\n capacityFigures: VacCapacityFiguresModel[];\n}\nexport class VacManagementCapacityGroupingModel extends BaseApiModelClass< IVacManagementCapacityGroupingModel > implements IVacManagementCapacityGroupingModel {\n date: Date;\n capacityFigures: VacCapacityFiguresModel[];\n}\n\nexport interface IVacManagementCapacityMonthGroupingModel {\n month: number;\n year: number;\n capacityMonthFigures: VacCapacityMonthFiguresModel[];\n}\nexport class VacManagementCapacityMonthGroupingModel extends BaseApiModelClass< IVacManagementCapacityMonthGroupingModel > implements IVacManagementCapacityMonthGroupingModel {\n month: number;\n year: number;\n capacityMonthFigures: VacCapacityMonthFiguresModel[];\n}\n\nexport interface IVacManagementMonthOptions {\n value: number;\n label: string;\n}\nexport class VacManagementMonthOptions extends BaseApiModelClass< IVacManagementMonthOptions > implements IVacManagementMonthOptions {\n value: number;\n label: string;\n}\n\nexport interface IVacManagementPersonVacDetailsFilter {\n rowLimit?: number;\n isForCabin: boolean;\n isForCockpit: boolean;\n}\nexport class VacManagementPersonVacDetailsFilter extends BaseApiModelClass< IVacManagementPersonVacDetailsFilter > implements IVacManagementPersonVacDetailsFilter {\n rowLimit?: number;\n isForCabin: boolean;\n isForCockpit: boolean;\n}\n\nexport interface IVacManagementReportFilter {\n rowLimit?: number;\n isForCabin: boolean;\n isForCockpit: boolean;\n isForGround: boolean;\n}\nexport class VacManagementReportFilter extends BaseApiModelClass< IVacManagementReportFilter > implements IVacManagementReportFilter {\n rowLimit?: number;\n isForCabin: boolean;\n isForCockpit: boolean;\n isForGround: boolean;\n}\n\nexport interface IVacPeriodChangeStatusModel {\n status: VacationYearPeriodStatus;\n}\nexport class VacPeriodChangeStatusModel extends BaseApiModelClass< IVacPeriodChangeStatusModel > implements IVacPeriodChangeStatusModel {\n status: VacationYearPeriodStatus;\n}\n\nexport interface IVacRequestChangePlannersCommentModel {\n comment?: string;\n isVisibleToCrewComment: boolean;\n}\nexport class VacRequestChangePlannersCommentModel extends BaseApiModelClass< IVacRequestChangePlannersCommentModel > implements IVacRequestChangePlannersCommentModel {\n comment?: string;\n isVisibleToCrewComment: boolean;\n}\n\nexport interface IVacRequestChangePlannersPointsModel {\n points: number;\n}\nexport class VacRequestChangePlannersPointsModel extends BaseApiModelClass< IVacRequestChangePlannersPointsModel > implements IVacRequestChangePlannersPointsModel {\n points: number;\n}\n\nexport interface IVacRequestReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n requestBlockId: string;\n requestBlockStatus: PersonRequestVacBlockStatus;\n decision: PersonRequestVacBlockDecision;\n personId: string;\n personCode: string;\n personName?: string;\n personSeniority: number;\n personSeniorityRank: number;\n entryDate?: Date;\n exitDate?: Date;\n personContract?: number;\n personFunction?: string;\n personAircrafts?: string;\n fleetType?: string;\n createdDate: Date;\n vacationYear: string;\n vacationYearPeriod: string;\n type: PersonRequestVacType;\n vacationDaysGrantedPerYear: number;\n isEntitlementActualYear80: boolean;\n vacationDaysConfirmed: number;\n vacationDaysPendingConfirmed: number;\n vacationDaysSumConfirmed: number;\n vacationDaysRemaining: number;\n vacationPointsP: number;\n vacationPointsS: number;\n vacationPointsN: number;\n points: number;\n approvedDateFrom?: Date;\n approvedDateTo?: Date;\n approvedDaysInBlock?: number;\n approvedVacDaysInBlock?: number;\n variantHighPrioId: string;\n variantHighPrioPeriodDateFrom: Date;\n variantHighPrioPeriodDateTo: Date;\n variantHighPrioEntryDate: Date;\n variantHighPrioDays: number;\n variantHighPrioDaysMin?: number;\n variantHighPrioStatus: PersonRequestVacStatus;\n variantMediumPrioId?: string;\n variantMediumPrioPeriodDateFrom?: Date;\n variantMediumPrioPeriodDateTo?: Date;\n variantMediumPrioEntryDate?: Date;\n variantMediumPrioDays?: number;\n variantMediumPrioDaysMin?: number;\n variantMediumPrioStatus?: PersonRequestVacStatus;\n variantLowPrioId?: string;\n variantLowPrioPeriodDateFrom?: Date;\n variantLowPrioPeriodDateTo?: Date;\n variantLowPrioEntryDate?: Date;\n variantLowPrioDays?: number;\n variantLowPrioDaysMin?: number;\n variantLowPrioStatus?: PersonRequestVacStatus;\n firstAlternativeId?: string;\n firstAlternativePeriodDateFrom?: Date;\n firstAlternativePeriodDateTo?: Date;\n firstAlternativeEntryDate?: Date;\n firstAlternativeDays?: number;\n firstAlternativeStatus?: PersonRequestVacStatus;\n secondAlternativeId?: string;\n secondAlternativePeriodDateFrom?: Date;\n secondAlternativePeriodDateTo?: Date;\n secondAlternativeEntryDate?: Date;\n secondAlternativeDays?: number;\n secondAlternativeStatus?: PersonRequestVacStatus;\n commentPerson?: string;\n commentPlanner?: string;\n commentVisibleToCrew?: string;\n minRequestDate: Date;\n maxRequestDate: Date;\n}\nexport class VacRequestReportModel extends BaseApiModelClass< IVacRequestReportModel > implements IVacRequestReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n requestBlockId: string;\n requestBlockStatus: PersonRequestVacBlockStatus;\n decision: PersonRequestVacBlockDecision;\n personId: string;\n personCode: string;\n personName?: string;\n personSeniority: number;\n personSeniorityRank: number;\n entryDate?: Date;\n exitDate?: Date;\n personContract?: number;\n personFunction?: string;\n personAircrafts?: string;\n fleetType?: string;\n createdDate: Date;\n vacationYear: string;\n vacationYearPeriod: string;\n type: PersonRequestVacType;\n vacationDaysGrantedPerYear: number;\n isEntitlementActualYear80: boolean;\n vacationDaysConfirmed: number;\n vacationDaysPendingConfirmed: number;\n vacationDaysSumConfirmed: number;\n vacationDaysRemaining: number;\n vacationPointsP: number;\n vacationPointsS: number;\n vacationPointsN: number;\n points: number;\n approvedDateFrom?: Date;\n approvedDateTo?: Date;\n approvedDaysInBlock?: number;\n approvedVacDaysInBlock?: number;\n variantHighPrioId: string;\n variantHighPrioPeriodDateFrom: Date;\n variantHighPrioPeriodDateTo: Date;\n variantHighPrioEntryDate: Date;\n variantHighPrioDays: number;\n variantHighPrioDaysMin?: number;\n variantHighPrioStatus: PersonRequestVacStatus;\n variantMediumPrioId?: string;\n variantMediumPrioPeriodDateFrom?: Date;\n variantMediumPrioPeriodDateTo?: Date;\n variantMediumPrioEntryDate?: Date;\n variantMediumPrioDays?: number;\n variantMediumPrioDaysMin?: number;\n variantMediumPrioStatus?: PersonRequestVacStatus;\n variantLowPrioId?: string;\n variantLowPrioPeriodDateFrom?: Date;\n variantLowPrioPeriodDateTo?: Date;\n variantLowPrioEntryDate?: Date;\n variantLowPrioDays?: number;\n variantLowPrioDaysMin?: number;\n variantLowPrioStatus?: PersonRequestVacStatus;\n firstAlternativeId?: string;\n firstAlternativePeriodDateFrom?: Date;\n firstAlternativePeriodDateTo?: Date;\n firstAlternativeEntryDate?: Date;\n firstAlternativeDays?: number;\n firstAlternativeStatus?: PersonRequestVacStatus;\n secondAlternativeId?: string;\n secondAlternativePeriodDateFrom?: Date;\n secondAlternativePeriodDateTo?: Date;\n secondAlternativeEntryDate?: Date;\n secondAlternativeDays?: number;\n secondAlternativeStatus?: PersonRequestVacStatus;\n commentPerson?: string;\n commentPlanner?: string;\n commentVisibleToCrew?: string;\n minRequestDate: Date;\n maxRequestDate: Date;\n}\n\nexport interface IVacRequestReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class VacRequestReportModelDataSourceLoadOptions extends BaseApiModelClass< IVacRequestReportModelDataSourceLoadOptions > implements IVacRequestReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\n\nexport interface IVacRequestTypeModel {\n label: string;\n value: string;\n}\nexport class VacRequestTypeModel extends BaseApiModelClass< IVacRequestTypeModel > implements IVacRequestTypeModel {\n label: string;\n value: string;\n}\n\nexport interface IVacRequestUpdateSelectedRangeModel {\n requestId: string;\n selectedDateFrom: Date;\n selectedDateTo: Date;\n}\nexport class VacRequestUpdateSelectedRangeModel extends BaseApiModelClass< IVacRequestUpdateSelectedRangeModel > implements IVacRequestUpdateSelectedRangeModel {\n requestId: string;\n selectedDateFrom: Date;\n selectedDateTo: Date;\n}\n\nexport interface IVacYearFilterModel {\n value: string;\n label: string;\n personGroupType: PersonGroupType;\n}\nexport class VacYearFilterModel extends BaseApiModelClass< IVacYearFilterModel > implements IVacYearFilterModel {\n value: string;\n label: string;\n personGroupType: PersonGroupType;\n}\n\nexport interface IVacYearPeriodModel {\n label: string;\n value: string;\n vacationYear: string;\n personGroupType: PersonGroupType;\n status: VacationYearPeriodStatus;\n}\nexport class VacYearPeriodModel extends BaseApiModelClass< IVacYearPeriodModel > implements IVacYearPeriodModel {\n label: string;\n value: string;\n vacationYear: string;\n personGroupType: PersonGroupType;\n status: VacationYearPeriodStatus;\n}\n\nexport interface IVacYearPeriodReportFilterModel {\n label: string;\n value: string;\n}\nexport class VacYearPeriodReportFilterModel extends BaseApiModelClass< IVacYearPeriodReportFilterModel > implements IVacYearPeriodReportFilterModel {\n label: string;\n value: string;\n}\n\nexport interface IVacYearPeriodReportFilterOption {\n codeName: string;\n status: VacationYearPeriodStatus;\n}\nexport class VacYearPeriodReportFilterOption extends BaseApiModelClass< IVacYearPeriodReportFilterOption > implements IVacYearPeriodReportFilterOption {\n codeName: string;\n status: VacationYearPeriodStatus;\n}\n\nexport interface IVacYearReportFilterModel {\n value: string;\n label: string;\n}\nexport class VacYearReportFilterModel extends BaseApiModelClass< IVacYearReportFilterModel > implements IVacYearReportFilterModel {\n value: string;\n label: string;\n}\n\nexport enum VacationType {\n Normal = \"Normal\",\n Priority = \"Priority\",\n School = \"School\",\n U_UBU = \"U_UBU\",\n U_VAC = \"U_VAC\",\n UBU_C = \"UBU_C\",\n UBU_JS = \"UBU_JS\",\n UBU_P = \"UBU_P\",\n Unpaid = \"Unpaid\",\n UnpaidReleased = \"UnpaidReleased\",\n VAC = \"VAC\",\n Variable = \"Variable\",\n Wish = \"Wish\",\n}\n\nexport interface IVacationYearDto {\n id: string;\n codeName: string;\n dateFrom: Date;\n dateTo: Date;\n personGroupType: PersonGroupType;\n functionGroupId: string;\n hasOpenedPeriods: boolean;\n}\nexport class VacationYearDto extends BaseApiModelClass< IVacationYearDto > implements IVacationYearDto {\n id: string;\n codeName: string;\n dateFrom: Date;\n dateTo: Date;\n personGroupType: PersonGroupType;\n readonly functionGroupId: string;\n hasOpenedPeriods: boolean;\n}\n\nexport interface IVacationYearPeriodDto {\n id: string;\n codeName: string;\n personGroupType: PersonGroupType;\n dateFrom: Date;\n dateTo: Date;\n status: VacationYearPeriodStatus;\n vacationYearId: string;\n vacationYearCodeName: string;\n vacationYearDateFrom: Date;\n vacationYearDateTo: Date;\n}\nexport class VacationYearPeriodDto extends BaseApiModelClass< IVacationYearPeriodDto > implements IVacationYearPeriodDto {\n id: string;\n codeName: string;\n personGroupType: PersonGroupType;\n dateFrom: Date;\n dateTo: Date;\n status: VacationYearPeriodStatus;\n vacationYearId: string;\n vacationYearCodeName: string;\n vacationYearDateFrom: Date;\n vacationYearDateTo: Date;\n}\n\nexport enum VacationYearPeriodStatus {\n Approval = \"Approval\",\n Closed = \"Closed\",\n Extended = \"Extended\",\n OpenRoundOne = \"OpenRoundOne\",\n OpenRoundTwo = \"OpenRoundTwo\",\n Upcoming = \"Upcoming\",\n}\n\nexport interface IValidationCommentDto {\n commentId?: string;\n personId: string;\n date: Date;\n text: string;\n}\nexport class ValidationCommentDto extends BaseApiModelClass< IValidationCommentDto > implements IValidationCommentDto {\n commentId?: string;\n personId: string;\n date: Date;\n text: string;\n}\n\nexport enum ValidationErrorCategory {\n Agreement = \"Agreement\",\n EASA = \"EASA\",\n Ftl = \"Ftl\",\n Gav = \"Gav\",\n GroundError = \"GroundError\",\n GroundWarning = \"GroundWarning\",\n License = \"License\",\n None = \"None\",\n Other = \"Other\",\n RequestTool = \"RequestTool\",\n Roster = \"Roster\",\n RosterGround = \"RosterGround\",\n Warning = \"Warning\",\n}\n\nexport interface IValidationErrorModel {\n message: string;\n errorType: string;\n}\nexport class ValidationErrorModel extends BaseApiModelClass< IValidationErrorModel > implements IValidationErrorModel {\n message: string;\n errorType: string;\n}\n\nexport interface IValidationErrorsRequestModel {\n dutyCells: DutyCellModel[];\n}\nexport class ValidationErrorsRequestModel extends BaseApiModelClass< IValidationErrorsRequestModel > implements IValidationErrorsRequestModel {\n dutyCells: DutyCellModel[];\n}\n\nexport interface IValidatorCustomLanding {\n date: Date;\n airportRcd?: string;\n aircraftTypeId: string;\n count: number;\n}\nexport class ValidatorCustomLanding extends BaseApiModelClass< IValidatorCustomLanding > implements IValidatorCustomLanding {\n date: Date;\n airportRcd?: string;\n aircraftTypeId: string;\n count: number;\n}\n\nexport interface IValidatorCustomTakeoff {\n date: Date;\n airportRcd?: string;\n aircraftTypeId: string;\n count: number;\n}\nexport class ValidatorCustomTakeoff extends BaseApiModelClass< IValidatorCustomTakeoff > implements IValidatorCustomTakeoff {\n date: Date;\n airportRcd?: string;\n aircraftTypeId: string;\n count: number;\n}\n\nexport enum VasaSalaryPeriodStatus {\n Failed = \"Failed\",\n Imported = \"Imported\",\n Pending = \"Pending\",\n ReadyToRelease = \"ReadyToRelease\",\n Released = \"Released\",\n}\n\nexport interface IWebBasedTrainingCreateModel {\n personId: string;\n competencyId: string;\n date: Date;\n}\nexport class WebBasedTrainingCreateModel extends BaseApiModelClass< IWebBasedTrainingCreateModel > implements IWebBasedTrainingCreateModel {\n personId: string;\n competencyId: string;\n date: Date;\n}\n\nexport interface IWebBasedTrainingDto {\n competencyId: string;\n competencyName: string;\n date: Date;\n}\nexport class WebBasedTrainingDto extends BaseApiModelClass< IWebBasedTrainingDto > implements IWebBasedTrainingDto {\n competencyId: string;\n competencyName: string;\n date: Date;\n}\n\nexport interface IWishHistoryModel {\n principalName: string;\n wishName: string;\n newStatus?: PersonWishStatus;\n olStatus?: PersonWishStatus;\n timestamp: Date;\n type: DutyLogType;\n}\nexport class WishHistoryModel extends BaseApiModelClass< IWishHistoryModel > implements IWishHistoryModel {\n principalName: string;\n wishName: string;\n newStatus?: PersonWishStatus;\n olStatus?: PersonWishStatus;\n timestamp: Date;\n type: DutyLogType;\n}\n\nexport interface IWishTypeModel {\n id: string;\n name: string;\n}\nexport class WishTypeModel extends BaseApiModelClass< IWishTypeModel > implements IWishTypeModel {\n id: string;\n name: string;\n}\n\nexport interface IWorkHoursModel {\n workHoursActualSecs: number;\n workHoursPlannedSecs: number;\n workHoursBalanceSecs: number;\n workHoursDiffSecs: number;\n workHours1DaySecs: number;\n workHourTib1DaySecs: number;\n workHourTib1DayMidnight: number;\n workHoursActualTibSecs: number;\n workHours1DayPlannedSecs: number;\n}\nexport class WorkHoursModel extends BaseApiModelClass< IWorkHoursModel > implements IWorkHoursModel {\n workHoursActualSecs: number;\n workHoursPlannedSecs: number;\n workHoursBalanceSecs: number;\n workHoursDiffSecs: number;\n workHours1DaySecs: number;\n workHourTib1DaySecs: number;\n workHourTib1DayMidnight: number;\n workHoursActualTibSecs: number;\n workHours1DayPlannedSecs: number;\n}\n\nexport interface IXStarCommentModel {\n dutyId: string;\n comment: string;\n}\nexport class XStarCommentModel extends BaseApiModelClass< IXStarCommentModel > implements IXStarCommentModel {\n dutyId: string;\n comment: string;\n}\n\nexport interface IXStarMonitoringReportFilter {\n rowLimit?: number;\n dutyId?: string;\n dateFrom: Date;\n dateTo: Date;\n}\nexport class XStarMonitoringReportFilter extends BaseApiModelClass< IXStarMonitoringReportFilter > implements IXStarMonitoringReportFilter {\n rowLimit?: number;\n dutyId?: string;\n dateFrom: Date;\n dateTo: Date;\n}\n\nexport interface IXStarMonitoringReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n dutyId: string;\n date: Date;\n airlineRcd: string;\n flightNumber: number;\n originRcd: string;\n destinationRcd: string;\n plannedDepartureDateTimeUtc: Date;\n plannedArrivalDateTimeUtc: Date;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n departureDateTimeUtc: Date;\n arrivalDateTimeUtc: Date;\n checkinDateTimeUtc?: Date;\n plannedCheckinDateTimeUtc?: Date;\n checkoutDateTimeUtc?: Date;\n outOfTheGateUtc?: Date;\n onTheGroundUtc?: Date;\n intoTheGateUtc?: Date;\n dutyPeriodFrom?: Date;\n dutyPeriodTo?: Date;\n personCode: string;\n activityCodeName: string;\n cas?: number;\n overdutyMinutes?: number;\n actualFdpMinutes?: number;\n actualMfdpSecs?: number;\n comment?: string;\n commentModifiedBy?: string;\n commentModifiedAt?: Date;\n}\nexport class XStarMonitoringReportModel extends BaseApiModelClass< IXStarMonitoringReportModel > implements IXStarMonitoringReportModel {\n key?: any;\n items: any[];\n count?: number;\n summary?: any[];\n dutyId: string;\n date: Date;\n airlineRcd: string;\n flightNumber: number;\n originRcd: string;\n destinationRcd: string;\n plannedDepartureDateTimeUtc: Date;\n plannedArrivalDateTimeUtc: Date;\n estimatedDepartureDateTimeUtc?: Date;\n estimatedArrivalDateTimeUtc?: Date;\n readonly departureDateTimeUtc: Date;\n readonly arrivalDateTimeUtc: Date;\n checkinDateTimeUtc?: Date;\n plannedCheckinDateTimeUtc?: Date;\n checkoutDateTimeUtc?: Date;\n outOfTheGateUtc?: Date;\n onTheGroundUtc?: Date;\n intoTheGateUtc?: Date;\n dutyPeriodFrom?: Date;\n dutyPeriodTo?: Date;\n personCode: string;\n activityCodeName: string;\n cas?: number;\n overdutyMinutes?: number;\n actualFdpMinutes?: number;\n actualMfdpSecs?: number;\n comment?: string;\n commentModifiedBy?: string;\n commentModifiedAt?: Date;\n}\n\nexport interface IXStarMonitoringReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport class XStarMonitoringReportModelDataSourceLoadOptions extends BaseApiModelClass< IXStarMonitoringReportModelDataSourceLoadOptions > implements IXStarMonitoringReportModelDataSourceLoadOptions {\n requireTotalCount: boolean;\n requireGroupCount: boolean;\n isCountQuery: boolean;\n isSummaryQuery: boolean;\n skip: number;\n take: number;\n sort?: SortingInfo[];\n group?: GroupingInfo[];\n totalSummary?: SummaryInfo[];\n groupSummary?: SummaryInfo[];\n select?: string[];\n preSelect?: string[];\n remoteSelect?: boolean;\n remoteGrouping?: boolean;\n expandLinqSumType?: boolean;\n primaryKey?: string[];\n defaultSort?: string;\n stringToLower?: boolean;\n paginateViaPrimaryKey?: boolean;\n sortByPrimaryKey?: boolean;\n allowAsyncOverSync: boolean;\n hasInvalidEntries: boolean;\n filter?: any[];\n}\nexport interface FileParameter {\n data: any;\n fileName: string;\n}","export class DayDutyFilter {\n date: Date;\n activityIds: string[] = [];\n flightIds: string[] = [];\n errorTypes: number[] = [];\n flags: string[] = [];\n text: string;\n}\n","import { PersonRequestSummaryStatus, VacationRequestColorizeType, VacationRequestPriority, PersonRequestType } from '@app/AppConstants/PersonVacation';\nimport { ActivityCode } from '@app/AppConstants/ActivityCode';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { ActivityService } from '@app/Services/ActivityService';\nimport { service } from '@app/Services/_ServicesRegister';\nimport { IDayDuty } from './IDutyItem';\nimport { DutyItem, DutySubItem } from '@app/Models/WebApiModels';\n\nexport class DayDuty implements IDayDuty {\n private _activityService: ActivityService = service.resolve(ActivityService);\n private _hasDuties: boolean = false;\n private _dutyClass: string = 'person-grid-duty';\n private _dutyDay: Date;\n private _subTitle: string = '';\n private _codeName: string = '';\n private _flightTitle: string = '';\n private _flightDateFrom: Date | null;\n private _flightDateTo: Date | null;\n private _hasPosition: boolean = false;\n private _hasHomeStudy: boolean = false;\n private _hasDutyPart: boolean = false;\n private _duty: DutyItem | null;\n private _isSplitDay: boolean = false;\n\n constructor(dutyDay: Date, dayDuty: DutyItem | null) {\n this.dutyDay = dutyDay;\n this._duty = dayDuty;\n if (dutyDay.getUTCDate() === 1) this.dutyClass += ' person-grid-period';\n\n if (!dayDuty) return;\n\n if (dayDuty.hasFtlErrors) this.dutyClass += ' has-ftl-errors';\n if (dayDuty.hasGavErrors) this.dutyClass += ' has-gav-errors';\n if (dayDuty.hasGroundWarnings) this.dutyClass += ' has-gav-errors';\n if (dayDuty.hasEasaErrors) this.dutyClass += ' has-easa-errors';\n if (dayDuty.hasAgreementErrors) this.dutyClass += ' has-agreement-errors';\n if (dayDuty.hasOtherErrors) this.dutyClass += ' has-other-errors';\n if (dayDuty.hasGroundErrors) this.dutyClass += ' has-other-errors';\n if (dayDuty.isNotCountableOff && !dayDuty.isAfterNightDuty && !dayDuty.isBeforeNightDuty) this.dutyClass += ' off-no-count';\n\n if (dayDuty.hasNoContract) this.dutyClass += ' no-contract';\n if (dayDuty.hasAugmentedFlight) this.dutyClass += ' augmented';\n if (dayDuty.hasExtendedFlight) this.dutyClass += ' extended';\n if (dayDuty.hasLongHaulFlight) this.dutyClass += ' rotation-flight';\n if (!dayDuty.hasLongHaulFlight && dayDuty.activities.some(a => !!a.flightId)) this.dutyClass += ' short-haul-flight';\n if (dayDuty.hasCustomCheckin) this.dutyClass += ' has-custom-ci';\n if (dayDuty.hasCustomCheckout) this.dutyClass += ' has-custom-co';\n if (dayDuty.hasComment) this.dutyClass += ' has-comment';\n if (dayDuty.isFormerStandbyOrReserve) this.dutyClass += ' has-frsv-fsb';\n if (dayDuty.hasNotFullSuppressed) this.dutyClass += ' not-full-suppressed';\n\n if (!(dayDuty.activities.length || dayDuty.shadowOffType || dayDuty.isBeforeNightDuty || dayDuty.isAfterNightDuty) && dayDuty.requestedItemStatus && dayDuty.requestedItemStatus !== PersonRequestSummaryStatus.Requested) {\n this.dutyClass += ' person-request';\n if (dayDuty.requestedItemPriority === VacationRequestPriority.high) {\n this.dutyClass += '-prio-high';\n }\n if (dayDuty.requestedItemPriority === VacationRequestPriority.medium) {\n this.dutyClass += '-prio-medium';\n }\n if (dayDuty.requestedItemPriority === VacationRequestPriority.low) {\n this.dutyClass += '-prio-low';\n }\n if (dayDuty.requestedItemColorizeType === VacationRequestColorizeType.slashed) {\n this.dutyClass += '-slashed';\n }\n if (dayDuty.requestedItemStatus === PersonRequestSummaryStatus.Approved) {\n this.dutyClass += ' slash-approved';\n }\n if (dayDuty.requestedItemStatus === PersonRequestSummaryStatus.Rejected) {\n this.dutyClass += ' slash-rejected';\n }\n if (dayDuty.requestedItemVacationTypesCount && dayDuty.requestedItemVacationTypesCount > 0) {\n if (dayDuty.requestedItemVacationTypesCount === 1) {\n this.dutyClass += ' count-one';\n }\n if (dayDuty.requestedItemVacationTypesCount === 2) {\n this.dutyClass += ' count-two';\n }\n if (dayDuty.requestedItemVacationTypesCount > 2) {\n this.dutyClass += ' count-many';\n }\n }\n }\n\n let isSim = false;\n let firstActivity: DutySubItem | null = null;\n let rsvActivity: DutySubItem | null = null;\n const flightActivities: DutySubItem[] = [];\n let nonFlightActivities: DutySubItem[] = [];\n let additionalActivities: DutySubItem[] = [];\n\n if (dayDuty.checkinDateTimeUtc) {\n this.flightDateFrom = dayDuty.checkinDateTimeUtc;\n this.flightTitle = ' ';\n }\n\n if (dayDuty.checkoutDateTimeUtc) {\n this.flightDateTo = dayDuty.checkoutDateTimeUtc;\n this.flightTitle = ' ';\n }\n\n if (dayDuty.activities && dayDuty.activities.length) {\n this._hasDuties = false;\n\n for (let i = 0; i < dayDuty.activities.length; i++) {\n const activity = dayDuty.activities[i];\n\n if (activity.activityCodeName === ActivityCode.POS) {\n this._hasPosition = true;\n }\n\n if (activity.activityCodeName === ActivityCode.SIM) {\n isSim = true;\n }\n\n if (activity.activityCodeName === ActivityCode.RSV) {\n rsvActivity = activity;\n }\n\n if (activity.activityCodeName === ActivityCode.HOME_STUDY) {\n this._hasHomeStudy = true;\n }\n\n if (activity.activityCodeName === ActivityCode.DUTY_PART) {\n this._hasDutyPart = true;\n }\n\n if (ActivityCode.HiddenActivities.indexOf(activity.activityCodeName) !== -1) {\n continue;\n }\n this._hasDuties = true;\n\n if (!firstActivity) {\n firstActivity = activity;\n }\n\n if (firstActivity && (\n (activity.dateStartUtc && firstActivity.dateStartUtc && activity.dateStartUtc < firstActivity.dateStartUtc)\n || (firstActivity.activityCodeName === ActivityCode.POS && activity.activityCodeName !== ActivityCode.POS))\n ) {\n firstActivity = activity;\n }\n\n if (firstActivity && (firstActivity.activityCodeName === ActivityCode.UFT_F || firstActivity.activityCodeName === ActivityCode.UFT_O)\n && (activity.activityCodeName !== ActivityCode.SBS || activity.activityCodeName !== ActivityCode.SBC || activity.activityCodeName !== ActivityCode.SBL)\n ) {\n firstActivity = activity;\n }\n\n if (activity.flightId) {\n flightActivities.push(activity);\n } else if (activity.activityCodeName === ActivityCode.UFT_F || activity.activityCodeName === ActivityCode.UFT_O) {\n additionalActivities.push(activity);\n } else {\n nonFlightActivities.push(activity);\n }\n }\n\n if (firstActivity) {\n this.codeName = firstActivity.activityCodeName;\n\n if (this.codeName === ActivityCode.OPS && firstActivity.title === `NIT`) {\n this.codeName = `${ActivityCode.OPS}-NIT`;\n }\n\n let title = '';\n if (flightActivities.length) {\n title = this._getFlightsTitle(flightActivities);\n nonFlightActivities = nonFlightActivities.filter(x => x.activityCodeName !== ActivityCode.POS);\n if (nonFlightActivities.length) {\n this.codeName = nonFlightActivities[0].activityCodeName;\n }\n }\n\n nonFlightActivities.push(...additionalActivities);\n if (nonFlightActivities.length) {\n if (!dayDuty.isAfterNightDuty && !dayDuty.isBeforeNightDuty) {\n const dutyTitle = nonFlightActivities.map(a => {\n return this._activityService.buildActivityName(a.activityCodeName, a.vacationType || null) + (a.title && !dayDuty.isFlex ? '-' + a.title : '');\n }).join('-');\n if (dutyTitle) title += (title ? '-' : '') + dutyTitle;\n }\n\n const activity = nonFlightActivities[0];\n\n if (!this.flightDateFrom) {\n this.flightDateFrom = activity.dateStartUtc && DateTimeService.isValidDate(activity.dateStartUtc) ? activity.dateStartUtc : null;\n }\n if (!this.flightDateTo) {\n this.flightDateTo = activity.dateEndUtc && DateTimeService.isValidDate(activity.dateEndUtc) ? activity.dateEndUtc : null;\n }\n }\n\n this.flightTitle = title;\n }\n }\n\n if (!firstActivity && dayDuty.checkinDateTimeUtc && dayDuty.checkoutDateTimeUtc) {\n this.dutyClass += ' day-split';\n this._isSplitDay = true;\n }\n\n if (dayDuty.isAfterNightDuty || dayDuty.isBeforeNightDuty) {\n const codeName = dayDuty.isAfterNightDuty ? ActivityCode.AND : ActivityCode.BND;\n if (flightActivities.length) {\n if (codeName === ActivityCode.AND) {\n this.flightTitle = this.flightTitle + '-' + codeName;\n this.codeName = codeName;\n } else {\n this.codeName = this.flightTitle = this.flightTitle + '-' + codeName;\n }\n } else {\n this.codeName = this.flightTitle = codeName;\n }\n }\n\n this._hasDuties = this._hasDuties || this._hasPosition;\n\n if (dayDuty.customTitle) {\n const isSpecialRsv = rsvActivity && rsvActivity.dateStartUtc && rsvActivity.dateEndUtc;\n if (isSim || isSpecialRsv) {\n this.flightTitle += '-' + dayDuty.customTitle;\n } else if (dayDuty.isAfterNightDuty) {\n this.subTitle = '';\n } else {\n this.subTitle = dayDuty.customTitle;\n }\n }\n }\n\n private _getFlightsTitle(flightActivities: DutySubItem[]) {\n let flightActivity: DutySubItem | null = null;\n for (const a of flightActivities) {\n if (a.flightId) {\n flightActivity = a;\n break;\n }\n }\n\n if (!flightActivity) {\n return '';\n }\n\n const isDifferentRotationsFlights = flightActivities.length === 2 && flightActivity.rotationKey !== flightActivities[flightActivities.length - 1].rotationKey;\n if (flightActivities.length > 2 && flightActivity.flightNumber || isDifferentRotationsFlights) {\n const lastFlightActivity = flightActivities[flightActivities.length - 1];\n return flightActivity.flightNumber + '-' + lastFlightActivity.flightNumber;\n } else {\n const flightNumber: number | null = flightActivity.flightNumber || null;\n return flightNumber ? flightNumber.toString() : '';\n }\n }\n\n get dutyDay(): Date {\n //1995-12-17T03:24:00Z\n //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date\n return this._dutyDay;\n }\n\n set dutyDay(value: Date) {\n this._dutyDay = value;\n }\n\n get dutyClass(): string {\n return this._dutyClass;\n }\n\n set dutyClass(value: string) {\n this._dutyClass = value;\n }\n\n get codeName(): string {\n return this._codeName;\n }\n\n set codeName(value: string) {\n this._codeName = value;\n }\n\n get subTitle(): string {\n return this._subTitle;\n }\n\n set subTitle(value: string) {\n this._subTitle = value;\n }\n\n get flightTitle(): string {\n return this._flightTitle;\n }\n\n set flightTitle(value: string) {\n this._flightTitle = value;\n }\n\n get flightDateFrom(): Date | null {\n return this._flightDateFrom;\n }\n\n set flightDateFrom(value: Date | null) {\n this._flightDateFrom = value;\n }\n\n get flightDateTo(): Date | null {\n return this._flightDateTo;\n }\n\n set flightDateTo(value: Date | null) {\n this._flightDateTo = value;\n }\n\n get hasDuties(): boolean {\n return this._hasDuties;\n }\n\n set hasDuties(value: boolean) {\n this._hasDuties = value;\n }\n\n get hasPosition(): boolean {\n return this._hasPosition;\n }\n\n set hasPosition(value: boolean) {\n this._hasPosition = value;\n }\n\n get isSplitDay(): boolean {\n return this._isSplitDay;\n }\n\n set isSplitDay(value: boolean) {\n this._isSplitDay = value;\n }\n\n get hasHomeStudy(): boolean {\n return this._hasHomeStudy;\n }\n\n set hasHomeStudy(value: boolean) {\n this._hasHomeStudy = value;\n }\n\n get hasDutyPart() {\n return this._hasDutyPart;\n }\n\n set hasDutyPart(value: boolean) {\n this._hasDutyPart = value;\n }\n\n get title() {\n let title = this.flightTitle;\n const duty = this._duty;\n\n if (duty) {\n let shadowOffTitle = '';\n if (duty.shadowDutyType) {\n if (duty.shadowDutyType === 'Off') {\n shadowOffTitle = 'OFF';\n }\n if (duty.shadowDutyType === 'Lay') {\n shadowOffTitle = 'LAY';\n\n if (duty.shadowOffType === 'LayT') {\n shadowOffTitle = 'LAY-T';\n }\n }\n }\n\n if (!duty.isAfterNightDuty && !duty.isBeforeNightDuty && duty.requestedItemStatus && duty.requestedItemStatus !== PersonRequestSummaryStatus.Requested && !this.hasDuties) {\n if (duty.requestedItemType === PersonRequestType.Flight) {\n if (duty.requestedActivity) {\n title = duty.requestedActivity.toUpperCase();\n }\n if (duty.requestedFlightNumber) {\n title = duty.requestedFlightNumber;\n }\n }\n if (duty.requestedItemType === PersonRequestType.Vacation) {\n title += duty.requestedItemVacationType && duty.requestedItemVacationType.toUpperCase()\n || duty.requestedActivity && duty.requestedActivity.toUpperCase()\n || (duty.requestedItemIsAlternative ? 'VAC_V' : duty.requestedItemVacationType)\n || '';\n }\n if (duty.requestedItemType === PersonRequestType.LTO) {\n title = 'LTO';\n }\n if (duty.requestedItemType === PersonRequestType.LTE) {\n title = 'LTE';\n }\n if (duty.requestedItemType === PersonRequestType.STO) {\n title = 'STO';\n }\n if (duty.requestedItemType === PersonRequestType.Reserve) {\n title = ActivityCode.RSV_P;\n }\n }\n\n if (title) return title;\n\n return shadowOffTitle;\n }\n\n return title;\n }\n\n get needWrapTitle(): boolean {\n return !(this._duty && this._duty.requestedItemVacationTypesCount && this._duty.requestedItemVacationTypesCount > 0);\n }\n\n get isPlanningPeriodHidden(): boolean {\n return !!this._duty?.isPlanningPeriodHidden;\n }\n}\n","import DateTimeService from '@app/Services/DateTimeService';\nimport { PersonModel } from './WebApiModels';\n\nexport type RosterCell = {\n date: Date;\n person: RosterCellPerson;\n};\n\nexport type RosterCellPerson = {\n id: string;\n code: string;\n};\n\nexport type FlightTarget = {\n id: string;\n airlineRcd: string;\n number: number;\n date: Date;\n legSequenceNumber: number;\n};\nexport type FlightUrgentTarget = FlightTarget & {\n isCrewCompleteSuppresed: boolean;\n};\n\nexport type FlightInformation = FlightTarget & {\n airlineRcd: string;\n originRcd: string;\n destinationRcd: string;\n};\n\nexport type RotationTarget = {\n id: string;\n flights: FlightTarget[];\n isLongHaul: boolean;\n};\n\nclass RosterCellFormatter {\n public formatRange(targetCells: RosterCell[]) {\n if (!targetCells.length) return '';\n\n const selectedPersonList = new Set();\n const selectedDateList = new Set();\n\n targetCells.forEach((cell) => {\n selectedPersonList.add(cell.person.code);\n selectedDateList.add(cell.date.getTime());\n });\n\n let minDate: Date | null = null;\n let maxDate: Date | null = null;\n const isOneDate: boolean = selectedDateList.size === 1;\n if (!isOneDate) {\n const dates = Array.from(selectedDateList)\n .sort()\n .map((d) => new Date(d));\n minDate = dates[0];\n maxDate = dates[dates.length - 1];\n }\n\n const personCodes = [...selectedPersonList];\n const dateTitle = isOneDate ? DateTimeService.toUiDate(targetCells[0].date) : `${minDate && DateTimeService.toUiDate(minDate)} - ${maxDate && DateTimeService.toUiDate(maxDate)} (multi-edit mode)`;\n const personTitle = personCodes.slice(0, 5).join(', ') + (personCodes.length > 5 ? ` and ${personCodes.length - 5} more` : '');\n return `for ${personTitle} on ${dateTitle}`;\n }\n}\n\nclass TargetConstructor {\n private _parseRange = (range: string, reverse: boolean) => {\n const bytes = [];\n for (let i = 0; i < range.length; i += 2) {\n const byte = parseInt(range.substr(i, 2), 16);\n bytes.push(byte);\n }\n\n reverse && bytes.reverse();\n return bytes;\n };\n\n public fromFlightId = (flightId: string): FlightTarget => {\n // Guid: 35918bc9-196d-40ea-9779-889d79b753f0\n // Bytes: C9 8B 91 35 6D 19 EA 40 97 79 88 9D 79 B7 53 F0\n const guid = flightId.split('-');\n const bytes: number[] = [];\n\n bytes.push(...this._parseRange(guid[0], true));\n bytes.push(...this._parseRange(guid[1], true));\n bytes.push(...this._parseRange(guid[2], true));\n bytes.push(...this._parseRange(guid[3], false));\n bytes.push(...this._parseRange(guid[4], false));\n\n let year = bytes[0];\n if (year >= 90)\n {\n year -= 100;\n }\n const date = DateTimeService.date(2000 + year, bytes[1] - 1, bytes[2]);\n const airlineRcd = String.fromCharCode(bytes[3]) + String.fromCharCode(bytes[4]);\n const flightNumber = bytes[5] + bytes[6] * 256;\n const legSequenceNumber = bytes[13];\n\n return {\n id: flightId,\n date: date,\n airlineRcd: airlineRcd,\n number: flightNumber,\n legSequenceNumber: legSequenceNumber\n };\n };\n\n public getStringFrom = (id: string): string => {\n // Guid: 35918bc9-196d-40ea-9779-889d79b753f0\n // Bytes: C9 8B 91 35 6D 19 EA 40 97 79 88 9D 79 B7 53 F0\n const guid = id.split('-');\n const bytes: number[] = [];\n\n bytes.push(...this._parseRange(guid[0], true));\n bytes.push(...this._parseRange(guid[1], true));\n bytes.push(...this._parseRange(guid[2], true));\n bytes.push(...this._parseRange(guid[3], false));\n bytes.push(...this._parseRange(guid[4], false));\n\n const result = bytes.filter(x => x !== 0).map(x => String.fromCharCode(x)).join('');\n return result;\n };\n\n\n public getFlightInformationFromFlightId = (flightId: string): FlightInformation => {\n // Guid: 35918bc9-196d-40ea-9779-889d79b753f0\n // Bytes: C9 8B 91 35 6D 19 EA 40 97 79 88 9D 79 B7 53 F0\n const guid = flightId.split('-');\n const bytes = [];\n\n bytes.push(...this._parseRange(guid[0], true));\n bytes.push(...this._parseRange(guid[1], true));\n bytes.push(...this._parseRange(guid[2], true));\n bytes.push(...this._parseRange(guid[3], false));\n bytes.push(...this._parseRange(guid[4], false));\n\n let year = bytes[0];\n if (year >= 90)\n {\n year -= 100;\n }\n const date = DateTimeService.date(2000 + year, bytes[1] - 1, bytes[2]);\n const flightNumber = bytes[5] + bytes[6] * 256;\n const airlineRcd = String.fromCharCode(bytes[3], bytes[4]);\n const originRcd = String.fromCharCode(bytes[7], bytes[8], bytes[9]);\n const destinationRcd = String.fromCharCode(bytes[10], bytes[11], bytes[12]);\n const legSequenceNumber = bytes[13];\n\n return {\n id: flightId,\n date: date,\n number: flightNumber,\n destinationRcd: destinationRcd,\n originRcd: originRcd,\n airlineRcd: airlineRcd,\n legSequenceNumber: legSequenceNumber\n };\n };\n\n public fromPersonDate(person: PersonModel | RosterCellPerson, date: Date) {\n const target: RosterCell = {\n date: date,\n person: {\n id: person.id,\n code: person.code ? person.code : ''\n }\n };\n return target;\n }\n}\n\nexport const targetConstructor = new TargetConstructor();\nexport const rosterCellFormatter = new RosterCellFormatter();\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, runInAction } from 'mobx';\n\nimport { ApiClient, CommentShortDto } from '@app/Models/WebApiModels';\nimport { Loading } from '@app/Components';\nimport { PromiseCompletion } from '@app/Classes/PromiseCompletion';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\n\ntype CommentsProps = {\n ids?: string[];\n personId?: string;\n date?: Date | null;\n};\n\n@observer\nexport default class Comments extends React.Component {\n private _apiClient: ApiClient = new ApiClient();\n private readonly _loading: PromiseCompletion;\n\n @observable private _comments: CommentShortDto[] = [];\n\n constructor(props: CommentsProps) {\n super(props);\n applyDecorators(this);\n this._loading = new PromiseCompletion();\n }\n\n componentDidMount() {\n void this._loadData();\n }\n\n private async _loadData() {\n const { ids, personId, date } = this.props;\n if (ids) {\n const { data } = await this._apiClient.commentGet({ commentsIds: ids }, { completion: this._loading });\n runInAction(() => {\n this._comments = data;\n });\n }\n if (personId && date) {\n const { data } = await this._apiClient.commentPersonGet({ personId: personId, date: date }, { completion: this._loading });\n runInAction(() => {\n this._comments = data.map(x => { return { id: x.commentId || '', text: x.text }; });\n });\n }\n }\n\n render() {\n return (\n
\n \n\n {!!this._comments.length && <>\n {this._comments.map((x, i) =>
\"{x.text}\"
)}\n }\n
\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport { Icon, ToolTipItem, ToolTipItemMode } from '@app/Components';\nimport Comments from './Comments';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype OperationTextProps = {\n operationId: string;\n text: string | null;\n mode?: ToolTipItemMode;\n};\n\n@observer\nexport default class OperationText extends React.Component {\n\n constructor (props: OperationTextProps) {\n super(props);\n applyDecorators(this);\n }\n\n render () {\n const { text, operationId, mode } = this.props;\n if (!text)\n return '';\n\n let separator = text.includes('CommentIds defined:')\n ? 'CommentIds defined:'\n : 'CommentsIds to delete:';\n\n let textParts = text.split(separator);\n if (textParts.length === 1)\n return text;\n\n const comments = textParts[textParts.length - 1];\n textParts = textParts.splice(0, textParts.length - 1);\n\n const ids = comments.match(/([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})/g)?.map(x => x) || [];\n const targetId = 'comment_target_id_' + operationId;\n\n return (\n <>\n {textParts.join(' ')}\n {ids?.length && <>\n \n } className=\"tooltip-comments\" targetId={targetId} placement=\"bottom\" mode={mode ?? ToolTipItemMode.MouseClick} />\n \n }\n \n );\n }\n}","import { ActivityCode } from '@app/AppConstants/ActivityCode';\nimport { PersonActivity, RosterCell } from '@app/Models';\nimport { PersonInfoModel } from '@app/Models/WebApiModels';\nimport { FunctionGroupIds, PersonFunctionsIds } from '@app/AppConstants/PersonFunctions';\nimport { AzureAuth, UserPermissions } from '@app/Components/AzureAuth';\n\nexport class ActivityService {\n private defaultHiddenActivityCode: Set = new Set(['OBS2', 'GND1', 'GND2', 'CC10', 'CC11', 'CC12', 'CC13', 'ME1', 'ME2', 'TI1', 'TI2', 'FF1', 'FF2']);\n private defaultHiddenGrounActivityCode: Set = new Set(['OBS2', 'CC10', 'CC11', 'CC12', 'CC13', 'ME1', 'ME2', 'TI1', 'TI2', 'FF1', 'FF2']);\n\n public buildActivityName(activityName: string, vacationType?: string | null): string {\n if (activityName === ActivityCode.VAC && vacationType) return vacationType;\n if (activityName === ActivityCode.VAC_ACC && vacationType) return vacationType + '/ACC';\n if (activityName === ActivityCode.VAC_ILL && vacationType) return vacationType + '/ILL';\n return activityName;\n }\n\n public getDefaultColumnVisibility(duties: PersonActivity[]) {\n const hasRosterGroundRead = AzureAuth.hasAccess(UserPermissions.RosterGroundRead);\n const defaultHidden = hasRosterGroundRead ? this.defaultHiddenGrounActivityCode : this.defaultHiddenActivityCode;\n\n const result: Set = new Set([...defaultHidden]);\n\n duties.forEach((d) => {\n if (result.has(d.activityCodeName)) {\n result.delete(d.activityCodeName);\n }\n });\n\n return result;\n }\n\n public checkIsActivityAvailable(person: PersonInfoModel, activityCode: ActivityCode) {\n if (!person.function) return false;\n\n const { functionGroupId, planningFunctionGroupId } = person.function;\n const functionGroups: string[] = [];\n\n if (functionGroupId) {\n functionGroups.push(functionGroupId);\n }\n\n if (planningFunctionGroupId && planningFunctionGroupId !== functionGroupId) {\n functionGroups.push(planningFunctionGroupId);\n }\n\n for (const groupId of functionGroups) {\n if (groupId === FunctionGroupIds.Cabin && this._checkIsCabinActivityAvailable(activityCode)) {\n return true;\n }\n\n if (groupId === FunctionGroupIds.Cockpit && this._checkIsCockpitActivityAvailable(activityCode)) {\n return true;\n }\n\n if (groupId === FunctionGroupIds.Ground && this._checkIsGroundActivityAvailable(person, activityCode)) {\n return true;\n }\n }\n\n return false;\n }\n\n private _ownCellsSelected(selectedCells: RosterCell[], currentPersonId: string) {\n if (!selectedCells.length) {\n return false;\n }\n\n for (const cell of selectedCells) {\n if (cell.person.id !== currentPersonId)\n return false;\n }\n\n return true;\n }\n\n public isOwnChange(activityCode: ActivityCode, selectedCells: RosterCell[], currentPersonId: string) {\n const ownAllowedActivities: ActivityCode[] = [ActivityCode.PIKETT, ActivityCode.ADM, ActivityCode.INS, ActivityCode.TRV];\n return ownAllowedActivities.includes(activityCode) && this._ownCellsSelected(selectedCells, currentPersonId);\n }\n\n public isMinorChange(activityCodeName: ActivityCode, selectedCells: RosterCell[], currentPersonId: string) {\n if (selectedCells.length !== 1) {\n return false;\n }\n\n const hasPermission = AzureAuth.hasAccess(UserPermissions.RosterReleasedPlanMinorChanges);\n if (!hasPermission) {\n return false;\n }\n\n if (activityCodeName === ActivityCode.WISH && this._ownCellsSelected(selectedCells, currentPersonId)) {\n return true;\n }\n\n if (activityCodeName === ActivityCode.SWAP && activityCodeName !== ActivityCode.WISH) {\n return true;\n }\n\n return false;\n }\n\n public isLimitedChange(activityCodeName: ActivityCode, selectedCells: RosterCell[]) {\n if (selectedCells.length !== 1) {\n return false;\n }\n\n const hasPermission = AzureAuth.hasAccess(UserPermissions.RosterGroundLimitedWrite);\n if (!hasPermission) {\n return false;\n }\n\n const limitedActivities: ActivityCode[] = [ActivityCode.TRV, ActivityCode.ADM, ActivityCode.PIKETT, ActivityCode.SWAP];\n if (limitedActivities.includes(activityCodeName)) {\n return true;\n }\n\n return false;\n }\n\n private _checkIsCabinActivityAvailable(activityCode: ActivityCode) {\n return ActivityCode.allowedCabinActivities.includes(activityCode);\n }\n\n private _checkIsCockpitActivityAvailable(activityCode: ActivityCode) {\n return ActivityCode.allowedCockpitActivities.includes(activityCode);\n }\n\n private _checkIsGroundActivityAvailable(person: PersonInfoModel, activityCode: ActivityCode) {\n const functionId = person.function?.planningFunctionId;\n\n if (functionId === PersonFunctionsIds.OGE) {\n return ActivityCode.allowedOGEActivities.includes(activityCode);\n }\n\n if (functionId === PersonFunctionsIds.OGGE) {\n return ActivityCode.allowedOGGEActivities.includes(activityCode);\n }\n\n if (functionId === PersonFunctionsIds.OPR) {\n return ActivityCode.allowedOPRActivities.includes(activityCode);\n }\n\n if (functionId === PersonFunctionsIds.OMCC) {\n return ActivityCode.allowedOMCCActivities.includes(activityCode);\n }\n\n return false;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { emitter } from './EventEmitter';\nimport Axios, { AxiosInstance, AxiosPromise, AxiosRequestConfig, ResponseType, AxiosResponse, AxiosError, CancelToken, CancelTokenSource } from 'axios';\nimport { appStore } from '../AppStore';\nimport { globalAjaxLoaderStore } from '@app/Stores/GlobalAjaxLoaderStore';\n\nimport { DateTime } from '@app/AppConstants/DateTime';\nimport { GlobalQueryParams } from '@app/AppConstants/QueryParams';\n\nimport DateTimeService from '@app/Services/DateTimeService';\nimport UrlService from '@app/Services/UrlService';\nimport { PromiseCompletion } from '@app/Classes/PromiseCompletion';\n\nimport { NotificationHandler } from '../Components/ToastNotification';\nimport { AzureAuth } from '@app/Components';\nimport { modalService } from '@app/Components/Modal';\n\nexport type ApiHeaders = {\n [key: string]: string | number;\n};\n\nexport interface IAjaxOptions {\n responseType?: ResponseType;\n hideModalLoader?: boolean;\n requestKey?: string;\n transformDateTime?: boolean;\n operationName?: string;\n noDateTransform?: boolean;\n suppressErrorHandling?: boolean;\n completion?: PromiseCompletion | (PromiseCompletion | undefined)[];\n cancelDuplicatedRequests?: boolean;\n cancellationToken?: CancelToken;\n customApiHeader?: ApiHeaders;\n timeout?: number;\n}\n\ntype AxiosMethodDefinition = (url: string, data?: any, config?: AxiosRequestConfig) => AxiosPromise;\ntype AxiosMethodChooser = (instance: AxiosInstance) => AxiosMethodDefinition;\n\nexport type Response = AxiosResponse;\nexport type ResponseError = AxiosError;\nexport type ResponseInterceptor = {\n response: (value: Response) => Response | Promise;\n error: (err: ResponseError) => ResponseError;\n};\n\nexport enum AxiosMethod {\n GET = 'GET',\n DELETE = 'DELETE',\n HEAD = 'HEAD',\n OPTIONS = 'OPTIONS',\n POST = 'POST',\n PUT = 'PUT',\n PATCH = 'PATCH'\n}\n\ntype CreateHeaderHandler = () => { key: ApiHeadersKeys, value: string } | undefined;\n\nexport enum ApiHeadersKeys {\n CacheControl = 'Cache-Control',\n Authorization = 'Authorization',\n AppIsHistorized = 'App-Is-Historized',\n AppHistorizedDate = 'App-Historized-Date',\n AppHistorizedIsLastMonth = 'App-Historized-Is-Last',\n AppIsChangeLogDisabled = 'App-Is-Change-Log-Disabled',\n AppOperationName = 'App-Operation-Name',\n AppSignalRConnectionId = 'App-SignalR-ConnectionId',\n AppImpersonationPersonId = 'App-Impersonation-PersonId',\n AppRefreshData = 'App-Refresh-Data',\n AppViewPersonId = 'App-View-PersonId',\n AppImpersonationRoles = 'App-Impersonation-Roles',\n AppImpersonateAsPrincipal = 'App-Impersonate-As-Principal',\n AllowServerTrace = 'X-Allow-Server-Trace'\n}\n\nconst startupTime = DateTimeService.now();\n\nexport default class ApiService {\n private static _responseInterceptors: ResponseInterceptor[] = [];\n private static _cancelTokenCollection: Map = new Map();\n private static _handlerList: CreateHeaderHandler[] = [];\n\n public static addResponseInterceptor(interceptor: ResponseInterceptor) {\n ApiService._responseInterceptors.push(interceptor);\n }\n\n private static _addAndChechCancelationToken(tokenKey: string, source: CancelTokenSource) {\n const duplicateToken = ApiService._cancelTokenCollection.get(tokenKey);\n if (duplicateToken) {\n duplicateToken.cancel();\n }\n ApiService._cancelTokenCollection.set(tokenKey, source);\n }\n\n private static _callMethod(methodChooser: AxiosMethodChooser, url: string, data?: unknown, options?: IAjaxOptions): AxiosPromise {\n const responseType = (options && options.responseType) || 'json';\n\n const requestKey = options?.requestKey ? options.requestKey : this._getAbsoluteUrl(url);\n\n let cancelToken = options?.cancellationToken;\n if (options?.cancelDuplicatedRequests) {\n const source = Axios.CancelToken.source();\n cancelToken = source.token;\n ApiService._addAndChechCancelationToken(requestKey, source);\n }\n const instance = ApiService._getInstance(responseType, options, cancelToken);\n\n const result = methodChooser(instance)(this._getAbsoluteUrl(url), data);\n const requestTimestamp = DateTimeService.currentTime();\n const isHandleError = !(options && options.suppressErrorHandling);\n globalAjaxLoaderStore.showAjaxSpinner(requestTimestamp);\n if (options && options.completion) {\n if (Array.isArray(options.completion)) {\n options.completion.forEach((c) => c?.subscribe(result));\n } else {\n options.completion.subscribe(result);\n }\n }\n result.catch((error: AxiosError) => {\n if (isHandleError || error.response?.status.toString().charAt(0) === '5') this.handleError(url, error);\n globalAjaxLoaderStore.hideAjaxSpinner(requestTimestamp);\n });\n void result.then(() => {\n globalAjaxLoaderStore.hideAjaxSpinner(requestTimestamp);\n });\n return result;\n }\n\n public static getRequestUrl(baseUrl: string, operation: unknown) {\n console.log(baseUrl, operation);\n }\n\n public static sendRequest(method: AxiosMethod, url: string, data?: unknown, options?: IAjaxOptions): AxiosPromise {\n switch (method) {\n case AxiosMethod.POST:\n return ApiService.postTypedData(url, data, options);\n case AxiosMethod.GET:\n return ApiService.getTypedData(url, data, options);\n case AxiosMethod.PUT:\n return ApiService.putTypedData(url, data, options);\n case AxiosMethod.DELETE:\n return ApiService.deleteData(url, data, options);\n case AxiosMethod.PATCH:\n return ApiService.patchTypedData(url, data, options);\n default:\n return Promise.reject();\n }\n }\n\n //obsolete\n public static getData(url: string, getData?: unknown, options?: IAjaxOptions): AxiosPromise {\n return this.getTypedData(url, getData, options);\n }\n\n public static get(url: string, getData?: unknown, options?: IAjaxOptions): AxiosPromise {\n return ApiService._callMethod((instance: AxiosInstance) => instance.get, url, { params: getData }, options);\n }\n\n //obsolete\n public static getTypedData(url: string, getData?: unknown, options?: IAjaxOptions): AxiosPromise {\n return ApiService._callMethod((instance: AxiosInstance) => instance.get, url, { params: getData }, options);\n }\n\n public static putData(url: string, putData?: unknown, options?: IAjaxOptions): AxiosPromise {\n return ApiService._callMethod((instance: AxiosInstance) => instance.put, url, putData, options);\n }\n\n public static putTypedData(url: string, putData?: unknown, options?: IAjaxOptions): AxiosPromise {\n return ApiService._callMethod((instance: AxiosInstance) => instance.put, url, putData, options);\n }\n\n public static postData(url: string, postData?: unknown, options?: IAjaxOptions): AxiosPromise {\n return ApiService._callMethod((instance: AxiosInstance) => instance.post, url, postData, options);\n }\n\n public static postTypedData(url: string, postData?: unknown, options?: IAjaxOptions): AxiosPromise {\n return ApiService._callMethod((instance: AxiosInstance) => instance.post, url, postData, options);\n }\n\n public static patchTypedData(url: string, patchData?: unknown, options?: IAjaxOptions): AxiosPromise {\n return ApiService._callMethod((instance: AxiosInstance) => instance.patch, url, patchData, options);\n }\n\n public static deleteData(url: string, deleteData?: unknown, options?: IAjaxOptions): AxiosPromise {\n return ApiService._callMethod((instance: AxiosInstance) => instance.delete, url, { params: deleteData }, options);\n }\n\n public static handleError(url: string, error: any) {\n if (Axios.isCancel(error)) {\n console.log(`Request canceled: ${url}\\nMessage: ${error.message}`);\n return;\n }\n if (error && error.response && error.response.status === 409) {\n return;\n }\n if (error && error.response && error.response.status === 503) {\n globalAjaxLoaderStore.showAppLoader('Service is unavailable at the moment. Try later.');\n return;\n }\n errorHandleService.showError(url, error);\n }\n\n public static toQueryString(params: { [key: string]: string }) {\n if (typeof params !== 'object') return '';\n return `?${Object.keys(params)\n .map((k) => `${k}=${params[k]}`)\n .join('&')}`;\n }\n\n static typeCheck = (el: any, isDate?: boolean) => {\n if (!el) return el;\n let typeEl = el;\n switch (typeof el) {\n case 'string':\n typeEl = ApiService.strCheck(el, isDate);\n break;\n case 'object':\n typeEl = Array.isArray(el) ? ApiService.arrCheck(el) : ApiService.objCheck(el);\n break;\n }\n return typeEl;\n };\n\n private static strCheck = (str: string, isDate?: boolean) => {\n if (isDate && DateTimeService.ISO_8601_date.test(str)) return DateTimeService.fromString(str);\n return str;\n };\n\n private static arrCheck = (array: any) => {\n return array.map((el: any) => {\n return ApiService.typeCheck(el);\n });\n };\n\n private static objCheck = (obj: any) => {\n Object.keys(obj).forEach((key) => {\n obj[key] = ApiService.typeCheck(obj[key], key.indexOf('date') === 0 \n || key.indexOf('Date') !== -1 \n || key.indexOf('timestamp') !== -1 \n || key.endsWith('Timestamp') \n || key.endsWith('periodFrom')\n || key.endsWith('periodTo') \n || key.endsWith('Utc') \n || key.endsWith('Lt'));\n });\n return obj;\n };\n\n private static _getInstance(responseType: ResponseType = 'json', options?: IAjaxOptions, cancelToken?: CancelToken): AxiosInstance {\n const headers = ApiService._createRequestHeaders(options);\n const transformResponse = (data: unknown, headers: { [key: string]: string }) => {\n if ((options && options.noDateTransform) || options?.responseType === 'text') return data;\n\n let result = data;\n if (typeof result === 'string' && headers['content-type']?.startsWith('application/json')) {\n result = JSON.parse(result);\n }\n\n if (typeof result === 'object') {\n result = ApiService.typeCheck(result);\n }\n\n return result;\n };\n\n const axiosConfig: AxiosRequestConfig = {\n responseType: responseType,\n headers: headers,\n transformResponse: transformResponse,\n cancelToken: cancelToken,\n timeout: options?.timeout\n };\n\n const axiosInstance = Axios.create(axiosConfig);\n\n this._useInterceptors(axiosInstance, responseType);\n ApiService._responseInterceptors.forEach((x) => axiosInstance.interceptors.response.use(x.response, x.error));\n\n return axiosInstance;\n }\n\n private static _useInterceptors(axiosInstance: AxiosInstance, responseType: string) {\n axiosInstance.interceptors.response.use(\n (res) => {\n const contentType = res.headers['content-type'];\n if (contentType && contentType.indexOf('text/html') > -1 && responseType === 'json') {\n throw new Error('API call to ' + res.config.url + ' returned not expected content type: ' + contentType);\n }\n return res;\n },\n (err) => {\n if (err.response && err.response.status === 401) {\n return new Promise(() => {\n AzureAuth.login();\n });\n }\n if (err.response && err.response.status === 403) {\n emitter.emit('notify-error-403', err);\n return Promise.reject(err);\n }\n throw err;\n }\n );\n }\n\n public static subscribe(callback: CreateHeaderHandler) {\n if (this._handlerList.indexOf(callback) !== -1) {\n throw new Error('Callback is already registered!');\n }\n this._handlerList.push(callback);\n }\n\n public static unsubscribe(callback: CreateHeaderHandler) {\n const callbackIndex = this._handlerList.indexOf(callback);\n if (callbackIndex === -1) throw new Error('Callback is not registered!');\n this._handlerList.splice(callbackIndex, 1);\n }\n\n private static _getHeadersFromSubscriptions() {\n const headers: ApiHeaders = {};\n this._handlerList.forEach(callback => {\n const header = callback();\n if (header) {\n headers[header.key] = headers[header.key] || header.value;\n }\n });\n\n return headers;\n }\n\n private static _createRequestHeaders(options?: IAjaxOptions): ApiHeaders {\n const headers: ApiHeaders = (options && options.customApiHeader) || this._getHeadersFromSubscriptions();\n headers[ApiHeadersKeys.CacheControl] = headers[ApiHeadersKeys.CacheControl] || 'no-cache';\n if (appStore.currentToken) {\n headers[ApiHeadersKeys.Authorization] = headers[ApiHeadersKeys.Authorization] || 'Bearer ' + appStore.currentToken;\n }\n if (appStore.isHistorized) {\n headers[ApiHeadersKeys.AppIsHistorized] = headers[ApiHeadersKeys.AppIsHistorized] || 'true';\n headers[ApiHeadersKeys.AppHistorizedDate] = headers[ApiHeadersKeys.AppHistorizedDate] || (appStore.releasedDate && DateTimeService.toCustomUiFormat(appStore.releasedDate, DateTime.jsonDateFormat)) || '';\n\n if (appStore.isLastHistorizedMonth) {\n headers[ApiHeadersKeys.AppHistorizedIsLastMonth] = headers[ApiHeadersKeys.AppHistorizedIsLastMonth] || 'true';\n }\n }\n if (appStore.isChangeLogOff) {\n headers[ApiHeadersKeys.AppIsChangeLogDisabled] = headers[ApiHeadersKeys.AppIsChangeLogDisabled] || 'true';\n }\n if (options && options.operationName) {\n headers[ApiHeadersKeys.AppOperationName] = headers[ApiHeadersKeys.AppOperationName] || encodeURIComponent(options.operationName);\n }\n if (appStore.signalRConnectionId) {\n headers[ApiHeadersKeys.AppSignalRConnectionId] = headers[ApiHeadersKeys.AppSignalRConnectionId] || appStore.signalRConnectionId;\n }\n if (appStore.impersonatedUser) {\n headers[ApiHeadersKeys.AppImpersonationPersonId] = headers[ApiHeadersKeys.AppImpersonationPersonId] || appStore.impersonatedUser.personId || '';\n if (appStore.impersonatedUser?.roles) {\n headers[ApiHeadersKeys.AppImpersonationRoles] = headers[ApiHeadersKeys.AppImpersonationRoles] || (appStore.impersonatedUser.roles.join(', ') || '');\n }\n if (appStore.impersonatedUser.impersonateAsPrincipal) {\n headers[ApiHeadersKeys.AppImpersonateAsPrincipal] = headers[ApiHeadersKeys.AppImpersonateAsPrincipal] || 'true';\n }\n }\n\n if (window.performance) {\n const performance = window.performance.getEntriesByType(\"navigation\");\n if (performance && performance[0]) {\n const type = (performance[0] as unknown as { type: string }).type;\n\n //hint to the server to try refreshng data in case user reloaded page\n if (String(type) === 'reload' && DateTimeService.diffSeconds(DateTimeService.now(), startupTime) < 10) {\n headers[ApiHeadersKeys.AppRefreshData] = headers[ApiHeadersKeys.AppRefreshData] || 'true';\n }\n }\n }\n\n const viewPersonId = UrlService.getParam(GlobalQueryParams.viewPersonId) ?? UrlService.getParam(GlobalQueryParams.impersonateAsPerson);\n if (viewPersonId) {\n headers[ApiHeadersKeys.AppViewPersonId] = viewPersonId;\n }\n\n return headers;\n }\n\n private static _getAbsoluteUrl(url: string): string {\n let relariveUrl = url;\n if (relariveUrl && relariveUrl[0] !== '/') relariveUrl = '/' + url;\n if (!relariveUrl.startsWith('/api')) relariveUrl = '/api' + url;\n return location.origin + relariveUrl;\n }\n\n public static getDynamicUrl(url: string, params?: any & {}): string {\n let _url = url;\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n _url = _url.replace(`{${key}}`, encodeURIComponent(params[key] as string));\n }\n }\n return _url;\n }\n}\n\nclass ErrorHandleService {\n private _lastError: { message: string; time: number };\n\n showError(url: string, error: any) {\n let errorMessage = '';\n const currentTime = new Date().getTime();\n console.log('--error AJAX: ', error);\n\n if (!this._lastError || this._lastError.message !== error.message || currentTime - this._lastError.time > 1000) {\n\n if (!error?.response) {\n const defaultErrorMessage = 'Something went wrong... Try again in a little bit.';\n errorMessage = error.message || defaultErrorMessage;\n NotificationHandler.showError(errorMessage, '--error AJAX');\n }\n\n if (error.response && error.response.status !== 403) {\n if (error && error.response && (error.response.status === 400 || error.response.status === 500)) {\n void modalService.showError(error);\n } else {\n NotificationHandler.showError(error.message.toString(), '--error AJAX');\n }\n errorMessage = error.message;\n }\n\n this._lastError = { message: errorMessage, time: currentTime };\n }\n }\n}\n\nconst errorHandleService = new ErrorHandleService();\n","\nimport { signalRService } from './SignalRService';\n\nexport type AppReadyHandler = () => void;\nexport type AppReadyDisposeHandler = () => void;\n\nexport class AppReadyService {\n private subscribers: AppReadyHandler[] = [];\n\n constructor() {\n signalRService.onInitialized(() => {\n this.subscribers.forEach((cb) => cb());\n });\n }\n\n onAppReady(cb: AppReadyHandler): AppReadyDisposeHandler {\n this.subscribers.push(cb);\n return () => (this.subscribers = this.subscribers.filter((sub) => sub !== cb));\n }\n}\n","import { observable, action, computed } from 'mobx';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\ntype IBaseFormModelInternal = {\n __validators?: [];\n __isValidForm?: boolean;\n __errorFields?: string[];\n};\n\ntype IFormFields = {\n [Property in keyof TModel]: unknown;\n};\n\nexport class BaseFormModel {\n @observable validated: boolean = false;\n \n constructor () {\n applyDecorators(this);\n }\n\n @action errorFor(name: keyof T) {\n return this.validationErrorsName(name);\n }\n\n @action isValid(name: keyof T): boolean {\n return !this.validationErrorsName(name).length;\n }\n\n getValue(name: keyof T): T[keyof T] {\n const intThis = this as unknown as IFormFields;\n return intThis[name] as T[keyof T];\n }\n\n @action setValue(name: keyof T, value: unknown) {\n const intThis = this as unknown as IFormFields;\n intThis[name] = value;\n }\n\n @action\n validationErrorsName(name: keyof T): string[] {\n const sName = name as string;\n const key = '__validateError_' + sName[0].toUpperCase() + sName.substr(1);\n const errors = (this as unknown as {[key: string]: string[]})[key] as string[];\n return errors ? errors : [];\n }\n\n @computed\n get isFormValid() {\n const intThis = this as IBaseFormModelInternal;\n return intThis.__validators ? intThis.__isValidForm : true;\n }\n\n @computed\n get invalidFields() {\n const intThis = this as IBaseFormModelInternal;\n return intThis.__errorFields || [];\n }\n\n @computed\n get formValidatedClass() {\n return this.validated ? 'validated' : 'not-validated';\n }\n\n @action validate(): boolean {\n this.validated = true;\n return !!this.isFormValid;\n }\n}\n","export class ClipboardService {\n public static copyToClipboard(text: string) {\n const input = document.createElement('textarea');\n input.style.position = 'fixed';\n input.style.top = '-5px';\n input.style.border = 'none';\n input.style.outline = 'none';\n input.style.boxShadow = 'none';\n input.style.background = 'transparent';\n input.innerHTML = text;\n document.body.appendChild(input);\n input.focus();\n input.select();\n try {\n document.execCommand('copy');\n } finally {\n document.body.removeChild(input);\n }\n }\n}\n","import { observable } from 'mobx';\n\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport ApiService from '@app/Services/ApiService';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\nexport type TimeTransitionEvent = {\n timeUtc: Date;\n minutesUtcTimeDiff: number;\n};\n\nexport class SwissTimeTransitionsStore {\n @observable.ref public swissTransitions: TimeTransitionEvent[] = [];\n public swissTransitionsYearsLoaded: Map = new Map();\n \n constructor () {\n applyDecorators(this);\n }\n \n public loadTransitions(dateUtc: Date) {\n const year = dateUtc.getUTCFullYear();\n if (this.swissTransitionsYearsLoaded.has(year)) {\n return;\n }\n\n void (async () => {\n await this._loadTransitions(dateUtc);\n })();\n }\n\n public async loadTransitionsAsync(dateUtc: Date) {\n const year = dateUtc.getUTCFullYear();\n if (this.swissTransitionsYearsLoaded.has(year)) {\n return Promise.resolve();\n }\n\n await this._loadTransitions(dateUtc);\n }\n\n private async _loadTransitions(dateUtc: Date) {\n const year = dateUtc.getUTCFullYear();\n\n this.swissTransitionsYearsLoaded.set(year, null);\n try {\n const request = {\n periodFrom: new Date(dateUtc.getUTCFullYear() - 2, 0, 1),\n periodTo: new Date(dateUtc.getUTCFullYear() + 2, 0, 1)\n };\n const { data } = await ApiService.getTypedData(ApiUrls.TimeSwissTransitions, request);\n\n this.swissTransitionsYearsLoaded.set(year, data);\n\n this._rebuildTransitions();\n } catch (e) {\n this.swissTransitionsYearsLoaded.delete(year);\n throw e;\n }\n }\n\n private _rebuildTransitions() {\n const transitionsMap: Map = new Map();\n for (const [, events] of this.swissTransitionsYearsLoaded) {\n if (!events) continue;\n\n for (const event of events) {\n transitionsMap.set(event.timeUtc.getTime(), event);\n }\n }\n\n const transitions = [...transitionsMap.values()];\n transitions.sort((e1, e2) => e1.timeUtc.getTime() - e2.timeUtc.getTime());\n\n this.swissTransitions = transitions;\n }\n}","/* eslint-disable max-lines */\nimport ApiService from '@app/Services/ApiService';\nimport { DateTime } from '@app/AppConstants/DateTime';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { TimeTransitionEvent, SwissTimeTransitionsStore } from '@app/Stores/SwissTimeTransitionsStore';\nimport { PromiseCompletion } from '@app/Classes/PromiseCompletion';\n\nDate.prototype.toJSON = function() {\n //use custom implementation for better performance\n const year = this.getUTCFullYear().toString();\n let month = (this.getUTCMonth() + 1).toString();\n let day = this.getUTCDate().toString();\n let hh = this.getUTCHours().toString();\n let mm = this.getUTCMinutes().toString();\n let ss = this.getUTCSeconds().toString();\n\n if (month.length === 1) month = '0' + month;\n if (day.length === 1) day = '0' + day;\n if (hh.length === 1) hh = '0' + hh;\n if (mm.length === 1) mm = '0' + mm;\n if (ss.length === 1) ss = '0' + ss;\n\n //'YYYY-MM-DDTHH:MM:SS.Z'\n return `${year}-${month}-${day}T${hh}:${mm}:${ss}Z`;\n};\n\ntype FormatPatternData = {\n regExp: RegExp,\n patterns: string[]\n};\n\nexport default class DateTimeService {\n static ISO_8601: RegExp = /^\\d{4}(-\\d\\d(-\\d\\d(T\\d\\d:\\d\\d(:\\d\\d)?(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?)?)?)?$/i;\n static ISO_8601_date: RegExp = /^\\d{4}-\\d\\d-\\d\\d(T\\d\\d:\\d\\d(:\\d\\d)?(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?)?$/i;\n static regExpDateMask: RegExp = /(YYYY|YY|MMMM|MMM|MM|M|DD|D|dd|d|HH|H|mm|ss|SSS)/g;\n static monthNames: string[] = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n static weekDayNames2Letters: string[] = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n static _transitionsStore: SwissTimeTransitionsStore = new SwissTimeTransitionsStore();\n\n //#region NEW API\n\n static min(...values: (Date | null)[]) : Date {\n const filteredValues = values.filter(x => !!x) as Date[];\n if (!filteredValues.length) throw new Error('Values is an empty array');\n\n return filteredValues.reduce(function (a, b) {\n return a < b ? a : b;\n });\n }\n\n static max(...values: (Date | null)[]): Date {\n const filteredValues = values.filter(x => !!x) as Date[];\n if (!filteredValues.length) throw new Error('Values is an empty array');\n\n return filteredValues.reduce(function (a, b) {\n return a > b ? a : b;\n });\n }\n\n static distinct(dates: Date[]) {\n const set = new Set(dates.map((d) => d.getTime()));\n return [...set].map((x) => new Date(x));\n }\n\n static parseUiDate(value: string): Date {\n return this.parse(value, DateTime.viewDateFormat);\n }\n\n static parseUiDateTime(value: string): Date {\n return this.parse(value, DateTime.viewFullFormat);\n }\n\n static parseUiMinutes(value: string): number {\n return this.parseUiSeconds(value) / 60;\n }\n\n static parseUiSeconds(value: string): number {\n if (!value) return NaN;\n const timeParts = value.split(':');\n if (timeParts.length > 2) return NaN;\n const hours = +timeParts[0];\n const minutes = +timeParts[1];\n\n let result = (hours * 60 + minutes) * 60;\n if (value.charAt(0) === '-') result = result * -1;\n\n return result;\n }\n\n static parseUiTime(date: Date, value: string): Date {\n if (!(date instanceof Date)) throw new Error(`Expected date, but found: ${typeof date}: ${date}`);\n\n const timeParts = value.split(':');\n const hours = +timeParts[0];\n const minutes = +timeParts[1];\n const originDate = DateTimeService.date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n originDate.setUTCMinutes(minutes);\n originDate.setUTCHours(hours);\n\n return originDate;\n }\n\n static toUiDate(value: Date): string {\n if (!(value instanceof Date)) throw new Error(`Expected date, but found: ${typeof value}: ${value}`);\n\n let d = value.getUTCDate().toString();\n let m = (value.getUTCMonth() + 1).toString();\n\n d = d.length === 1 ? '0' + d : d;\n m = m.length === 1 ? '0' + m : m;\n\n return d + '.' + m + '.' + value.getUTCFullYear();\n }\n\n static toUiDateShortYear(value: Date): string {\n if (!(value instanceof Date)) throw new Error(`Expected date, but found: ${typeof value}: ${value}`);\n\n let d = value.getUTCDate().toString();\n let m = (value.getUTCMonth() + 1).toString();\n const y = value.getFullYear().toString().substr(-2);\n\n d = d.length === 1 ? '0' + d : d;\n m = m.length === 1 ? '0' + m : m;\n\n return d + '.' + m + '.' + y;\n }\n\n static toUiMonth(value: Date): string {\n if (!(value instanceof Date)) throw new Error(`Expected date, but found: ${typeof value}: ${value}`);\n\n let m = (value.getUTCMonth() + 1).toString();\n m = m.length === 1 ? '0' + m : m;\n\n return m + '.' + value.getUTCFullYear();\n }\n\n static toUiDateTime(value: Date, useSwissTime?: boolean): string {\n if (!(value instanceof Date)) throw new Error(`Expected date, but found: ${typeof value}: ${value}`);\n\n if (isNaN(value.getTime())) return '~';\n let d = value.getUTCDate().toString();\n let m = (value.getUTCMonth() + 1).toString();\n let h = value.getUTCHours().toString();\n let mm = value.getUTCMinutes().toString();\n\n d = d.length === 1 ? '0' + d : d;\n m = m.length === 1 ? '0' + m : m;\n h = h.length === 1 ? '0' + h : h;\n mm = mm.length === 1 ? '0' + mm : mm;\n\n return d + '.' + m + '.' + value.getUTCFullYear() + ' ' + h + ':' + mm + (useSwissTime ? '.' : '');\n }\n\n static toUiClientShortDate(value: Date): string {\n if (!(value instanceof Date)) throw new Error(`Expected date, but found: ${typeof value}: ${value}`);\n\n const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n const d = value.getDate().toString();\n const mIndex = value.getMonth();\n const m = monthNames[mIndex];\n\n return m + `'` + d;\n }\n\n static toUiClientShortDateTime(value: Date): string {\n if (!(value instanceof Date)) throw new Error(`Expected date, but found: ${typeof value}: ${value}`);\n\n const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n let d = value.getDate().toString();\n const mIndex = value.getMonth();\n let m = monthNames[mIndex];\n let h = value.getHours().toString();\n let mm = value.getMinutes().toString();\n\n d = d.length === 1 ? '0' + d : d;\n m = m.length === 1 ? '0' + m : m;\n h = h.length === 1 ? '0' + h : h;\n mm = mm.length === 1 ? '0' + mm : mm;\n\n const isToday = new Date().toDateString() === value.toDateString();\n return (isToday ? '' : d + ' ' + m + ' ') + h + ':' + mm;\n }\n\n static toUiTime(value: Date, useSwissTime?: boolean): string {\n if (!(value instanceof Date)) throw new Error(`Expected date, but found: ${typeof value}: ${value}`);\n\n if (isNaN(value.getTime())) return '~';\n let h = value.getUTCHours().toString();\n let mm = value.getUTCMinutes().toString();\n\n h = h.length === 1 ? '0' + h : h;\n mm = mm.length === 1 ? '0' + mm : mm;\n\n return h + ':' + mm + (useSwissTime ? '.' : '');\n }\n\n static toUiTimeSeconds(value: Date, useSwissTime?: boolean): string {\n if (!(value instanceof Date)) throw new Error(`Expected date, but found: ${typeof value}: ${value}`);\n\n if (isNaN(value.getTime())) return '~';\n let h = value.getUTCHours().toString();\n let mm = value.getUTCMinutes().toString();\n let ss = value.getUTCSeconds().toString();\n\n h = h.length === 1 ? '0' + h : h;\n mm = mm.length === 1 ? '0' + mm : mm;\n ss = ss.length === 1 ? '0' + ss : ss;\n\n return h + ':' + mm + ':' + ss + (useSwissTime ? '.' : '');\n }\n\n static toUiTimestamp(value: Date, showMS?: boolean): string {\n if (!(value instanceof Date)) throw new Error(`Expected date, but found: ${typeof value}: ${value}`);\n\n let d = value.getUTCDate().toString();\n let m = (value.getUTCMonth() + 1).toString();\n let h = value.getUTCHours().toString();\n let mm = value.getUTCMinutes().toString();\n let s = value.getUTCSeconds().toString();\n let ms = showMS ? `.${value.getUTCMilliseconds()}` : '';\n\n d = d.length === 1 ? `0${d}` : d;\n m = m.length === 1 ? `0${m}` : m;\n h = h.length === 1 ? `0${h}` : h;\n mm = mm.length === 1 ? `0${mm}` : mm;\n s = s.length === 1 ? `0${s}` : s;\n return `${d}.${m}.${value.getUTCFullYear()} ${h}:${mm}:${s}${ms}`;\n }\n\n static toUiSeconds(seconds: number): string {\n const sec = Math.trunc(seconds);\n const isNegative = sec < 0;\n const positiveSec = isNegative ? -sec : sec;\n const h = Math.trunc(positiveSec / (60 * 60));\n const m = Math.trunc(positiveSec / 60) - h * 60;\n let mm = m.toString();\n let hh = h.toString();\n\n mm = mm.length === 1 ? '0' + mm : mm;\n hh = hh.length === 1 ? '0' + hh : hh;\n\n return (isNegative ? '-' : '') + hh + ':' + mm;\n }\n\n static toUiMiliseconds(miliseconds: number): string {\n const sec = Math.trunc(miliseconds / 1000);\n const isNegative = sec < 0;\n const h = Math.abs(Math.trunc(sec / (60 * 60)));\n const m = Math.abs(Math.trunc(sec / 60) - h * 60);\n const s = Math.abs(Math.trunc(sec - h * 60 * 60 - m * 60));\n let mm = m.toString();\n let hh = h.toString();\n let ss = s.toString();\n\n mm = mm.length === 1 ? '0' + mm : mm;\n hh = hh.length === 1 ? '0' + hh : hh;\n ss = ss.length === 1 ? '0' + ss : ss;\n\n return (isNegative ? '-' : '') + hh + ':' + mm + ':' + ss;\n }\n\n static toUiDiffTime(to: Date, from: Date) {\n const diffMinutes = this.diffMinutes(to, from);\n if (diffMinutes < 60) {\n return Math.round(diffMinutes) + 'm';\n }\n\n const diffHours = this.diffHours(to, from);\n if (diffHours < 24) {\n return Math.round(diffHours) + 'h';\n }\n\n return Math.round(this.diffDays(to, from)) + 'd';\n }\n\n static toDiffTime(diffInMinutes: number, addColon: boolean = false) {\n const diffAbs = Math.abs(diffInMinutes);\n const hours = Math.ceil(diffAbs / 60);\n const hh = hours.toString().length === 1 ? '0' + hours : hours.toString();\n const minutes = diffAbs - hours * 60;\n const mm = minutes.toString().length === 1 ? '0' + minutes : minutes.toString();\n\n return (diffInMinutes >= 0 ? '+' : '-') + hh + (addColon ? ':' : '') + mm;\n }\n\n static toCustomUiFormat(value: Date, format: string): string {\n if (!(value instanceof Date)) throw new Error(`Expected date, but found: ${typeof value}: ${value}`);\n\n return this.format(value, format);\n }\n\n static toJsonFormat(date: Date): string {\n const month = date.getUTCMonth() + 1;\n const dayOfMOnth = date.getUTCDate();\n\n return `${date.getUTCFullYear()}-${month < 10 ? '0' + month : month.toString()}-${dayOfMOnth < 10 ? '0' + dayOfMOnth : dayOfMOnth.toString()}`;\n }\n\n static isSameDate(d1: Date | null | undefined, d2: Date | null | undefined): boolean {\n if ((d1 || null) === (d2 || null)) return true;\n if (!d1 || !d2) return false;\n\n return d1.getUTCFullYear() === d2.getUTCFullYear() && d1.getUTCMonth() === d2.getUTCMonth() && d1.getUTCDate() === d2.getUTCDate();\n }\n\n static isSameMonth(d1: Date, d2: Date): boolean {\n return d1.getUTCFullYear() === d2.getUTCFullYear() && d1.getUTCMonth() === d2.getUTCMonth();\n }\n\n static isSameYear(d1: Date, d2: Date): boolean {\n return d1.getUTCFullYear() === d2.getUTCFullYear();\n }\n\n static isAfterDate(d1: Date, d2: Date): boolean {\n if (d1.getUTCFullYear() > d2.getUTCFullYear()) return true;\n if (d1.getUTCFullYear() < d2.getUTCFullYear()) return false;\n\n if (d1.getUTCMonth() > d2.getUTCMonth()) return true;\n if (d1.getUTCMonth() < d2.getUTCMonth()) return false;\n\n return d1.getUTCDate() > d2.getUTCDate();\n }\n\n static isAfterDateOrEqual(d1: Date, d2: Date): boolean {\n if (d1.getUTCFullYear() > d2.getUTCFullYear()) return true;\n if (d1.getUTCFullYear() < d2.getUTCFullYear()) return false;\n\n if (d1.getUTCMonth() > d2.getUTCMonth()) return true;\n if (d1.getUTCMonth() < d2.getUTCMonth()) return false;\n\n return d1.getUTCDate() >= d2.getUTCDate();\n }\n\n static isBeforeDate(d1: Date, d2: Date): boolean {\n if (d1.getUTCFullYear() < d2.getUTCFullYear()) return true;\n if (d1.getUTCFullYear() > d2.getUTCFullYear()) return false;\n\n if (d1.getUTCMonth() < d2.getUTCMonth()) return true;\n if (d1.getUTCMonth() > d2.getUTCMonth()) return false;\n\n return d1.getUTCDate() < d2.getUTCDate();\n }\n\n static isBeforeDateOrEqual(d1: Date, d2: Date): boolean {\n if (d1.getUTCFullYear() < d2.getUTCFullYear()) return true;\n if (d1.getUTCFullYear() > d2.getUTCFullYear()) return false;\n\n if (d1.getUTCMonth() < d2.getUTCMonth()) return true;\n if (d1.getUTCMonth() > d2.getUTCMonth()) return false;\n\n return d1.getUTCDate() <= d2.getUTCDate();\n }\n\n static isBeforeDateTime(d1: Date, d2: Date): boolean {\n if (d1.getUTCFullYear() < d2.getUTCFullYear()) return true;\n if (d1.getUTCFullYear() > d2.getUTCFullYear()) return false;\n\n if (d1.getUTCMonth() < d2.getUTCMonth()) return true;\n if (d1.getUTCMonth() > d2.getUTCMonth()) return false;\n\n if (d1.getUTCDate() < d2.getUTCDate()) return true;\n if (d1.getUTCDate() > d2.getUTCDate()) return false;\n\n if (d1.getUTCHours() < d2.getUTCHours()) return true;\n if (d1.getUTCHours() > d2.getUTCHours()) return false;\n\n if (d1.getUTCMinutes() < d2.getUTCMinutes()) return true;\n if (d1.getUTCMinutes() > d2.getUTCMinutes()) return false;\n\n return d1.getUTCSeconds() < d2.getUTCSeconds();\n }\n\n static compare(d1: Date, d2: Date): number {\n return d1.getTime() - d2.getTime();\n }\n\n static isValidDate(d: Date) {\n return !isNaN(d.getTime());\n }\n\n static diffMonths(dateFrom: Date, dateTo: Date) {\n const months = dateTo.getUTCFullYear() * 12 + dateTo.getUTCMonth() - dateFrom.getFullYear() * 12 - dateFrom.getUTCMonth();\n return months;\n }\n\n static diffDays(to: Date, from: Date): number {\n const date1WithoutTime = this.withTime(to, 0, 0);\n const date2WithoutTime = this.withTime(from, 0, 0);\n const diff = date1WithoutTime.getTime() - date2WithoutTime.getTime();\n return Math.ceil(diff / (24 * 60 * 60 * 1000));\n }\n\n static diffSeconds(to: Date, from: Date): number {\n const diff = to.getTime() - from.getTime();\n return Math.ceil(diff / 1000);\n }\n\n static diffMinutes(to: Date, from: Date): number {\n const diff = to.getTime() - from.getTime();\n return Math.ceil(diff / (60 * 1000));\n }\n\n static diffHours(to: Date, from: Date): number {\n const diff = to.getTime() - from.getTime();\n return diff / (60 * 60 * 1000);\n }\n\n static addSeconds(date: Date, seconds: number): Date {\n return new Date(date.getTime() + seconds * 1000);\n }\n\n static addMinutes(date: Date, minutes: number): Date {\n return new Date(date.getTime() + minutes * 60 * 1000);\n }\n\n static addDays(date: Date, days: number): Date {\n return new Date(date.getTime() + days * 24 * 60 * 60 * 1000);\n }\n\n static addMonths(date: Date, months: number): Date {\n return this.date(date.getUTCFullYear(), date.getUTCMonth() + months, date.getUTCDate());\n }\n\n static addYears(date: Date, years: number): Date {\n return this.date(date.getUTCFullYear() + years, date.getUTCMonth(), date.getUTCDate());\n }\n\n static addTime(date: Date, hours: number, minutes?: number): Date {\n let offset = hours * 60 * 60 * 1000;\n if (minutes) {\n offset += minutes * 60 * 1000;\n }\n\n return new Date(date.getTime() + offset);\n }\n\n static daysBetween(periodFrom: Date, periodTo: Date): Date[] {\n const days: Date[] = [];\n let start = periodFrom;\n\n while (start <= periodTo) {\n days.push(start);\n start = this.addDays(start, 1);\n }\n\n return days;\n }\n\n static async utcToLocalDate(date: Date): Promise {\n const params = {\n DateTime: date\n };\n const { data } = await ApiService.postTypedData<{ date: Date }>(ApiUrls.UtcToLocal, params);\n return data.date;\n }\n\n static async localToUtcDate(date: Date, timeZone?: string): Promise {\n const params = {\n DateTime: date,\n TimeZone: timeZone\n };\n const { data } = await ApiService.postTypedData<{ date: Date }>(ApiUrls.LocalToUtc, params);\n return data.date;\n }\n\n static async availableTimeZones(dateLt: Date, loader?: PromiseCompletion): Promise {\n const params = {\n DateTime: dateLt\n };\n const { data } = await ApiService.postTypedData(ApiUrls.AvailableTimeZones, params, { completion: loader });\n return data;\n }\n\n static addDiffToLt(date: Date, sourceOffset: string) {\n const offset = sourceOffset.indexOf(':') ? sourceOffset.replace(':', '') : sourceOffset;\n const signChar = offset[0];\n const sign = signChar === '-' ? -1 : 1;\n const timeDiff = offset.substring(signChar === '-' || signChar === '+' ? 1 : 0);\n if (timeDiff.length !== 4) {\n throw new Error('Invalid time offset, expected format +HHMM, actual: ' + offset);\n }\n const hh = sign * +timeDiff.substring(0, 2);\n const mm = sign * +timeDiff.substring(2, 4);\n\n return DateTimeService.addTime(date, hh, mm);\n }\n\n static today(): Date {\n const today = new Date();\n return DateTimeService.date(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate());\n }\n\n static currentTime() {\n return new Date().getTime();\n }\n\n static trimTime(dateWithTime: Date) {\n return DateTimeService.date(dateWithTime.getUTCFullYear(), dateWithTime.getUTCMonth(), dateWithTime.getUTCDate());\n }\n\n static range(dateFrom: Date, dateTo: Date): Array {\n const days: Date[] = [];\n let date = dateFrom;\n days.push(date);\n while (date.getTime() < dateTo.getTime()) {\n date = new Date(date.getTime() + 24 * 60 * 60 * 1000);\n days.push(date);\n }\n return days;\n }\n\n static fromString(value: string | Date): Date {\n if (typeof value === 'string') return new Date(Date.parse(value));\n\n return value;\n }\n\n static withTime(date: Date, hours: number, minutes: number): Date {\n const d = DateTimeService.date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n\n return DateTimeService.addTime(d, hours, minutes);\n }\n\n static date(year: number, month: number, day: number): Date {\n return new Date(Date.UTC(year, month, day, 0, 0, 0, 0));\n }\n\n static now(): Date {\n return new Date();\n }\n\n static startOfMonth(): Date {\n const now = this.now();\n return this.date(now.getUTCFullYear(), now.getUTCMonth(), 1);\n }\n\n static toFirstDayOfYear(date: Date): Date {\n return this.date(date.getUTCFullYear(), 0, 1);\n }\n\n static toFirstDayOfMonth(date: Date): Date {\n return this.date(date.getUTCFullYear(), date.getUTCMonth(), 1);\n }\n\n static toLastDayOfMonth(date: Date): Date {\n return this.date(date.getUTCFullYear(), date.getUTCMonth() + 1, 0);\n }\n\n static startOfDate(date: Date): Date {\n return this.date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n }\n\n static toFirstDayOfWeek(date: Date): Date {\n let dayOfWeek = date.getUTCDay() - 1;\n if (dayOfWeek < 0) {\n dayOfWeek = 6;\n }\n\n return this.date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() - dayOfWeek);\n }\n\n static toLastDayOfWeek(date: Date): Date {\n let dayOfWeek = date.getUTCDay() - 1;\n if (dayOfWeek < 0) {\n dayOfWeek = 6;\n }\n\n return this.date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() - dayOfWeek + 6);\n }\n\n static async defaultTimezoneOffset(): Promise {\n const { data } = await ApiService.getTypedData(ApiUrls.DefaultTimezoneOffset, {}, { responseType: 'text' });\n return data;\n }\n\n static getDateIndexInRange(date: Date, dateFrom: Date, dateTo?: Date): number {\n if (date < dateFrom) return -1;\n if (dateTo && date > dateTo) return -1;\n return this.diffDays(date, dateFrom);\n }\n\n static calculateAge(birthday: Date, atDate: Date): number {\n const ageDifMs = atDate.getTime() - birthday.getTime();\n const ageDate = new Date(ageDifMs); // miliseconds from epoch\n return Math.abs(ageDate.getUTCFullYear() - 1970);\n }\n\n static isIntersects(r1: { from: Date; to: Date }, r2: { from: Date; to: Date }) {\n return r1.to >= r2.from && r1.from <= r2.to;\n }\n\n static asRestString(date: Date) {\n return '/' + date.getUTCFullYear() + '/' + (date.getUTCMonth() + 1) + '/' + date.getUTCDate();\n }\n\n //#endregion\n\n static readonly patternCache: { [key: string]: FormatPatternData } = {};\n\n static readonly patternsToRegex: { [key: string]: string } = {\n YYYY: '(\\\\d{4})',\n MMMM: '(\\\\S+)',\n MM: '(\\\\d{2})',\n M: '(\\\\d{1,2})',\n DD: '(\\\\d{2})',\n D: '(\\\\d{1,2})',\n HH: '(\\\\d{2})',\n H: '(\\\\d{1,2})',\n mm: '(\\\\d{2})',\n ss: '(\\\\d{2})',\n SSS: '(\\\\d{3})'\n };\n\n static parse(value: string, format: string): Date {\n if (typeof value !== 'string') return this.getNanDate();\n\n let year = 1;\n let month = 0;\n let day = 1;\n let hour = 0;\n let minute = 0;\n let second = 0;\n let milliseconds = 0;\n let pattern = DateTimeService.patternCache[format];\n\n if (!pattern) {\n const patterns: string[] = [];\n\n const regexpText = format.replace(this.regExpDateMask, (_, pattern) => {\n patterns.push(pattern);\n return DateTimeService.patternsToRegex[pattern];\n });\n\n const regexp = new RegExp(regexpText);\n pattern = {\n regExp: regexp,\n patterns: patterns\n };\n DateTimeService.patternCache[format] = pattern;\n }\n\n const match = value.match(pattern.regExp);\n if (match) {\n for (let i = 1; i < match.length; i++) {\n const foundValue = pattern.patterns[i - 1];\n const valuePart = match[i];\n\n switch (foundValue) {\n case 'YYYY':\n year = this._parseSafeInteger(valuePart, 9999);\n break;\n case 'M':\n case 'MM':\n month = this._parseSafeInteger(valuePart, 12) - 1;\n break;\n case 'MMMM':\n month = this.monthNames.indexOf(valuePart);\n if (month === -1) throw new Error('Invalid month name');\n break;\n case 'D':\n case 'DD':\n day = this._parseSafeInteger(valuePart, 31);\n break;\n case 'H':\n case 'HH':\n hour = this._parseSafeInteger(valuePart, 23);\n break;\n case 'mm':\n minute = this._parseSafeInteger(valuePart, 59);\n break;\n case 'ss':\n second = this._parseSafeInteger(valuePart, 59);\n break;\n case 'SSS':\n milliseconds = this._parseSafeInteger(valuePart, 999);\n break;\n }\n }\n } else {\n return this.getNanDate();\n }\n\n const newDate = new Date(Date.UTC(year, month, day, hour, minute, second, milliseconds));\n const newDateDay = newDate.getUTCDate();\n if (newDateDay === day) {\n return newDate;\n }\n\n return this.getNanDate();\n }\n\n static format(date: Date, format: string = DateTime.viewDateFormat): string {\n let result = format;\n let dayOfWeek = date.getUTCDay() - 1;\n result = result.replace(this.regExpDateMask, (match: string) => {\n switch (match) {\n case 'DD':\n return date.getUTCDate() < 10 ? '0' + date.getUTCDate() : date.getUTCDate().toString();\n case 'D':\n return date.getUTCDate().toString();\n case 'dd':\n if (dayOfWeek < 0) {\n dayOfWeek = 6;\n }\n return this.weekDayNames2Letters[dayOfWeek];\n case 'MMMM':\n return this.monthNames[date.getUTCMonth()];\n case 'MMM':\n return this.monthNames[date.getUTCMonth()].substring(0, 3).toUpperCase();\n case 'MM':\n return date.getUTCMonth() + 1 < 10 ? '0' + (date.getUTCMonth() + 1).toString() : (date.getUTCMonth() + 1).toString();\n case 'M':\n return (date.getUTCMonth() + 1).toString();\n case 'YYYY':\n return date.getUTCFullYear().toString();\n case 'YY':\n return date.getUTCFullYear().toString().substr(-2);\n case 'HH':\n return date.getUTCHours() < 10 ? '0' + date.getUTCHours() : date.getUTCHours().toString();\n case 'H':\n return date.getUTCHours().toString();\n case 'mm':\n return date.getUTCMinutes() < 10 ? '0' + date.getUTCMinutes() : date.getUTCMinutes().toString();\n case 'ss':\n return date.getUTCSeconds() < 10 ? '0' + date.getUTCSeconds() : date.getUTCSeconds().toString();\n\n default:\n return match;\n }\n });\n return result;\n }\n\n static toQueryParam(value: Date) {\n return value.toJSON();\n }\n\n static getRefYear(): number {\n const date = DateTimeService.now();\n return date.getUTCMonth() <= 6 ? DateTimeService.addYears(date, -1).getUTCFullYear() : date.getUTCFullYear();\n }\n\n static getZeroDate() {\n return new Date(0);\n }\n\n static getNanDate(): Date {\n return new Date(NaN);\n }\n\n static getStartOfDay(year: number, month: number, day: number): Date {\n const result = this.getZeroDate();\n result.setUTCFullYear(year);\n result.setUTCMonth(month);\n result.setUTCDate(day);\n return result;\n }\n\n private static _parseSafeInteger(value: string, maxValue: number) {\n const parsedPart = parseInt(value, 10);\n if (isNaN(parsedPart) || parsedPart < 0 || !Number.isInteger(parsedPart)) {\n throw new Error('Failed parse ' + value + ' exception, expected format [0-9]');\n }\n if (parsedPart > maxValue) {\n return NaN;\n }\n\n return parsedPart;\n }\n\n public static ensureTransitionsLoaded(dateTimeUtc: Date) {\n return DateTimeService._transitionsStore.loadTransitionsAsync(dateTimeUtc);\n }\n\n private static _getSwissTransitionForDate(dateTimeUtc: Date): TimeTransitionEvent | null {\n //ensure we have/load transitions for this date\n DateTimeService._transitionsStore.loadTransitions(dateTimeUtc);\n\n const transitions = DateTimeService._transitionsStore.swissTransitions;\n if (!transitions.length) return null;\n\n let transition: TimeTransitionEvent | null = null;\n for (const t of transitions) {\n if (t.timeUtc > dateTimeUtc) {\n //found, this is previous event, we load ove year to the past to have match\n break;\n }\n transition = t;\n }\n\n return transition;\n }\n\n //incorrect to use it for the moments of clock change\n public static getSwissDate(dateTimeUtc: Date) {\n const transition = this._getSwissTransitionForDate(dateTimeUtc);\n\n if (transition) {\n return DateTimeService.addTime(dateTimeUtc, 0, transition.minutesUtcTimeDiff);\n }\n\n return new Date(Number.NaN);\n }\n\n //incorrect to use it for the moments of clock change\n public static getUtcDate(swissDateTimeUtc: Date) {\n const transition = this._getSwissTransitionForDate(swissDateTimeUtc);\n\n if (transition) {\n return DateTimeService.addTime(swissDateTimeUtc, 0, -transition.minutesUtcTimeDiff);\n }\n\n return new Date(Number.NaN);\n }\n\n public static getTransitionsForLt(dateTimeLt: Date) {\n DateTimeService._transitionsStore.loadTransitions(dateTimeLt);\n\n const transitions = DateTimeService._transitionsStore.swissTransitions;\n const transitionsForLt: TimeTransitionEvent[] = [];\n\n for (let i = 1; i < transitions.length-1; i++) {\n let transitionStartLt = this.addMinutes(transitions[i].timeUtc, transitions[i].minutesUtcTimeDiff);\n let transitionEndLt = this.addMinutes(transitions[i + 1].timeUtc, transitions[i].minutesUtcTimeDiff);\n\n if (dateTimeLt >= transitionStartLt && dateTimeLt < transitionEndLt) {\n transitionsForLt.push(transitions[i]);\n }\n }\n\n return transitionsForLt;\n }\n\n public static getSwissUtcOffset(dateTimeUtc: Date) {\n const transition = this._getSwissTransitionForDate(dateTimeUtc);\n\n if (!transition) return null;\n\n const hours = Math.trunc(transition.minutesUtcTimeDiff / 60);\n const minutes = transition.minutesUtcTimeDiff - hours * 60;\n const hh = hours.toString().length === 1 ? '0' + hours : hours.toString();\n const mm = minutes.toString().length === 1 ? '0' + minutes.toString() : minutes.toString();\n\n return `+${hh}:${mm}`;\n }\n\n public static getShortRelatedTime(time: Date, relatedDate: Date, useSwissTime?: boolean) {\n const referenceDateTimeDiff = DateTimeService.diffDays(time, relatedDate);\n\n const diffStr = isNaN(referenceDateTimeDiff) ? '~' : referenceDateTimeDiff === 0 ? '' : (referenceDateTimeDiff > 0 ? '(+' : '(') + referenceDateTimeDiff + ') ';\n const timeString = DateTimeService.toUiTime(time, useSwissTime);\n\n return diffStr + timeString;\n }\n\n public static getShortRelatedTimeWithSeconds(time: Date, relatedDate: Date, useSwissTime?: boolean) {\n const referenceDateTimeDiff = DateTimeService.diffDays(time, relatedDate);\n\n const diffStr = isNaN(referenceDateTimeDiff) ? '~' : referenceDateTimeDiff === 0 ? '' : (referenceDateTimeDiff > 0 ? '(+' : '(') + referenceDateTimeDiff + ') ';\n const timeString = DateTimeService.toUiTimeSeconds(time, useSwissTime);\n\n return diffStr + timeString;\n }\n\n public static getDaysInMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n }\n\n public static rangesIntersection(dateFromA: Date, dateToA: Date, dateFromB: Date, dateToB: Date) {\n if ((dateToA < dateFromB) || (dateFromA > dateToB)) {\n return null;\n }\n\n const result = {} as { from: Date, to: Date };\n result.from = dateFromA <= dateFromB ? dateFromB : dateFromA;\n result.to = dateToA <= dateToB ? dateToA : dateToB;\n\n return result;\n }\n}\n","import { computed, observable } from 'mobx';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\nexport const DXLinkId = 'devextreme-link';\n\nclass DevExtremeCssService {\n private _itemCount: number = 0;\n private _itemSet: WeakSet = new WeakSet();\n @observable private _cssLink: HTMLElement | null = null;\n \n constructor () {\n applyDecorators(this);\n }\n \n // use in constructor\n public addItem (item: object) {\n this._itemSet.add(item);\n this._itemCount++;\n\n if (this._itemCount === 1) {\n this._loadCssFile();\n }\n }\n\n // use in componentWillUnmount\n public removeItem (item: object) {\n if (this._itemSet.has(item)) {\n this._itemCount--;\n\n if (!this._itemCount) {\n this._unloadCssFile();\n }\n }\n }\n\n private _loadCssFile () {\n if (!document.getElementById(DXLinkId)) {\n const link = document.createElement('link');\n link.id = DXLinkId;\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = document.body.classList.contains('dark') ? '/css/devextreme_dark.css' : '/css/devextreme.css';\n\n document.head.append(link);\n\n link.onload = this._onload;\n link.onerror = this._onerror;\n }\n }\n\n private _unloadCssFile () {\n const link = document.getElementById(DXLinkId);\n\n if (link) {\n link.remove();\n this._cssLink = null;\n }\n }\n\n private _onload = () => {\n const link = document.getElementById(DXLinkId);\n if (link) {\n this._cssLink = link;\n }\n };\n\n private _onerror = () => {\n this._cssLink = null;\n };\n\n @computed\n public get isCssLoaded(){\n return !!this._cssLink;\n }\n}\n\nexport const dxCssService = new DevExtremeCssService();","import ApiService, { IAjaxOptions } from '@app/Services/ApiService';\nimport { loaderStore } from '@app/Stores/LoaderStore';\n\nexport class DownloadService {\n public async downloadFile(url: string, params?: T, sourceFileName?: string, options?: IAjaxOptions) {\n const { data, headers } = await ApiService.getTypedData(url, params, { responseType: 'blob', completion: loaderStore.globalLoader, ...options });\n\n let fileName = sourceFileName;\n if (!fileName) {\n fileName = '';\n const disposition = headers['content-disposition'];\n if (disposition && disposition.indexOf('attachment') !== -1) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const matches = filenameRegex.exec(disposition);\n if (matches && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n }\n }\n }\n\n const blob = new Blob([data]);\n await this.downloadBlob(blob, fileName);\n }\n\n public async downloadBlob(blob: Blob, fileName: string) {\n const objectUrl = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = objectUrl;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n await link.click();\n }\n}\n","import { DutyItem } from '@app/Models/WebApiModels';\nimport { Range } from '@app/Components/VirtualizedRoster';\nimport DateTimeService from './DateTimeService';\n\nexport type DutyChangeEvent = {\n duties?: DutyItem[];\n personsRange?: {\n personIds: string[];\n range: Range;\n };\n dutyRange: Range | null;\n};\n\nexport type DutyChangeHandler = (changes: DutyChangeEvent) => Promise;\n\nclass DutyChangeService {\n private _handlerList: DutyChangeHandler[] = [];\n\n public notifyDutyChange(duties: DutyItem[]): Promise {\n const handlers = this._handlerList.slice();\n\n let minUpdateDate: Date | null = null;\n let maxUpdateDate: Date | null = null;\n const personIds: string[] = [];\n duties.forEach((d) => {\n minUpdateDate = DateTimeService.min(minUpdateDate, d.date);\n maxUpdateDate = DateTimeService.max(maxUpdateDate, d.date);\n if (personIds.indexOf(d.personId) === -1) personIds.push(d.personId);\n });\n\n const updates: Promise[] = [];\n for (let i = 0; i < handlers.length; i++) {\n const result = handlers[i]({\n duties: duties,\n dutyRange: minUpdateDate && maxUpdateDate && { from: minUpdateDate, to: maxUpdateDate }\n });\n result && updates.push(result);\n }\n\n return Promise.all(updates);\n }\n\n public notifyRangeChange(range: Range, personIds: string[]): Promise {\n const handlers = this._handlerList.slice();\n const updates: Promise[] = [];\n for (let i = 0; i < handlers.length; i++) {\n const result = handlers[i]({\n personsRange: {\n range: range,\n personIds: personIds\n },\n dutyRange: range\n });\n result && updates.push(result);\n }\n\n return Promise.all(updates);\n }\n\n public subscribe(onChange: DutyChangeHandler) {\n if (this._handlerList.indexOf(onChange) !== -1) {\n throw new Error('Callback is already registered!');\n }\n this._handlerList.push(onChange);\n }\n\n public unsubscribe(onChange: DutyChangeHandler) {\n const callbackIndex = this._handlerList.indexOf(onChange);\n if (callbackIndex === -1) throw new Error('Callback is not registered!');\n\n this._handlerList.splice(callbackIndex, 1);\n }\n}\n\nexport const dutyChangeService = new DutyChangeService();\n","import Emitter from 'component-emitter';\n\nexport const emitter = new Emitter();\n","interface ICallbackFunction extends Function {\n selectTimeOut?: number;\n amountOfCall?: number;\n}\n\nexport default class Extensions {\n static executeTimeout(callBack: Function, timeout: number, scope?: unknown, ...args: unknown[]) {\n const extendedFunction = callBack;\n if (extendedFunction.selectTimeOut) {\n clearTimeout(extendedFunction.selectTimeOut);\n }\n extendedFunction.selectTimeOut = window.setTimeout(() => {\n callBack.apply(scope, args);\n }, timeout);\n }\n\n static capitalizeFirstLetter(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n }\n\n static getDecimal(num: number): number {\n return num > 0 ? num % 1 : -num % 1;\n }\n\n static deepCopy(obj: unknown): unknown {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let copy: any;\n\n if (null == obj || 'object' !== typeof obj) return obj;\n\n if (obj instanceof Date) {\n copy = new Date();\n copy.setTime(obj.getTime());\n return copy;\n }\n\n if (obj instanceof Array) {\n copy = [];\n for (let i = 0; i < obj.length; i++) {\n copy[i] = Extensions.deepCopy(obj[i]);\n }\n return copy;\n }\n\n if (obj instanceof Object) {\n copy = {};\n for (const attr in obj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (obj.hasOwnProperty(attr)) copy[attr] = Extensions.deepCopy((obj as any)[attr]);\n }\n return copy;\n }\n\n return {};\n }\n}\n","import { ActivityCode } from '@app/AppConstants/ActivityCode';\nimport DateTimeService from './DateTimeService';\n\ntype HoursModel = {\n from: number,\n to: number\n}\n\nexport class FreelanceActivityService {\n public getFromLt(activityCode: ActivityCode, date: Date) {\n let hours = this._getHours(activityCode);\n return DateTimeService.withTime(date, hours.from, 0);\n }\n\n public getToLt(activityCode: ActivityCode, date: Date) {\n let hours = this._getHours(activityCode);\n return DateTimeService.withTime(date, hours.to, 0);\n }\n\n public getFromUtc(activityCode: ActivityCode, date: Date) {\n return DateTimeService.getUtcDate(this.getFromLt(activityCode, date));\n }\n\n public getToUtc(activityCode: ActivityCode, date: Date) {\n return DateTimeService.getUtcDate(this.getToLt(activityCode, date));\n }\n\n private _getHours(activityCode: ActivityCode): HoursModel {\n switch (activityCode) {\n case ActivityCode.A_N:\n case ActivityCode.FA_N:\n return {\n from: 0,\n to: 24 + 8\n };\n case ActivityCode.AE_:\n case ActivityCode.FAE_:\n return {\n from: 4,\n to: 15\n };\n case ActivityCode.AL_:\n case ActivityCode.FAL_:\n return {\n from: 11,\n to: 24\n };\n case ActivityCode.AN_:\n case ActivityCode.FAN_:\n return {\n from: 20,\n to: 24 + 8\n };\n default:\n return {\n from: 0,\n to: 0\n };\n }\n }\n}\n","import { appStore } from '@app/AppStore';\nimport { UndoOperationModel } from '@app/Models/WebApiModels';\n\nexport interface IOperation {\n operationId: string;\n time: number;\n name: string;\n isChangeLogEnabled: boolean;\n}\n\nexport default class LocalStorageService {\n static addOperationToStack(operationId: string, name: string) {\n const item = localStorage.getItem('operationStack');\n let operationStack: IOperation[] = item ? JSON.parse(item) : [];\n operationStack = this.clearOld(operationStack);\n\n if (!operationId) return operationStack.length;\n\n operationStack.push({\n operationId: operationId,\n time: new Date().getTime(),\n name: name,\n isChangeLogEnabled: !appStore.isChangeLogOff,\n });\n if (operationStack.length > 100) {\n operationStack.splice(0, operationStack.length - 100);\n }\n localStorage.setItem('operationStack', JSON.stringify(operationStack));\n return operationStack.length;\n }\n\n static getLastOperation():string | null {\n const item = localStorage.getItem('operationStack');\n if (!item) return null;\n let operationStack: IOperation[] = JSON.parse(item);\n operationStack = this.clearOld(operationStack);\n const lastOperation = operationStack.pop();\n localStorage.setItem('operationStack', JSON.stringify(operationStack));\n return (lastOperation && lastOperation.operationId) || null;\n }\n\n static pickTopOperationDetails(): { operationId: string | undefined, operationName: string } | null {\n const item = localStorage.getItem('operationStack');\n if (!item) return null;\n let operationStack: IOperation[] = JSON.parse(item);\n operationStack = this.clearOld(operationStack);\n const lastOperation = operationStack.pop();\n return {\n operationId: lastOperation?.operationId,\n operationName: lastOperation?.name ?? ''\n };\n }\n\n static getOperationsAmount() {\n return LocalStorageService.getOperations().length;\n }\n\n static getOperations() {\n const item = localStorage.getItem('operationStack');\n let operationStack: IOperation[] = item ? JSON.parse(item) : [];\n operationStack = this.clearOld(operationStack, true);\n return operationStack;\n }\n\n static clearOld(operationStack: Array, needSave?: boolean): IOperation[] {\n if (!operationStack || operationStack.length < 1) return operationStack;\n const time = new Date().getTime() - 24 * 60 * 60 * 1000;\n const index = operationStack.findIndex((operation) => !!operation.time && operation.time > time);\n let stack = operationStack;\n if (index > 0) {\n stack.splice(0, index);\n if (needSave) localStorage.setItem('operationStack', JSON.stringify(operationStack));\n } else if (index < 0) {\n stack = [];\n if (needSave) localStorage.removeItem('operationStack');\n }\n return stack;\n }\n\n static addOperationListToStack(operations: UndoOperationModel[]) {\n const operationStack: IOperation[] = [];\n const time = new Date().getTime() - 24 * 60 * 60 * 1000;\n operations.forEach((operation: UndoOperationModel) => {\n const operationTime = operation.operationDateUtc.getTime();\n if (operationTime > time) {\n operationStack.push({\n operationId: operation.operationId,\n time: operationTime,\n name: operation.name,\n isChangeLogEnabled: operation.isChangeLogEnabled\n });\n }\n });\n localStorage.setItem('operationStack', JSON.stringify(operationStack));\n return operationStack.length;\n }\n}\n","import UrlService from './UrlService';\n\nexport class PrintService {\n public printClickHandler(isHistorized?: boolean) {\n UrlService.openInNewWindow(window.location.pathname, `printMode=enabled${isHistorized ? '&historizedMode=enabled' : ''}`, 'print-standby-report', 'width=1700px,height=1000px');\n }\n\n public printUrgentClickHandler(isExtended: boolean) {\n UrlService.openInNewWindow('urgent-duty-print', 'printMode=enabled&isExtended=' + isExtended, 'print-urgent-duties', 'width=900px,height=600px');\n }\n}\n","export class ScrollService {\n public scrollToTop() {\n const elements = document.getElementsByClassName('content-wrapper');\n if (elements.length) elements[0].scrollTo(0, 0);\n }\n}\n","import { ApiUrls } from \"@app/AppConstants/ApiUrls\";\nimport { appStore } from \"@app/AppStore\";\nimport ApiService from \"@app/Services/ApiService\";\nimport { globalAjaxLoaderStore } from \"@app/Stores/GlobalAjaxLoaderStore\";\n\nexport class SignalRConnectionWrapper {\n public suppressReconnection?: boolean = false;\n private _hubConnection: signalR.HubConnection | null;\n private _onReconnect: () => void;\n\n constructor(hubConnection: signalR.HubConnection, onReconnect: () => void) {\n this._hubConnection = hubConnection;\n this._onReconnect = onReconnect;\n\n this._hubConnection.onclose(async () => {\n if (this.suppressReconnection) return;\n\n if (appStore.isAuthorized()) {\n try {\n await ApiService.get(ApiUrls.PingUrl + '?signalr-reconnect', null, { suppressErrorHandling: true, timeout: 1000 });\n } catch {\n globalAjaxLoaderStore.showAppLoader('Connection to server was lost, reconnecting...');\n }\n }\n this._onReconnect();\n });\n }\n\n public async abortConnection() {\n this.suppressReconnection = true;\n await this._hubConnection?.stop();\n }\n}","import * as signalR from '@microsoft/signalr';\n\nimport { ComponentUrls } from '@app/AppConstants/SignalR';\nimport { appStore } from '@app/AppStore';\nimport { globalAjaxLoaderStore } from '@app/Stores/GlobalAjaxLoaderStore';\nimport ApiService from '@app/Services/ApiService';\nimport { HttpTransportType } from '@microsoft/signalr';\nimport { NotificationHandler } from '@app/Components/ToastNotification';\nimport { SignalRConnectionWrapper } from '@app/Models/SignalRConnectionWrapper';\n\ntype SignalREventContext = {\n groupName?: string;\n method: string;\n payload: T\n}\n\ntype TPayloadEvent = (eventName: string, payload: T) => void;\ntype TEvent = () => void;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SignalREventHandler = (...args: any[]) => void;\n\ninterface ISignalRObservable {\n subscribeToGroup(eventName: string, observer: TPayloadEvent, groupName?: string, isPersonRelated?: boolean): void;\n\n unsubscribeFromGroup(eventName: string, observer: TPayloadEvent): void;\n}\n\ntype SignalRObserver = {\n group?: SignalRGroup;\n eventName: string;\n observer: TEvent;\n internalObserver: SignalREventHandler;\n};\n\ntype SignalRGroup = {\n name: string;\n isPersonRelated: boolean;\n};\n\nclass SignalRService implements ISignalRObservable {\n private _hubConnection: signalR.HubConnection | null;\n private _signalRObservers: SignalRObserver[] = [];\n private _initObservers: TEvent[] = [];\n private _waitForConnectionPromise: Promise | null;\n private _reconnectObservers: TEvent[] = [];\n private _reconnectTimeoutId?: number;\n private _queryStringAuthParams?: string;\n private _connectionWrapper: SignalRConnectionWrapper | null;\n\n constructor() {\n document.addEventListener('DOMContentLoaded', () => {\n void this.initialize();\n });\n }\n\n initialize = async () => {\n if (appStore.isAuthorized()) {\n this._queryStringAuthParams = appStore.getQueryStringAuthParams({ single: true, token: false });\n await this.setUpHub();\n }\n };\n\n async setUpHub(isReconnected?: boolean) {\n const connectionUrl = location.origin + ComponentUrls.HubUrl + appStore.getQueryStringAuthParams({ single: true });\n\n const transportType = HttpTransportType.LongPolling | HttpTransportType.ServerSentEvents | HttpTransportType.WebSockets;\n const hubConnection = new signalR.HubConnectionBuilder().withUrl(connectionUrl, {\n transport: transportType,\n accessTokenFactory: this._jwtTokenFactory\n }).build();\n\n const reconnect = () => {\n this._reconnectTimeoutId = window.setTimeout(() => {\n void this.setUpHub(true);\n }, 5000); // Restart connection after 5 seconds.\n };\n\n const oldConnectionWrapper = this._connectionWrapper;\n this._connectionWrapper = new SignalRConnectionWrapper(hubConnection, reconnect);\n\n try {\n await hubConnection.start();\n await oldConnectionWrapper?.abortConnection();\n this._hubConnection = hubConnection;\n this._reconnectTimeoutId && clearTimeout(this._reconnectTimeoutId);\n this._reconnectTimeoutId = undefined;\n } catch (e) {\n console.error(e);\n const loaderMessage = document.getElementById('react-app-loader-message');\n const error = e as Error;\n if (error && loaderMessage && !NotificationHandler.suppressError(error.message)){\n loaderMessage.innerText = 'SignalR connection error\\n' + error.message;\n }\n reconnect();\n return;\n }\n\n await Promise.all(globalAjaxLoaderStore.startupLoaders);\n globalAjaxLoaderStore.hideAppLoader();\n console.log('SingalR connected');\n\n await this._setupConnection(hubConnection);\n\n if (isReconnected) {\n this._onReconnect();\n }\n }\n\n private _jwtTokenFactory() {\n return new Promise((resolve, reject) => {\n if (appStore.currentTokenObj) {\n const timeMsNow = Date.now() / 1000;\n if (appStore.currentTokenObj.exp < timeMsNow) {\n reject(new Error(`Jwt token has expired at ${appStore.currentTokenObj.exp}, current time is ${timeMsNow}`));\n return;\n }\n\n resolve(appStore.currentToken);\n return;\n }\n\n reject(new Error(`User isn't authorized, Jwt token is not defined`));\n });\n }\n\n private async _setupConnection(hubConnection: signalR.HubConnection) {\n try {\n this._initObservers.forEach((cb) => cb());\n\n appStore.signalRConnectionId = await hubConnection.invoke('GetConnectionId');\n this.setupHeartbeat();\n\n const groups: SignalRGroup[] = [];\n this._signalRObservers.forEach((item) => {\n hubConnection.on(item.eventName, item.internalObserver);\n\n if (item.group && groups.findIndex((g) => g.name === item.group?.name && g.isPersonRelated === item.group.isPersonRelated) === -1) {\n groups.push(item.group);\n }\n });\n\n let lastError: unknown = null;\n for (let i = 0; i < groups.length; i++) {\n try{\n await hubConnection.invoke('SubscribeToGroup', groups[i].name, groups[i].isPersonRelated);\n } catch (e) {\n lastError = e;\n console.error(e);\n }\n }\n\n if (lastError) throw lastError;\n } catch (e) {\n //no reason to drop onnection, dropping leads to uncontrolled reconnect in case of any issue in code, throw will cause error to be shown and error in JS logs\n console.error(e);\n throw e;\n }\n }\n\n onInitialized(cb: TEvent) {\n this._initObservers.push(cb);\n return () => (this._initObservers = this._initObservers.filter((sub) => sub !== cb));\n }\n\n setupHeartbeat() {\n const timeoutInSec = 90 + 30 * Math.random();\n window.setTimeout(this.updateHeartbeat, timeoutInSec * 1000);\n }\n\n updateHeartbeat = () => {\n if (this._hubConnection && this._hubConnection.state === signalR.HubConnectionState.Connected) {\n this._hubConnection.invoke('UpdateHeartbeat').catch((err) => console.error(err));\n }\n\n this.setupHeartbeat();\n };\n\n public sendNotification(methodName: string, notification: T) {\n return new Promise((resolve, reject) => {\n this._waitForConnection().then(() => {\n if (this._hubConnection && this._hubConnection.state === signalR.HubConnectionState.Connected) {\n this._hubConnection.invoke(methodName, notification).catch((err) => {\n console.error(err);\n reject(err);\n }).then(v => resolve(v));\n }\n }).catch((e) => {\n reject(e);\n throw e;\n });\n }); \n }\n\n public subscribeToGroup(eventName: string, observer: TPayloadEvent, groupName?: string, isPersonRelated: boolean = false) {\n const signalRObserver: SignalRObserver = {\n group: groupName ? { name: groupName, isPersonRelated } : undefined,\n eventName: eventName,\n observer: observer as TEvent,\n internalObserver: (context: SignalREventContext) => {\n if (groupName && context.groupName && context.groupName != groupName && !(isPersonRelated && context.groupName.startsWith(groupName)))\n return;\n \n observer(eventName, ApiService.typeCheck(context.payload));\n }\n };\n\n if (!signalRObserver.group) {\n this._addObserver(signalRObserver);\n return;\n }\n\n this._waitForConnection().then(() => {\n const hasGroupConnection = this._signalRObservers.findIndex((obs) => obs.group?.name === signalRObserver.group?.name && obs.group?.isPersonRelated === signalRObserver.group?.isPersonRelated) !== -1;\n if (!hasGroupConnection) {\n void this._hubConnection?.invoke('SubscribeToGroup', signalRObserver.group?.name, signalRObserver.group?.isPersonRelated);\n }\n\n this._addObserver(signalRObserver);\n }).catch((e) => {\n throw e;\n });\n }\n\n public unsubscribeFromGroup(eventName: string, observer: TPayloadEvent) {\n this._waitForConnection().then(() => {\n const signalRObserver = this._signalRObservers.find((obs) => obs.eventName === eventName && obs.observer === observer);\n if (!signalRObserver) {\n throw new Error(`Registration for ${eventName} is missing`);\n }\n\n if (!signalRObserver.group) {\n this._removeObserver(signalRObserver);\n return;\n }\n\n this._removeObserver(signalRObserver);\n\n const groupHasAnyObserver = this._signalRObservers.findIndex((obs) => obs.group?.name === signalRObserver.group?.name && obs.group?.isPersonRelated === signalRObserver.group?.isPersonRelated) !== -1;\n if (!groupHasAnyObserver) {\n void this._hubConnection?.invoke('UnsubscribeFromGroup', signalRObserver.group?.name, signalRObserver.group?.isPersonRelated);\n }\n }).catch((e) => {\n const signalRObserver = this._signalRObservers.find((obs) => obs.eventName === eventName && obs.observer === observer);\n signalRObserver && this._removeObserver(signalRObserver);\n throw e;\n });\n }\n\n private _addObserver(event: SignalRObserver) {\n this._hubConnection?.on(event.eventName, event.internalObserver);\n this._signalRObservers.push(event);\n }\n\n private _removeObserver(event: SignalRObserver) {\n this._hubConnection?.off(event.eventName, event.internalObserver);\n\n const index = this._signalRObservers.indexOf(event);\n if (index !== -1) {\n this._signalRObservers.splice(index, 1);\n }\n }\n\n public addReconnectObserver(cb: TEvent) {\n this._reconnectObservers.push(cb);\n }\n\n public removeReconnectObserver(cb: TEvent) {\n const index = this._reconnectObservers.indexOf(cb);\n\n if (index !== -1) {\n this._reconnectObservers.splice(index, 1);\n }\n }\n\n public async reinitOnObservedPersonChanged() {\n const newQueryParams = appStore.getQueryStringAuthParams({ single: true, token: false });\n if (this._queryStringAuthParams === newQueryParams) return;\n\n this._queryStringAuthParams = newQueryParams;\n if (appStore.isAuthorized()) {\n await this.setUpHub(true);\n }\n }\n\n private _onReconnect() {\n this._reconnectObservers.forEach((cb) => cb());\n }\n\n private _waitForConnection(timeout: number = 30000) {\n if (this._waitForConnectionPromise) return this._waitForConnectionPromise;\n\n this._waitForConnectionPromise = new Promise((resolve, reject) => {\n let checkIntervalId: number | undefined = undefined;\n\n const timeoutId = window.setTimeout(() => {\n window.clearInterval(checkIntervalId);\n this._waitForConnectionPromise = null;\n\n reject(new Error('Timeout waiting for signalR connection'));\n }, timeout);\n\n const checkConnection = () => {\n if (this._hubConnection && this._hubConnection.state === signalR.HubConnectionState.Connected) {\n window.clearTimeout(timeoutId);\n checkIntervalId && window.clearInterval(checkIntervalId);\n this._waitForConnectionPromise = null;\n\n resolve();\n return true;\n }\n return false;\n };\n\n if (checkConnection()) return;\n checkIntervalId = window.setInterval(checkConnection, 50);\n });\n\n return this._waitForConnectionPromise;\n }\n}\n\nexport const signalRService = new SignalRService();\n","/* eslint-disable max-lines */\n\nexport type MatchComparer = (value: string | undefined, term: string, startPos: number) => number;\nconst diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z'\n};\ntype StringMap = { [key: string]: string };\ntype Hightlite = {\n start: number;\n end: number;\n length: number;\n};\nexport type CompareMatch = {\n text: string;\n isMatch: boolean;\n};\n\nexport class StringSearchService {\n public prepareString (s: string | undefined) {\n if (!s) return s;\n return this._stripDiacritics(s?.toUpperCase());\n }\n\n private _stripDiacritics (str: string) {\n if (!str || str.length < 1) return str;\n\n let ret = '';\n for (let i = 0; i < str.length; i++) {\n const c = str.charAt(i);\n ret += (diacritics as StringMap)[c] || c;\n }\n return ret;\n }\n\n private _removeInHightlites (hightlites: Hightlite[]) {\n for (let n = hightlites.length - 1; n >= 0; n--) {\n const h1 = hightlites[n];\n for (let j = n - 1; j >= 0; j--) {\n const h2 = hightlites[j];\n if (h1.start >= h2.start && h1.end <= h2.end) {\n hightlites.splice(n, 1);\n break;\n }\n }\n }\n }\n\n private _expandHightlites (hightlites: Hightlite[]) {\n for (let n = hightlites.length - 1; n >= 0; n--) {\n const h1 = hightlites[n];\n for (let j = n - 1; j >= 0; j--) {\n const h2 = hightlites[j];\n\n const ss = h2.start <= h1.start && h1.start <= h2.end;\n const se = h2.start <= h1.end && h1.end <= h2.end;\n if (ss) {\n h2.end = h1.end;\n h2.length = h2.end - h2.start + 1;\n hightlites.splice(n, 1);\n } else if (se) {\n h2.start = h1.start;\n h2.length = h2.end - h2.start + 1;\n hightlites.splice(n, 1);\n }\n }\n }\n }\n\n public markMatches = (text: string | undefined, terms: string[], matcher: MatchComparer): CompareMatch[] => {\n if (!text) {\n return [];\n }\n\n const textToSearch = this._stripDiacritics(text.toUpperCase());\n const hightlites: Hightlite[] = [];\n for (let j = 0; j < terms.length; j++) {\n let pStart = 0;\n let p;\n const term = this._stripDiacritics(terms[j].toUpperCase());\n if (!term) continue;\n\n do {\n p = matcher(textToSearch, term, pStart);\n if (p > -1) {\n pStart = p + term.length;\n hightlites.push({\n start: p,\n length: term.length,\n end: pStart\n });\n\n this._removeInHightlites(hightlites);\n this._expandHightlites(hightlites);\n }\n } while (p > -1);\n }\n\n hightlites.sort((a, b) => a.start - b.start);\n\n const result: CompareMatch[] = [];\n\n let pos = 0;\n\n for (let j = 0; j < hightlites.length; j++) {\n const h = hightlites[j];\n if (pos < h.start) {\n result.push({\n isMatch: false,\n text: text.substring(pos, h.start)\n });\n }\n\n result.push({\n isMatch: true,\n text: text.substring(h.start, h.end)\n });\n pos = h.end;\n }\n\n if (pos < text.length) {\n result.push({\n isMatch: false,\n text: text.substring(pos, text.length)\n });\n }\n\n return result;\n };\n\n public highlight (text: string, terms: string[]) {\n terms.forEach(term => {\n text = this.highlightInternal(text, term);\n });\n\n return text;\n }\n\n private highlightInternal (text: string, term: string) {\n term = term.toLowerCase();\n\n let plainTextNodeIndexes: number[] = [];\n let plainText = '';\n\n const splittedText: string[] = [];\n let currentSplit = '';\n\n for (const chr of text) {\n if (chr === '>') {\n currentSplit += chr;\n splittedText.push(currentSplit);\n currentSplit = '';\n continue;\n }\n\n if (chr === '<') {\n if (currentSplit && !currentSplit.startsWith('<')) {\n splittedText.push(currentSplit);\n plainTextNodeIndexes.push(splittedText.length - 1);\n\n currentSplit = chr;\n } else {\n currentSplit += chr;\n }\n\n continue;\n }\n\n if (currentSplit.startsWith('<')) {\n currentSplit += chr;\n continue;\n }\n\n plainText += chr.toLowerCase();\n currentSplit += chr;\n if (plainText === term) {\n plainText = '';\n splittedText.push(currentSplit);\n plainTextNodeIndexes.push(splittedText.length - 1);\n\n for (let i = 0; i < plainTextNodeIndexes.length; i++) {\n splittedText[plainTextNodeIndexes[i]] = `${splittedText[plainTextNodeIndexes[i]]}`;\n }\n\n plainTextNodeIndexes = [];\n plainText = '';\n currentSplit = '';\n } else if (chr === ' ' || !term.startsWith(plainText)) {\n plainText = '';\n\n splittedText.push(currentSplit);\n currentSplit = '';\n }\n }\n\n return splittedText.join('');\n }\n}\n\nexport const stringSearchService = new StringSearchService();\n\n","import DateTimeService from '@app/Services/DateTimeService';\nimport { RosterCell } from '@app/Models';\n\nexport class TitleService {\n public buildTitle(baseTitle: string, selectedList: RosterCell[]) {\n const startDate: Date = selectedList[0].date;\n const personCodes: string[] = [];\n let isSameDate: boolean = true;\n\n selectedList.forEach((personDay) => {\n if (isSameDate) {\n isSameDate = DateTimeService.isSameDate(startDate, personDay.date);\n }\n\n if (personCodes.findIndex((c) => c === personDay.person.code) === -1) {\n personCodes.push(personDay.person.code);\n }\n });\n\n let isSameRange: boolean = true;\n let minDate: Date | null = null;\n let maxDate: Date | null = null;\n personCodes.forEach((code) => {\n const dates = selectedList\n .filter((p) => p.person.code === code)\n .map((p) => p.date.getTime())\n .sort()\n .map((d) => new Date(d));\n if (isSameRange) {\n const isEqualStartEnd = minDate && maxDate ? DateTimeService.isSameDate(minDate, dates[0]) && DateTimeService.isSameDate(maxDate, dates[dates.length - 1]) : true;\n minDate = dates[0];\n maxDate = dates[dates.length - 1];\n isSameRange = isEqualStartEnd && dates.length === DateTimeService.diffDays(maxDate, minDate) + 1;\n }\n });\n\n const dateTitle = isSameDate ? DateTimeService.toUiDate(startDate) : isSameRange ? `${minDate && DateTimeService.toUiDate(minDate)} - ${maxDate && DateTimeService.toUiDate(maxDate)}` : `selection`;\n const personTitle = personCodes.slice(0, 5).join(', ') + (personCodes.length > 5 ? ` and ${personCodes.length - 5} more` : '');\n return `${baseTitle} / ${personTitle} for ${dateTitle}`;\n }\n}\n","import { action, runInAction } from 'mobx';\n\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { UndoOperationModel, DutyItem } from '@app/Models/WebApiModels';\n\nimport { PromiseCompletion } from '@app/Classes/PromiseCompletion';\nimport LocalStorageService from '@app/Services/LocalStorageService';\nimport { dutyChangeService } from '@app/Services/DutyChangeService';\nimport ApiService from '@app/Services/ApiService';\n\nimport { modalService } from '@app/Components/Modal';\nimport OperationText from '../Pages/Home/Components/OperationText';\nimport React from 'react';\n\nexport type AddUndoOperationHandler = (operationId: string, operationName: string) => void;\nexport type UndoDutyHandler = () => void;\nexport type UndoDutyOperationHandler = (operationId: string) => PromiseLike;\nexport type UndoCountHandler = (count: number) => void;\n\nexport class UndoService {\n private _undoProcessing: PromiseCompletion = new PromiseCompletion();\n private _handlerList: UndoCountHandler[] = [];\n\n public notifyCountChange(count: number) {\n const handlers = this._handlerList.slice();\n for (let i = 0; i < handlers.length; i++) {\n handlers[i](count);\n }\n }\n\n public subscribe(onChange: UndoCountHandler) {\n if (!this._handlerList.length && !this._undoProcessing.isPending) {\n void this._loadOperations();\n }\n if (this._handlerList.indexOf(onChange) !== -1) {\n throw new Error('Callback is already registered!');\n }\n this._handlerList.push(onChange);\n }\n\n public unsubscribe(onChange: UndoCountHandler) {\n const callbackIndex = this._handlerList.indexOf(onChange);\n if (callbackIndex === -1) throw new Error('Callback is not registered!');\n\n this._handlerList.splice(callbackIndex, 1);\n }\n\n @action\n private async _loadOperations() {\n await this._undoProcessing.add(async () => {\n return window.setTimeout(async () => {\n const operations = (await ApiService.getTypedData>(ApiUrls.DutyUndoUrl)).data;\n runInAction(() => {\n const operationsCount = LocalStorageService.addOperationListToStack(operations);\n this.notifyCountChange(operationsCount);\n });\n }, 1000);\n });\n }\n\n @action.bound\n public addOperation(operationId: string, operationName: string) {\n const operationsCount = LocalStorageService.addOperationToStack(operationId, operationName);\n this.notifyCountChange(operationsCount);\n }\n\n @action\n public async undoDuty(suppressConfirmation: boolean, rosterLoading: PromiseCompletion) {\n if (this._undoProcessing.isPending) return;\n\n const operationDetails = LocalStorageService.pickTopOperationDetails();\n\n if (!operationDetails?.operationId) return;\n\n if (!suppressConfirmation) {\n const isConfirmed = await modalService.showConfirmation(\n React.createElement(OperationText, { operationId: operationDetails.operationId, text: operationDetails.operationName }), `Would you like to undo operation?`\n );\n\n if (!isConfirmed) {\n return;\n }\n }\n\n await this.undoDutyOperation(operationDetails.operationId, true, rosterLoading);\n }\n\n @action\n public async undoDutyOperation(operationId: string, removeOperation: boolean = true, rosterLoading: PromiseCompletion, shouldRemoveOperationInErrorCase?: (error: string | null) => Promise) {\n const undoRequest = ApiService.postTypedData<{ duties: DutyItem[] | null, operationId: string, errorMessage: string | null }>(ApiUrls.DutyUndoUrl + '?operationId=' + operationId, null, { completion: this._undoProcessing });\n rosterLoading.subscribe(undoRequest);\n\n const { data: response } = await undoRequest;\n\n if (!response.errorMessage && response.duties) {\n void dutyChangeService.notifyDutyChange(response.duties);\n\n if (removeOperation) {\n LocalStorageService.getLastOperation();\n }\n } else {\n const operationDetails = LocalStorageService.pickTopOperationDetails();\n\n const shouldRemoveOperation = await (shouldRemoveOperationInErrorCase\n ? shouldRemoveOperationInErrorCase(response.errorMessage)\n : modalService.showYesNo(\n React.createElement(\"p\", {}, [\n React.createElement(OperationText, { operationId: operationId, text: operationDetails?.operationName ?? \"\", key: \"text\" }),\n React.createElement(\"br\", { key: \"br1\" }),\n React.createElement(\"br\", { key: \"br2\" }),\n React.createElement(\"b\", { key: \"b1\" }, `EXCEPTION:`),\n React.createElement(\"br\", { key: \"br3\" }),\n React.createElement(\"a\", { key: \"a1\", style: { color: \"red\" } }, `${response.errorMessage}`),\n React.createElement(\"br\", { key: \"br4\" }),\n React.createElement(\"br\", { key: \"br5\" }),\n React.createElement(\"a\", { key: \"a2\" }, `Undo failed. Would you like to delete failed operation from Undo list?`),\n ]), \"Undo Execution Failed\"\n ));\n\n if (!shouldRemoveOperation) {\n return;\n }\n LocalStorageService.getLastOperation();\n await ApiService.postData(ApiUrls.DutyRollbackUndoUrl + '?operationId=' + operationId);\n }\n const operationsCount = LocalStorageService.getOperationsAmount();\n this.notifyCountChange(operationsCount);\n }\n}\n","export default class UrlService {\n public static getCurrentUrl(): string {\n return window.location.href;\n }\n\n public static getParam(key: string): string | null {\n const params = new URLSearchParams(window.location.search);\n return params.get(key);\n }\n\n public static openInNewWindow(url: string, param?: string, name?: string, specs?: string) {\n let params: string = '';\n\n if (param) {\n params = window.location.search ? window.location.search + '&' + param : '?' + param;\n }\n\n window.open(url + params, name, specs);\n }\n\n public static clearParams() {\n window.history.replaceState({}, document.title, window.location.pathname);\n }\n\n public static updateParams(key: string, value: string | null) {\n const path = window.location.pathname;\n const params = new URLSearchParams(window.location.search);\n if (value !== null) {\n params.set(key, value);\n } else {\n params.delete(key);\n }\n window.history.replaceState({}, document.title, path + '?' + params.toString());\n }\n \n public static getParams(params: [string, string | null | undefined][]) {\n const values = params.map(p => {\n const [name, value] = p;\n if (!value){\n return null;\n }\n\n return `${name}=${encodeURIComponent(value)}`;\n }).filter(x => !!x);\n\n if (values.length){\n return '?' + values.join('&');\n }\n\n return '';\n }\n}\n","/* eslint-disable */\n\nimport { computed } from 'mobx';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { DateTime } from '@app/AppConstants/DateTime';\n\n/*Validation Rules*/\nexport function isRequired(msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n return obj[name] ? null : msg || `Field \"${getDisplayName(obj, name)}\" cannot be empty`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isRequiredWhenExist(related: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n return obj[related] && (obj[name] ? null : msg || `Field \"${getDisplayName(obj, name)}\" cannot be empty`);\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isRequiredWhenNotExist(related: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n return !obj[related] && (obj[name] ? null : msg || `Field \"${getDisplayName(obj, name)}\" cannot be empty`);\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isRequiredWhen(compareName: string, compareValue: any, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const shouldValidate = obj[compareName] === compareValue;\n return obj[name] || !shouldValidate ? null : msg || `Field \"${getDisplayName(obj, name)}\" cannot be empty`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isRequiredWhenAndNotExist(compareName: string, compareValue: any, related: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const shouldValidate = obj[compareName] === compareValue;\n if (!shouldValidate) return null;\n return !obj[related] && (obj[name] ? null : msg || `Field \"${getDisplayName(obj, name)}\" cannot be empty`);\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isDate(msg?: string) {\n const regEx = /^\\s*(3[01]|[12][0-9]|0?[1-9])\\.(1[012]|0?[1-9])\\.(\\d{4})\\s*$/;\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || (regEx.test(obj[name]) && DateTimeService.isValidDate(DateTimeService.parseUiDate(obj[name])));\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" should have format ${DateTime.viewDateFormat}`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isDateAfter(compareName: string, format?: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const originDate = DateTimeService.parse(obj[name], format ? format : DateTime.viewDateFormat);\n const compareDate = DateTimeService.parse(obj[compareName], format ? format : DateTime.viewDateFormat);\n const isValid = !DateTimeService.isValidDate(originDate) || !DateTimeService.isValidDate(compareDate) || originDate >= compareDate;\n return isValid ? undefined : msg || `\"${getDisplayName(obj, name)}\" should be later than \"${getDisplayName(obj, compareName)}\"`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isDateTimeAfter(compareName: string, disableEquals?: boolean, format?: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const originDate = DateTimeService.parse(obj[name], format ? format : DateTime.viewFullFormat);\n const compareDate = DateTimeService.parse(obj[compareName], format ? format : DateTime.viewFullFormat);\n const comparedDates = disableEquals ? originDate > compareDate : originDate >= compareDate;\n const isValid = !DateTimeService.isValidDate(originDate) || !DateTimeService.isValidDate(compareDate) || comparedDates;\n return isValid ? undefined : msg || `\"${getDisplayName(obj, name)}\" should be later than \"${getDisplayName(obj, compareName)}\"`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isDateBefore(compareName: string, format?: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const originDate = DateTimeService.parse(obj[name], format ? format : DateTime.viewDateFormat);\n const compareDate = DateTimeService.parse(obj[compareName], format ? format : DateTime.viewDateFormat);\n const isValid = !DateTimeService.isValidDate(originDate) || !DateTimeService.isValidDate(compareDate) || originDate <= compareDate;\n return isValid ? undefined : msg || `\"${getDisplayName(obj, name)}\" should be earlier than \"${getDisplayName(obj, compareName)}\"`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isDateTimeBefore(compareName: string, disableEquals?: boolean, format?: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const originDate = DateTimeService.parse(obj[name], format ? format : DateTime.viewFullFormat);\n const compareDate = DateTimeService.parse(obj[compareName], format ? format : DateTime.viewFullFormat);\n const comparedDates = disableEquals ? originDate < compareDate : originDate <= compareDate;\n const isValid = !DateTimeService.isValidDate(originDate) || !DateTimeService.isValidDate(compareDate) || comparedDates;\n return isValid ? undefined : msg || `\"${getDisplayName(obj, name)}\" should be earlier than \"${getDisplayName(obj, compareName)}\"`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isSameAs(compareName: string, format?: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = obj[name] === obj[compareName];\n return isValid ? undefined : msg || `\"${getDisplayName(obj, name)}\" should be the same as \"${getDisplayName(obj, compareName)}\"`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isNotSameAs(compareName: string, format?: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = obj[name] !== obj[compareName];\n return isValid ? undefined : msg || `\"${getDisplayName(obj, name)}\" should not be the same \"${getDisplayName(obj, compareName)}\"`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isTime(msg?: string) {\n const regEx = /^(([0-1][0-9])|(2[0-3])):[0-5][0-9]$/;\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || regEx.test(obj[name]);\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" should have format ${DateTime.timeFormat.toUpperCase()}`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isDateTime(msg?: string) {\n const regEx = /^\\s*(3[01]|[12][0-9]|0?[1-9])\\.(1[012]|0?[1-9])\\.((?:19|20)\\d{2})[ ](([0-1][0-9])|(2[0-3])):[0-5][0-9]$/;\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || (regEx.test(obj[name]) && DateTimeService.isValidDate(DateTimeService.parseUiDateTime(obj[name])));\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" should have format ${DateTime.viewFullFormat.toUpperCase()}`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isNotEmptyArray(msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || obj[name].length > 0;\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" should be not empty`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function hasMinLength(length: number, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || obj[name].toString().length >= length;\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" should be great than or equal to ${length} characters`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function hasMaxLength(length: number, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || obj[name].toString().length <= length;\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" should be less than or equal to ${length} characters`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function notWhitespace(msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = obj[name].toString().length > 0 ? obj[name].toString().trim().length > 0 : true;\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" cannot consist only of white-space characters.`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isRange(min: number, max: number, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const number = Number(obj[name]);\n const isValid = !obj[name] || (!isNaN(number) && number >= min && number <= max);\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" is out of range from ${min} to ${max}`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isDateInRange(start: string, end: string, format?: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const originDate = DateTimeService.parse(obj[name], format ? format : DateTime.viewDateFormat);\n const startDate = DateTimeService.parse(obj[start], format ? format : DateTime.viewDateFormat);\n const endDate = DateTimeService.parse(obj[end], format ? format : DateTime.viewDateFormat);\n\n if (!DateTimeService.isValidDate(originDate)) return undefined;\n\n const isStartValid = start && DateTimeService.isValidDate(startDate) ? DateTimeService.isSameDate(originDate, startDate) || DateTimeService.isAfterDate(originDate, startDate) : true;\n const isEndValid = end && DateTimeService.isValidDate(endDate) ? DateTimeService.isSameDate(originDate, endDate) || DateTimeService.isBeforeDate(originDate, endDate) : true;\n\n if (!isStartValid) return msg || `\"${getDisplayName(obj, name)}\" should be later or equal to ${obj[start]}`;\n\n if (!isEndValid) return msg || `\"${getDisplayName(obj, name)}\" should be earlier or equal to ${obj[end]}`;\n\n return undefined;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isRegEx(regEx: any, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || regEx.test(obj[name]);\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" is not valid.`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isNumber(msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n let isValid = !obj[name] || !isNaN(Number(obj[name]));\n let errorMEssage = `Field \"${getDisplayName(obj, name)}\" is not a number`;\n if (isValid && !Number.isInteger(Number(obj[name]))) {\n isValid = false;\n errorMEssage = `Field \"${getDisplayName(obj, name)}\" should be integer value.`;\n }\n return isValid ? undefined : msg || errorMEssage;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isBiggerThanNull(msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n let isValid = !obj[name] || Number(obj[name]) <= 0;\n let errorMEssage;\n if (isValid && obj[name].length && Number(obj[name]) <= 0) {\n isValid = false;\n errorMEssage = `Field \"${getDisplayName(obj, name)}\" is less or equal than 0`;\n }\n return isValid ? undefined : msg || errorMEssage;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isDuration(msg?: string) {\n const regEx = /\\d*:[0-5][0-9]$/;\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || regEx.test(obj[name]);\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" should have format HH:MM`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isEmail(msg?: string) {\n const regEx = /([\\w.-]+@([\\w-]+)\\.+\\w{2,})/;\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || regEx.test(obj[name]);\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" is not a valid email`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function emailsHasMaxCount(maxCount: number, separator: string = ';', msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const emails = obj[name] ? (obj[name] as string).split(separator) : [];\n\n const isValid = !obj[name] || emails.length <= maxCount;\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" should have less than or equal to ${maxCount} emails`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function emailsHasDomains(domains: string[], separator: string = ';', msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const domainPattern = domains.map(domain => domain.replace('.', '\\\\.')).join(\"|\");\n const emailPattern = `[\\\\w.-]+(${domainPattern})`;\n const regEx = new RegExp(`^${emailPattern}(?:${separator}${emailPattern})*$`);\n\n const isValid = !obj[name] || regEx.test(obj[name]);\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" should have one of these domains: ${domains.join(', ')}`;\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function isEmptyWhenExist(related: string, msg?: string) {\n return function (target: any, name: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n return obj[related] && (!obj[name] ? null : msg || `Field \"${getDisplayName(obj, name)}\" must be empty`);\n }\n };\n\n addValidation(target, name, validation);\n };\n}\n\nexport function displayName(displayName: string) {\n return function (target: any, name: string) {\n const __displayName = camelCase('____displayName_', name);\n target[__displayName] = displayName;\n };\n}\n\nexport function addDateTimeValidator(target: any, name: string, msg?: string, title?: string) {\n const regEx = /^\\s*(3[01]|[12][0-9]|0?[1-9])\\.(1[012]|0?[1-9])\\.((?:19|20)\\d{2})[ ](([0-1][0-9])|(2[0-3])):[0-5][0-9]$/;\n\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || (regEx.test(obj[name]) && DateTimeService.isValidDate(DateTimeService.parseUiDateTime(obj[name])));\n return isValid ? undefined : msg || `Field \"${(title ? title : camelCase('', name))}\" should have format DD.MM.YYYY HH:MM`;\n }\n };\n\n addValidation(target, name, validation);\n}\n\nexport function addDateValidator(target: any, name: string, msg?: string, title?: string) {\n const regEx = /^\\s*(3[01]|[12][0-9]|0?[1-9])\\.(1[012]|0?[1-9])\\.((?:19|20)\\d{2})\\s*$/;\n\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || (regEx.test(obj[name]) && DateTimeService.isValidDate(DateTimeService.parseUiDate(obj[name])));\n return isValid ? undefined : msg || `Field \"${(title ? title : camelCase('', name))}\" should have format DD.MM.YYYY`;\n }\n };\n\n addValidation(target, name, validation);\n}\n\nexport function addDateInRangeValidator(target: any, name: string, start: string, end: string, msg?: string | ((any: string) => string), format?: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const originDate = DateTimeService.parse(obj[name], format ? format : DateTime.viewDateFormat);\n const startDate = DateTimeService.parse(start, format ? format : DateTime.viewDateFormat);\n const endDate = DateTimeService.parse(end, format ? format : DateTime.viewDateFormat);\n\n if (!DateTimeService.isValidDate(originDate)) return undefined;\n\n const isStartValid = start && DateTimeService.isValidDate(startDate) ? DateTimeService.isSameDate(originDate, startDate) || DateTimeService.isAfterDate(originDate, startDate) : true;\n const isEndValid = end && DateTimeService.isValidDate(endDate) ? DateTimeService.isSameDate(originDate, endDate) || DateTimeService.isBeforeDate(originDate, endDate) : true;\n\n if (msg && (!isStartValid || !isEndValid))\n return msg && typeof msg === 'string' ? msg : msg && (msg as any)(obj[name]);\n\n if (!isStartValid) return `\"${getDisplayName(obj, name)}\" should be later or equal to ${start}`;\n\n if (!isEndValid) return `\"${getDisplayName(obj, name)}\" should be earlier or equal to ${end}`;\n\n return undefined;\n }\n };\n\n addValidation(target, name, validation);\n}\n\nexport function addNumberValidator(target: any, name: string, msg?: string, title?: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const isValid = !obj[name] || !isNaN(Number(obj[name]));\n return isValid ? undefined : msg || `Field \"${(title ? title : camelCase('', name))}\" is not a number`;\n }\n };\n\n addValidation(target, name, validation);\n}\n\nexport function addUrlValidator(target: any, name: string, msg?: string, title?: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n let isValid: boolean = false;\n let errorMessage: string | undefined;\n try {\n if (obj[name]) {\n const newUrl = new URL(obj[name]);\n isValid = newUrl.protocol === 'http:' || newUrl.protocol === 'https:';\n }\n } catch (err) {\n errorMessage = (err as Error)?.message;\n }\n\n if (!isValid && !errorMessage) {\n errorMessage = 'is not a valid URL protocol';\n }\n\n return isValid ? undefined : msg || `Field \"${(title ? title : camelCase('', name))}\": ${errorMessage}`;\n }\n };\n\n addValidation(target, name, validation);\n}\n\nexport function addRequiredValidator(target: any, name: string, msg?: string, title?: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n return obj[name] ? null : msg || `Field \"${(title ? title : camelCase('', name))}\" cannot be empty`;\n }\n };\n addValidation(target, name, validation);\n}\n\nexport function addIsRangeValidator(target: any, name: string, min: number, max: number, msg?: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n const number = Number(obj[name]);\n const isValid = !obj[name] || (!isNaN(number) && number >= min && number <= max);\n return isValid ? undefined : msg || `Field \"${getDisplayName(obj, name)}\" is out of range from ${min} to ${max}`;\n }\n };\n addValidation(target, name, validation);\n}\n\nexport function addCustomValidator(target: any, name: string, validationFn: () => boolean, message: string) {\n const validation = {\n fieldName: name,\n validateFunction: (obj: any) => {\n return validationFn() ? undefined : message;\n }\n };\n addValidation(target, name, validation);\n}\n\n/*Logic*/\nfunction addValidation(target: any, name: any, validationRule: any) {\n const __validators = '__validators';\n const __validationErrors = '__validationErrors';\n const __isValidForm = '__isValidForm';\n const __validateError = camelCase('__validateError_', name);\n const __errorFields = '__errorFields';\n\n if (!target.hasOwnProperty(__validators)) {\n const prototypeValue = target[__validators];\n Object.defineProperty(target, __validators, {\n configurable: true,\n enumerable: false,\n value: prototypeValue?.slice(0) ?? []\n });\n }\n\n if (!target.hasOwnProperty(__validationErrors)) {\n const descriptor = {\n configurable: true,\n enumerable: false,\n get: function getter(this: any) {\n const errorList: any = [];\n const validators = this[__validators];\n validators.forEach((validator: any) => {\n const error = validator.validateFunction(this);\n if (error) {\n errorList.push(error);\n }\n });\n return errorList;\n }\n };\n defineComputedProperty(target, __validationErrors, descriptor);\n }\n\n if (!target.hasOwnProperty(__isValidForm)) {\n const descriptor = {\n configurable: true,\n enumerable: false,\n get: function getter(this: any) {\n let isValid = true;\n const validators = this[__validators];\n if (!validators.length) return isValid;\n validators.forEach((validator: any) => {\n const error = validator.validateFunction(this);\n if (error) {\n isValid = false;\n }\n });\n return isValid;\n }\n };\n\n defineComputedProperty(target, __isValidForm, descriptor);\n }\n\n if (!target.hasOwnProperty(__validateError)) {\n const descriptor = {\n configurable: true,\n enumerable: false,\n get: function getter(this: any) {\n const validators = this[__validators];\n const errorList: any = [];\n validators.forEach((validator: any) => {\n if (validator.fieldName === name) {\n const error = validator.validateFunction(this);\n if (error) {\n errorList.push(error);\n }\n }\n });\n return errorList;\n }\n };\n defineComputedProperty(target, __validateError, descriptor);\n }\n\n if (!target.hasOwnProperty(__errorFields)) {\n const descriptor = {\n configurable: true,\n enumerable: false,\n get: function getter(this: any) {\n const validators = this[__validators];\n const errorNames: any = [];\n validators.forEach((validator: any) => {\n const error = validator.validateFunction(this);\n if (error) {\n errorNames.push(validator.fieldName);\n }\n });\n return errorNames;\n }\n };\n defineComputedProperty(target, __errorFields, descriptor);\n }\n\n target[__validators].push(validationRule);\n}\n\nfunction defineComputedProperty(target: any, name: string, descriptor: PropertyDescriptor & ThisType) {\n Object.defineProperty(target, name, descriptor);\n computed(target, name, descriptor);\n}\n\nfunction camelCase(prefix: string, others: string) {\n return prefix + others[0].toUpperCase() + others.substr(1);\n}\n\nfunction getDisplayName(target: any, name: string) {\n const __displayName = camelCase('____displayName_', name);\n return target[__displayName] ? target[__displayName] : camelCase('', name);\n}\n\nexport function setDisplayName(target: any, name: string, value: string) {\n const __displayName = camelCase('____displayName_', name);\n target[__displayName] = value;\n}\n","import { AppReadyService } from './AppReadyService';\nimport { DownloadService } from './DownloadService';\nimport { PrintService } from './PrintService';\nimport { ScrollService } from './ScrollService';\nimport { TitleService } from './TitleService';\nimport { UndoService } from './UndoService';\nimport { ActivityService } from './ActivityService';\nimport { FreelanceActivityService } from './FreelanceActivityService';\n\ntype Class = new (...args: unknown[]) => T;\nclass ServiceClass {\n private _servicesRegistrations: Set = new Set();\n private _servicesInstances: Map = new Map();\n\n constructor () {\n this._servicesRegistrations.add(ActivityService);\n this._servicesRegistrations.add(FreelanceActivityService);\n this._servicesRegistrations.add(AppReadyService);\n this._servicesRegistrations.add(DownloadService);\n this._servicesRegistrations.add(PrintService);\n this._servicesRegistrations.add(ScrollService);\n this._servicesRegistrations.add(TitleService);\n this._servicesRegistrations.add(UndoService);\n }\n\n public resolve (type: Class): T {\n if (!this._servicesRegistrations.has(type)){\n throw new Error(`Type ${type} is not registered`);\n }\n\n let existingInstance = this._servicesInstances.get(type);\n if (existingInstance){\n return existingInstance as T;\n }\n\n const newInstance = new type() as T;\n this._servicesInstances.set(type, newInstance);\n\n return newInstance;\n }\n}\n\nexport const service = new ServiceClass();","import { observable } from 'mobx';\nimport ApiService from '../Services/ApiService';\nimport { ApiUrls } from '../AppConstants/ApiUrls';\nimport { ConfigType, ConfigurationModel } from '@app/Models/WebApiModels';\nimport Extensions from '@app/Services/Extensions';\nimport PromiseQueue from '@app/Classes/PromiseQueue';\nimport { Configurations } from '@app/AppConstants/Configurations';\nimport { globalAjaxLoaderStore } from './GlobalAjaxLoaderStore';\nimport { applyDecorators } from '@app/Helpers/Decorator';\nimport { PromiseCompletion } from '@app/Classes/PromiseCompletion';\n\ntype ConfigurationEntryKey = {\n group: string;\n key: string;\n};\n\ntype ConfigurationEntryPending = ConfigurationEntryKey & {\n resolve: (value: string | null) => void;\n reject: (error: Error) => void;\n isLoading: boolean;\n};\n\ntype ConfigurationEntry = ConfigurationEntryKey & {\n value: string | null;\n};\n\nclass ConfigurationStore {\n private _pendingLoadConfigurations: ConfigurationEntryPending[] = [];\n private _localConfigurations: ConfigurationEntry[] = [];\n private _saveQueue: PromiseQueue;\n @observable featureList: Set = new Set();\n\n constructor() {\n applyDecorators(this);\n this._saveQueue = new PromiseQueue();\n }\n\n public isFeatureEnabled (featureName: string): boolean {\n return this.featureList.has(featureName);\n }\n \n public loadConfig () {\n Configurations.featureKeys.forEach((key) => {\n globalAjaxLoaderStore.startupLoaders.push(configurationStore.get(Configurations.featureGroup, key).then((value) => {\n if (value && value.toLowerCase() === 'true') this.featureList.add(key);\n }));\n });\n }\n\n public get(group: string, key: string, loader?: PromiseCompletion): Promise {\n const result = new Promise((resolve, reject) => {\n const localConfigValue = this._localConfigurations.find((x) => x.group === group && x.key === key);\n if (localConfigValue) {\n resolve(localConfigValue.value);\n return;\n }\n\n this._pendingLoadConfigurations.push({\n key: key,\n group: group,\n resolve: resolve,\n reject: reject,\n isLoading: !!this._pendingLoadConfigurations.find((x) => x.group === group && x.key === key)\n });\n Extensions.executeTimeout(this._loadPendingConfiguration, 1, this);\n });\n loader?.subscribe(result);\n return result;\n }\n\n public set(group: string, key: string, value: string | null) {\n this._saveQueue.add(\n new ConfigurationModel({\n key: key,\n group: group,\n value: value || '',\n isSystem: true,\n type: ConfigType.Boolean\n }),\n this._saveConfigurationInternal\n );\n\n const localConfigValue = this._localConfigurations.find((x) => x.group === group && x.key === key);\n if (localConfigValue) {\n localConfigValue.value = value;\n } else {\n this._localConfigurations.push({\n group: group,\n key: key,\n value: value\n });\n }\n }\n\n private async _loadPendingConfiguration() {\n const configurationsToLoad = this._pendingLoadConfigurations.filter((x) => !x.isLoading);\n configurationsToLoad.forEach((k) => (k.isLoading = true));\n const loadKeys = configurationsToLoad.map((k) => k.group + '.' + k.key);\n const distinctKeys = [...new Set(loadKeys)];\n const params = {\n keys: distinctKeys.join(',')\n };\n\n try {\n const result = distinctKeys.length ? (await ApiService.getTypedData(ApiUrls.ConfigurationUrl, params)).data : [];\n result?.forEach?.((r) => {\n this._localConfigurations.push({\n group: r.group,\n key: r.key,\n value: r.value || null\n });\n });\n configurationsToLoad?.forEach?.((c) => {\n const r = result?.find((r) => r.group === c.group && r.key === c.key);\n this._notifyPendingHandler(c.group, c.key, (h) => h.resolve((r && r.value) || null));\n });\n } catch (er) {\n const error = new Error((er as object).toString());\n configurationsToLoad.forEach((c) => {\n this._notifyPendingHandler(c.group, c.key, (h) => h.reject(error));\n });\n }\n }\n\n private _notifyPendingHandler(group: string, key: string, callback: (h: ConfigurationEntryPending) => void) {\n for (let i = this._pendingLoadConfigurations.length - 1; i >= 0; i--) {\n const handler = this._pendingLoadConfigurations[i];\n if (!(handler.group === group && handler.key === key)) continue;\n callback(handler);\n this._pendingLoadConfigurations.splice(i, 1);\n }\n }\n\n private async _saveConfigurationInternal(configuration: ConfigurationModel) {\n await ApiService.putData(ApiUrls.ConfigurationUrl, configuration);\n }\n}\n\nexport const configurationStore = new ConfigurationStore();\n","declare global {\n interface Window {\n environment: string;\n appVersion: string;\n unsupportedMode: boolean;\n }\n}\n\nclass DevInfoStore {\n get envClassName(): string {\n return window.environment.toLocaleLowerCase();\n }\n\n get appVersion(): string {\n return window.appVersion;\n }\n\n get appEnvironment(): string {\n return window.environment.toUpperCase();\n }\n\n get isDevelopment(): boolean {\n return this.appEnvironment === 'DEVELOPMENT';\n }\n\n get isStaging(): boolean {\n return this.appEnvironment === 'STAGING';\n }\n\n get isProduction(): boolean {\n return this.appEnvironment === 'PRODUCTION';\n }\n}\n\nexport const devInfoStore = new DevInfoStore();\n","import {action} from 'mobx';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\nclass GlobalAjaxLoaderStore {\n private _actionElement: HTMLInputElement | HTMLButtonElement | null = null;\n private _actionElementMap: Map = new Map();\n\n public appLoaderElement?: HTMLElement;\n public appLoaderMessageElement?: HTMLElement;\n public startupLoaders: Promise[] = [];\n\n constructor() {\n applyDecorators(this);\n document.addEventListener('click', this.appClickHandler, { capture: true });\n }\n\n @action\n public hideAppLoader() {\n const loaderNode = this.appLoaderElement;\n const messageNode = this.appLoaderMessageElement;\n if (!loaderNode) return;\n\n if (!loaderNode.classList.contains('hide')) {\n loaderNode.classList.add('hide');\n if (messageNode) {\n messageNode.innerText = '';\n }\n }\n }\n\n @action\n public showAppLoader(message?: string) {\n const loaderNode = this.appLoaderElement;\n const messageNode = this.appLoaderMessageElement;\n if (!loaderNode) return;\n\n loaderNode.classList.remove('invisible');\n window.setTimeout(() => {\n loaderNode.classList.remove('hide');\n if (message && messageNode) {\n messageNode.innerText = message;\n }\n }, 0);\n }\n\n @action\n public showAjaxSpinner(timestamp: number) {\n const elem = this._actionElement;\n if (elem) {\n this._actionElementMap.set(timestamp, elem);\n elem.disabled = true;\n elem.classList.add('btn-loader');\n this._actionElement = null;\n }\n }\n\n @action\n public hideAjaxSpinner(timestamp: number) {\n const elem = this._actionElementMap.get(timestamp);\n if (elem) {\n elem.disabled = false;\n elem.classList.remove('btn-loader');\n this._actionElementMap.delete(timestamp);\n }\n }\n\n @action.bound\n public appClickHandler(event: MouseEvent) {\n this.setActiveAjaxElement(event.target);\n }\n\n @action\n public setActiveAjaxElement(target: EventTarget | null) {\n const element = target as HTMLInputElement | HTMLButtonElement | null;\n const button = element && element.closest('button');\n if (button && !button.classList.contains('no-loader')) {\n this._actionElement = button;\n }\n }\n}\n\nexport const globalAjaxLoaderStore = new GlobalAjaxLoaderStore();\n","import { action, observable } from 'mobx';\nimport { PromiseCompletion } from '@app/Classes/PromiseCompletion';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\nexport type GlobalProgressData = {\n total: number;\n current: number;\n title: string;\n};\n\nclass LoaderStore {\n @observable public globalProgress: GlobalProgressData | null = null;\n public globalLoader: PromiseCompletion = new PromiseCompletion();\n \n constructor () {\n applyDecorators(this);\n }\n \n @action.bound\n public updateGlobalProgress(progressData: GlobalProgressData) {\n this.globalProgress = {\n total: progressData.total,\n current: progressData.current,\n title: progressData.title\n };\n if (progressData.total === progressData.current) {\n this.globalProgress = null;\n }\n }\n}\n\nexport const loaderStore = new LoaderStore();\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import { action, computed, observable } from 'mobx';\nimport { Location, createBrowserHistory } from 'history';\n\nimport { SignalRMethods } from '@app/AppConstants/SignalR';\nimport { signalRService } from '@app/Services/SignalRService';\n\nimport { personActivityStore } from './PersonActivityStore';\nimport { applyDecorators } from '@app/Helpers/Decorator';\n\nexport const history = createBrowserHistory();\n\nclass NavigationStore {\n @observable public currentLocation: Location;\n\n constructor() {\n applyDecorators(this);\n this.currentLocation = Object.create(history.location);\n }\n\n @action\n init() {\n document.addEventListener('DOMContentLoaded', () => {\n this._sendCurrentLocation();\n });\n\n history.listen((location: Location) => {\n this.currentLocation = location;\n\n this._sendCurrentLocation();\n });\n\n const target = document.querySelector('title');\n let lastTitle = document.title;\n const observer = new MutationObserver(() => {\n //remove file changes detected title changes in asp.net browser refresh\n const newTitle = document.title.replace(/[☱,☲,☴]/, '');\n if (newTitle !== lastTitle){\n lastTitle = newTitle;\n this._sendCurrentLocation();\n }\n });\n const config = {\n childList: true,\n };\n target && observer.observe(target, config);\n\n signalRService.addReconnectObserver(this._onSignalRReconnect);\n }\n\n private _sendCurrentLocation() {\n signalRService.sendNotification(SignalRMethods.updatePersonLocation, { location: this.currentLocation.pathname, locationName: document.title });\n personActivityStore.updatePersonLastActivity();\n }\n\n private _onSignalRReconnect() {\n const location = Object.create(history.location);\n\n signalRService.sendNotification(SignalRMethods.updatePersonLocation, { location: location.pathname, locationName: document.title });\n personActivityStore.sendPersonLastActivity();\n }\n\n //NAVIGATION\n @action\n redirect(url: string, isCtrlKey: boolean = false, state?: T) {\n if (isCtrlKey) {\n const target = '_blank';\n const win = window.open(url, target);\n win && win.focus();\n return;\n }\n\n if (state) {\n history.push({ pathname: url, state: state });\n } else {\n if(url.charAt(0) === '/') {\n history.push(url);\n } else {\n window.location.href = url;\n }\n }\n }\n\n replace(url: string, state?: T) {\n if (state) {\n history.replace({ pathname: url, state: state });\n } else {\n history.replace(url);\n }\n }\n\n @computed\n get isHomePage() {\n const regExp = /^\\/$/;\n return !this.currentLocation || regExp.test(this.currentLocation.pathname);\n }\n\n @computed\n get isRequestTool() {\n const regExpExclude = /^\\/request-tool-configuration/;\n return !this.currentLocation || ((/^\\/request-tool/.test(this.currentLocation.pathname) || /^\\/crew-portal/.test(this.currentLocation.pathname)) && !regExpExclude.test(this.currentLocation.pathname));\n }\n}\n\nexport const navigationStore = new NavigationStore();\n","import { computed, observable } from \"mobx\";\n\nimport ApiService from \"@app/Services/ApiService\";\nimport { appStore } from \"@app/AppStore\";\nimport { ApiUrls } from \"@app/AppConstants/ApiUrls\";\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\nimport { PredefinedRoleModel } from \"@app/Models/WebApiModels\";\nimport { UserPermissions } from \"@app/Components\";\n\ntype MatchedRole = PredefinedRoleModel & {\n matches: number;\n kpi: number;\n};\n\nclass PermissionStore {\n @observable roles: PredefinedRoleModel[] = [];\n\n constructor() {\n applyDecorators(this);\n }\n\n @computed\n public get currentUserPermissions(): number[] {\n return this.getPermissionIdsFromEncodedRoles(appStore.impersonatedUserRoles) || this.getPermissionIdsFromEncodedRoles(appStore.realUserRoles) || [];\n }\n\n public async loadRoles() {\n const { data } = await ApiService.getTypedData(ApiUrls.PermissionRoleUrl, null);\n this.roles = data;\n }\n\n public encodeBytesToBase64(bytes: number[]) {\n return bytes.length ? '1' + btoa(String.fromCharCode.apply(null, bytes)) : '';\n }\n\n public decodeBase64ToBytes(encodedStr: string) {\n if (!encodedStr.startsWith('1')) return;\n\n const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n const base64Str = encodedStr.slice(1);\n const isValid = base64regex.test(base64Str);\n\n if (isValid) {\n return atob(base64Str).split('').map(c => c.charCodeAt(0));\n }\n }\n\n public convertPermissionIdsToBytes(ids?: number[]) {\n if (!ids || !ids.length) return [];\n\n const maxId = Math.max(...ids);\n const bytesCount = Math.ceil(maxId / 8);\n const bytes = new Uint8Array(bytesCount);\n ids.forEach(id => {\n const byteIndex = Math.floor((id - 1) / 8);\n const bitIndex = ((id - 1) - byteIndex * 8);\n bytes[byteIndex] = bytes[byteIndex] | (128 >>> bitIndex);\n });\n\n return Array.from(bytes);\n }\n\n public convertBytesToPermissionIds(bytes?: number[]) {\n if (!bytes) return [];\n\n const ids: number[] = [];\n const bitesCount = bytes.length * 8;\n for (let i = 0; i < bitesCount; i++) {\n const byteIndex = Math.floor(i / 8);\n const bitIndex = (i - byteIndex * 8);\n const isBitSet = (bytes[byteIndex] & (128 >>> bitIndex)) !== 0;\n if (isBitSet) {\n const permissionId = i + 1;\n ids.push(permissionId);\n }\n }\n\n return ids;\n }\n\n public getPermissionIdsFromEncodedRoles(encodedStrings: string[]) {\n if (!encodedStrings.length) return;\n\n let permissionIds: number[] = [];\n for (let str of encodedStrings) {\n const bytes = this.decodeBase64ToBytes(str);\n const ids = this.convertBytesToPermissionIds(bytes);\n permissionIds = permissionIds.concat(ids);\n }\n\n return permissionIds;\n }\n\n public getRolesMatchFromEncodedRoles(encodedRoles: string[]) {\n const permissionIds = this.getPermissionIdsFromEncodedRoles(encodedRoles);\n const rolesMatch = this.getRolesMatch(permissionIds)?.text;\n\n return rolesMatch || '';\n }\n\n private _getMostProbableRoles(selectedPermissions: number[]) {\n const probableRoles: MatchedRole[] = [];\n this.roles.forEach(role => {\n if (!role.permissionIds) return;\n const { permissionIds } = role;\n\n const minKpi = 50;\n const matchesCount = permissionIds.filter(p => selectedPermissions.includes(p)).length;\n let kpi = 0;\n if (!!matchesCount && !!permissionIds.length) {\n kpi = (matchesCount / permissionIds.length) * 100;\n }\n if (matchesCount > 0 && kpi >= minKpi) {\n probableRoles.push({ matches: matchesCount, kpi, ...role });\n }\n });\n\n const mostProbableRoles = probableRoles.sort((a, b) => b.matches - a.matches || b.kpi - a.kpi);\n return mostProbableRoles;\n }\n\n public getRolesMatch(selectedPermissions?: number[]) {\n if (!selectedPermissions || !selectedPermissions.length || !this.roles.length) return null;\n\n const mostProbableRoles: MatchedRole[] = this._getMostProbableRoles(selectedPermissions);\n let matchedRoles: MatchedRole[] = [];\n let remainingPermissions = [...selectedPermissions];\n let missingPermissions: { id: number, codeName: string, permissionIds: number[] }[] = [];\n let excludingPermissions: Set = new Set();\n\n const processRoles = (continueCondition?: (role: MatchedRole) => boolean) => {\n let i = 0;\n while (i <= 3) {\n for (const mostProbableRole of mostProbableRoles) {\n if (continueCondition?.(mostProbableRole)) continue;\n\n const rolePermissions = mostProbableRole.permissionIds.filter(permission => remainingPermissions.includes(permission));\n if (rolePermissions.length > 0) {\n matchedRoles.push(mostProbableRole);\n remainingPermissions = remainingPermissions.filter(permission => !mostProbableRole.permissionIds.includes(permission));\n\n const missingRolePermissions = mostProbableRole.permissionIds.filter(permission => !selectedPermissions.includes(permission));\n if (missingRolePermissions.length > 0) {\n missingPermissions.push({ id: mostProbableRole.id, codeName: mostProbableRole.codeName, permissionIds: missingRolePermissions });\n missingRolePermissions.forEach(p => excludingPermissions.add(p));\n }\n }\n\n if (remainingPermissions.length <= i && excludingPermissions.size <= i) {\n return true;\n }\n }\n\n i++;\n }\n\n matchedRoles = [];\n missingPermissions = [];\n excludingPermissions = new Set();\n remainingPermissions = [...selectedPermissions];\n\n return false;\n };\n\n switch (true) {\n case processRoles((r) => r.kpi < 100): break;\n case processRoles(): break;\n default: break;\n }\n\n if (matchedRoles.length) {\n let result = matchedRoles.map(r => `${r.codeName} role`).join(' + ');\n let resultSql: string = '';\n\n if (remainingPermissions.length) {\n const mostMatchedRole = matchedRoles[0];\n const extraPermissionsSql = selectedPermissions\n .filter(p => !mostMatchedRole.permissionIds.includes(p))\n .map(p => `(${mostMatchedRole.id} /* ${mostMatchedRole.codeName} */, ${p} /* ${UserPermissions[p]} */)`);\n\n resultSql += `/* ${mostMatchedRole.codeName} changes */\\n`;\n resultSql += `INSERT INTO [sec].[PredefinedRolePermission] ([RoleId], [PermissionId]) \\nVALUES \\n${extraPermissionsSql.join(',\\n')}\\nGO\\n`;\n result += ` + ${remainingPermissions.map(p => UserPermissions[p]).join(', ')}`;\n }\n if (missingPermissions.length) {\n missingPermissions.map(role => {\n resultSql += `/* ${role.codeName} changes */\\n`;\n resultSql += role.permissionIds\n .map(p => `DELETE FROM [sec].[PredefinedRolePermission] WHERE [RoleId] = ${role.id} /* ${role.codeName} */ AND [PermissionId] = ${p} /* ${UserPermissions[p]} */\\nGO\\n`)\n .join('');\n });\n result += ` excluding ${Array.from(excludingPermissions).map(p => UserPermissions[p]).join(', ')}`;\n }\n\n return {\n text: result,\n sql: resultSql\n };\n }\n\n return {\n text: selectedPermissions.length ? 'Custom role' : '',\n sql: null\n };\n }\n}\n\nexport const permissionStore = new PermissionStore();","import { SignalRMethods } from '@app/AppConstants/SignalR';\n\nimport DateTimeService from '@app/Services/DateTimeService';\nimport { signalRService } from '@app/Services/SignalRService';\n\nclass PersonActivityStore {\n private _isActive: boolean;\n private _lastActivityDate: Date;\n\n constructor() {\n this._setLastActivityDate();\n }\n\n public startChecking = () => {\n window.addEventListener('focus', this._onFocus);\n window.addEventListener('blur', this._onBlur);\n if (!document.hidden){\n this.updatePersonIsActive(true);\n this.updatePersonLastActivity();\n }\n };\n\n public stopChecking = () => {\n window.removeEventListener('focus', this._onFocus);\n window.removeEventListener('blur', this._onBlur);\n };\n\n public updatePersonIsActive = (isActive: boolean) => {\n if (this._isActive !== isActive) {\n this._isActive = isActive;\n\n this.sendPersonIsActive(isActive);\n }\n };\n\n public sendPersonIsActive = (isActive: boolean) => {\n signalRService.sendNotification(SignalRMethods.updatePersonIsActive, isActive);\n };\n\n public updatePersonLastActivity = () => {\n this._setLastActivityDate();\n this.sendPersonLastActivity();\n };\n\n public sendPersonLastActivity = () => {\n signalRService.sendNotification(SignalRMethods.updatePersonLastActivity, this._lastActivityDate);\n };\n\n private _onFocus = () => {\n this.updatePersonIsActive(true);\n this.updatePersonLastActivity();\n };\n\n private _onBlur = () => {\n this.updatePersonIsActive(false);\n this.updatePersonLastActivity();\n };\n\n private _setLastActivityDate = () => {\n this._lastActivityDate = DateTimeService.now();\n };\n}\n\nexport const personActivityStore = new PersonActivityStore();\n","module.exports = (__webpack_require__(55761))(1193);","module.exports = (__webpack_require__(55761))(2188);","module.exports = (__webpack_require__(55761))(2329);","module.exports = (__webpack_require__(55761))(3147);","module.exports = (__webpack_require__(55761))(3386);","module.exports = (__webpack_require__(55761))(3774);","module.exports = (__webpack_require__(55761))(3935);","module.exports = (__webpack_require__(55761))(4655);","module.exports = (__webpack_require__(55761))(6481);","module.exports = (__webpack_require__(55761))(6759);","module.exports = (__webpack_require__(55761))(7062);","module.exports = (__webpack_require__(55761))(7294);","module.exports = (__webpack_require__(55761))(7802);","module.exports = (__webpack_require__(55761))(9669);","module.exports = Vendor;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export default function _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}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _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}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import defineProperty from \"./defineProperty.js\";\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}\nexport default function _objectSpread2(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}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _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}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _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}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _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}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _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}","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"chunks/\" + chunkId + \".\" + {\"87\":\"b6c61b7c\",\"152\":\"806d0e3c\",\"199\":\"b032a48d\",\"291\":\"641ad998\",\"403\":\"2c9051df\",\"415\":\"9fbdc9b9\",\"425\":\"82e4a1db\",\"440\":\"8058d0a7\",\"805\":\"87b81248\",\"817\":\"a2dc3419\",\"1097\":\"9b06885a\",\"1121\":\"527aa78a\",\"1210\":\"0553ef69\",\"1274\":\"10c42032\",\"1303\":\"cbcaec07\",\"1376\":\"6b018d07\",\"1451\":\"d3cb2ef9\",\"1487\":\"9ad77221\",\"1517\":\"71499300\",\"1573\":\"f0b28950\",\"1696\":\"f5175e21\",\"1926\":\"25c6b7a3\",\"1928\":\"9ad48269\",\"1960\":\"9d9d02bd\",\"2015\":\"c500f9a3\",\"2127\":\"72e7a0a3\",\"2131\":\"58bc32b1\",\"2193\":\"4b6dc475\",\"2312\":\"5cb8cc40\",\"2339\":\"eeab29b4\",\"2411\":\"5e0b0445\",\"2688\":\"9725dd6d\",\"2848\":\"0ffe11d7\",\"2911\":\"20905f29\",\"2951\":\"52e5b7a6\",\"2961\":\"aa4c20e4\",\"3122\":\"e0bc2c0a\",\"3151\":\"9049e3ee\",\"3158\":\"b4ca8f62\",\"3170\":\"4b80ad0f\",\"3203\":\"d1fa69ff\",\"3229\":\"394d3c74\",\"3464\":\"4ebfab76\",\"3490\":\"f727b9d6\",\"3648\":\"bc0a71c0\",\"3809\":\"8c7043c1\",\"3854\":\"78e4755d\",\"4113\":\"66a76021\",\"4237\":\"736ce6e6\",\"4273\":\"bcbebd5b\",\"4295\":\"f91e1be6\",\"4484\":\"1ac5f82b\",\"4533\":\"eee80b8c\",\"4557\":\"20de9cd2\",\"4627\":\"f11220d0\",\"4883\":\"bed83ad7\",\"4929\":\"edbdbd40\",\"5056\":\"21f13364\",\"5162\":\"c78b73b6\",\"5190\":\"9141b6a9\",\"5256\":\"b4a899d6\",\"5586\":\"7fbb4da4\",\"5787\":\"bcbeacfa\",\"5819\":\"f3ae038e\",\"5820\":\"4272f3da\",\"6112\":\"4ea83e05\",\"6360\":\"6f876ec7\",\"6405\":\"2136cc0b\",\"6594\":\"fc4bce8b\",\"6653\":\"cbbcacdd\",\"6827\":\"01cacd18\",\"7065\":\"6d8b829c\",\"7091\":\"3f8560e4\",\"7255\":\"a3548f88\",\"7350\":\"d53c5d9f\",\"7446\":\"3effe7e6\",\"7502\":\"d70373b1\",\"7666\":\"06f126e0\",\"7721\":\"f66950e0\",\"7768\":\"69741696\",\"7870\":\"9945b77a\",\"7901\":\"fb781805\",\"7904\":\"e1fad5fd\",\"8044\":\"7f55cfa9\",\"8127\":\"dc9a5a7a\",\"8367\":\"ab7443e5\",\"8404\":\"49b6bc81\",\"8558\":\"dd7626f3\",\"8764\":\"1b526740\",\"8779\":\"3480364e\",\"8854\":\"ce390228\",\"8900\":\"3882b1f8\",\"9161\":\"59b5df7a\",\"9283\":\"2c543565\",\"9372\":\"2169ba9d\",\"9402\":\"24a30acf\",\"9470\":\"eec1aee3\",\"9509\":\"2d75a8bf\",\"9685\":\"315b43d3\",\"9871\":\"6a1d4743\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".site.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"edw-crew-page:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"87\":1,\"805\":1,\"1121\":1,\"1696\":1,\"1926\":1,\"1960\":1,\"2193\":1,\"2312\":1,\"2339\":1,\"3170\":1,\"3203\":1,\"4237\":1,\"4484\":1,\"4533\":1,\"5056\":1,\"5162\":1,\"5256\":1,\"5820\":1,\"7255\":1,\"8367\":1,\"8900\":1,\"9161\":1,\"9372\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = this[\"webpackChunkedw_crew_page\"] = this[\"webpackChunkedw_crew_page\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import * as React from 'react';\nimport { observable, action } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { Alert } from 'reactstrap';\n\nimport ApiService from '@app/Services/ApiService';\nimport { SignalREvents } from '@app/AppConstants/SignalR';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { MaintenanceModel } from '@app/Models/WebApiModels';\nimport { Icon } from '@app/Components/Icon';\nimport { signalRService } from '@app/Services/SignalRService';\nimport { AzureAuth, UserPermissions } from '@app/Components/AzureAuth';\nimport Extensions from '@app/Services/Extensions';\nimport { applyDecorators, EmptyProps } from \"@app/Helpers/Decorator\";\n\ninterface IMaintenanceBlockProps {\n isVisible: boolean;\n title: JSX.Element | string;\n caption: JSX.Element | string;\n alertColor?: string;\n}\n\n@observer\nexport default class MaintenanceBar extends React.Component {\n private _store: MaintenanceBarStore;\n\n constructor(props: EmptyProps) {\n super(props);\n applyDecorators(this);\n this._store = new MaintenanceBarStore();\n }\n\n componentWillUnmount(): void {\n this._store.unload();\n }\n\n render() {\n const { maintenance } = this._store;\n if (!maintenance) return null;\n return (\n \n \n \n Maintenance mode is turned ON now \n \n }\n caption={maintenance.maintenanceMessage || ''}\n alertColor=\"danger\"\n />\n \n );\n }\n}\n\n@observer\nclass MaintenanceBlock extends React.Component {\n private _timer: number | null = null;\n private _delay: number = 5 * 60 * 1000;\n @observable isOpen: boolean = true;\n\n constructor(props: IMaintenanceBlockProps) {\n super(props);\n applyDecorators(this);\n }\n\n render() {\n const { caption, title, isVisible, alertColor } = this.props;\n if (!isVisible) return null;\n return (\n \n
\n
{title}
\n {caption &&
{caption}
}\n
\n \n \n \n
\n );\n }\n\n onClose = () => {\n this.isOpen = false;\n this.setupInterval();\n };\n\n setupInterval() {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n this._timer = window.setTimeout(() => {\n this.isOpen = true;\n }, this._delay);\n }\n}\n\nclass MaintenanceBarStore {\n @observable maintenance: MaintenanceModel;\n\n @action.bound\n async getData() {\n const { data } = await ApiService.getTypedData(ApiUrls.MaintenanceUrl);\n this.maintenance = data;\n }\n\n constructor() {\n applyDecorators(this);\n Extensions.executeTimeout(this.getData, 5000, this);\n signalRService.subscribeToGroup(SignalREvents.updateStatusMaintenance, this.updateData);\n signalRService.subscribeToGroup(SignalREvents.sendMaintenanceNotification, this.getData);\n }\n\n @action\n updateData = () => {\n if (!AzureAuth.hasAccess(UserPermissions.AdminToolsSafe)) {\n location.reload();\n } else {\n void this.getData();\n }\n };\n\n @action\n unload() {\n signalRService.unsubscribeFromGroup(SignalREvents.updateStatusMaintenance, this.updateData);\n signalRService.unsubscribeFromGroup(SignalREvents.sendMaintenanceNotification, this.getData);\n }\n}\n","import * as React from 'react';\nimport { observable, action } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { Alert } from 'reactstrap';\n\nimport ApiService from '@app/Services/ApiService';\nimport { SignalREvents } from '@app/AppConstants/SignalR';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\nimport { EasaAlertModel } from '@app/Models/WebApiModels';\nimport { Icon } from '@app/Components/Icon';\nimport { signalRService } from '@app/Services/SignalRService';\nimport Extensions from '@app/Services/Extensions';\nimport { applyDecorators, EmptyProps } from \"@app/Helpers/Decorator\";\nimport { navigationStore } from '@app/Stores/NavigationStore';\n\n@observer\nexport default class EasaAlertBar extends React.Component {\n @observable maintenance: EasaAlertModel = { hasErrors: false };\n private _timer: number | null = null;\n private _delay: number = 15 * 60 * 1000;\n @observable isOpen: boolean = true;\n\n constructor(props: EmptyProps) {\n super(props);\n applyDecorators(this);\n }\n\n componentDidMount(): void {\n Extensions.executeTimeout(this.getData, 5000, this);\n signalRService.subscribeToGroup(SignalREvents.updateEasaAlert, this.updateData);\n }\n\n componentWillUnmount(): void {\n signalRService.unsubscribeFromGroup(SignalREvents.updateEasaAlert, this.updateData);\n }\n\n render() {\n const isVisible = this.maintenance.hasErrors;\n if (!isVisible) return null;\n\n return (\n \n \n
\n
\n EASA Alert {\" \"}\n \"Navigate\n
\n {this.maintenance.messages && this.maintenance.messages.map((x, index) =>
* {x}
)}\n
\n \n \n \n
\n
\n );\n }\n\n @action.bound\n async getData() {\n const { data } = await ApiService.getTypedData(ApiUrls.ErrorReportUrl);\n this.maintenance = data;\n }\n\n @action\n updateData = (category: string, messages?: string[]) => {\n const isMessageChanged = JSON.stringify(this.maintenance.messages || []) !== JSON.stringify(messages || []);\n\n if (isMessageChanged) {\n this.maintenance.hasErrors = (messages && messages.length > 0) === true;\n this.maintenance.messages = messages;\n if (!this.isOpen && this.maintenance.hasErrors) {\n this.isOpen = true;\n } else if (this.isOpen && !this.maintenance.hasErrors) {\n this.isOpen = false;\n }\n }\n };\n\n onClose = () => {\n this.isOpen = false;\n this.setupInterval();\n };\n\n setupInterval() {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n this._timer = window.setTimeout(() => {\n this.isOpen = true;\n }, this._delay);\n }\n\n onClickNavigateToErrors = () => {\n const easa2hErrorsId = '10';\n navigationStore.redirect(`/?resetFilters=true&releaseFilterTypes=${easa2hErrorsId}`);\n };\n}","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { Container } from 'reactstrap';\nimport ReactResizeDetector from 'react-resize-detector';\n\nimport { PrincipalConfig } from '@app/AppConstants/PrincipalConfig';\nimport { KeyboardKeys } from '@app/AppConstants/KeyboardKeys';\n\nimport { appStore } from '../AppStore';\nimport { configurationStore } from '@app/Stores/ConfigurationStore';\nimport { navigationStore } from '@app/Stores/NavigationStore';\nimport { loaderStore } from '@app/Stores/LoaderStore';\n\nimport { Loading } from './Loading';\nimport { NavMenu } from './NavMenu';\nimport { Modals } from './Modal';\nimport MaintenanceBar from '@app/Components/MaintenanceBar';\nimport EasaAlertBar from '@app/Components/EasaAlertBar';\nimport { isTouchDevice } from '@app/Helpers/DevicesHelper';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\nimport { AzureAuth, UserPermissions } from './AzureAuth';\nimport { Configurations } from '@app/AppConstants/Configurations';\n\nexport type LayoutProps = {\n children?: React.ReactNode;\n};\n\n@observer\nexport class Layout extends React.Component {\n\n constructor(props: LayoutProps) {\n super(props);\n applyDecorators(this);\n }\n\n async componentDidMount() {\n document.addEventListener('keydown', this._keydownHandler, true);\n\n const isShortcutsEnabled = await configurationStore.get(PrincipalConfig.CommonGroup, PrincipalConfig.UseKeyboardShortcutsKey);\n appStore.isShortcutsEnabled = isShortcutsEnabled ? !!JSON.parse(isShortcutsEnabled) : false;\n }\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this._keydownHandler);\n }\n\n public render() {\n const className = 'content-wrapper' + (this.isTouchDevice ? ' touchable' : '') + (appStore.isContrastMode ? ' contrast-mode' : '');\n\n const isCrewPortal = navigationStore.currentLocation.pathname.startsWith('/crew-portal')\n || navigationStore.currentLocation.pathname.startsWith('/request-tool') && !navigationStore.currentLocation.pathname.startsWith('/request-tool-')\n || appStore.isCrewPortalDns;\n\n const hasEasaPopupAccess = AzureAuth.hasAccess([UserPermissions.RosterCabinWriteTracking, UserPermissions.RosterCockpitWriteTracking]);\n\n return (\n
\n \n
\n \n {!isCrewPortal && configurationStore.isFeatureEnabled(Configurations.enableEasaWarning) && hasEasaPopupAccess && }\n \n
\n {!isCrewPortal && }\n {this.props.children}\n \n
\n );\n }\n\n private get isTouchDevice() {\n if (isTouchDevice) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n const list: MediaQueryList = window.matchMedia(query);\n return list.matches;\n }\n\n _keydownHandler = (event: KeyboardEvent) => {\n if (appStore.isShortcutsEnabled && appStore.isCtrlKey && event.keyCode === KeyboardKeys.H) {\n if (!navigationStore.isHomePage) {\n navigationStore.redirect('/');\n }\n event.preventDefault();\n return false;\n }\n return true;\n };\n\n private _onResizeAlertsContainer = (_: number, height?: number) => {\n document.body.style.setProperty('--alert-bar-height', height + 'px');\n window.dispatchEvent(new Event('resize'));\n };\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { autorun, IReactionDisposer } from 'mobx';\nimport { appStore } from '@app/AppStore';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\nexport type AppContainerProps = {\n children?: React.ReactNode;\n};\n\n@observer\nexport class AppContainer extends React.Component {\n private _autoDisposer: IReactionDisposer;\n private _isAdaptive: boolean = false;\n private _bodyClass: string = '';\n \n constructor (props:AppContainerProps) {\n super(props);\n applyDecorators(this);\n }\n \n updateViewPort = () => {\n const responsiveSwitchBreakpoint = 1024;\n const viewportNode = document.querySelector('meta[name=\"viewport\"]');\n const documentNode = document.documentElement;\n if (viewportNode && documentNode) {\n let content = 'width=device-width, initial-scale=1.0';\n if (!appStore.isAdaptive && documentNode.clientWidth < responsiveSwitchBreakpoint) {\n content = 'width=' + responsiveSwitchBreakpoint + ', initial-scale=' + documentNode.clientWidth / responsiveSwitchBreakpoint;\n }\n viewportNode.setAttribute('content', content);\n }\n };\n\n updateBodyClass() {\n if (this._bodyClass !== [...appStore.bodyClassList].join(' ')) {\n this._bodyClass = [...appStore.bodyClassList].join(' ');\n document.body.className = this._bodyClass;\n }\n }\n\n componentDidMount() {\n this.updateViewPort();\n this.updateBodyClass();\n this._autoDisposer = autorun(() => {\n if (this._isAdaptive !== appStore.isAdaptive) {\n this.updateViewPort();\n this._isAdaptive = appStore.isAdaptive;\n }\n this.updateBodyClass();\n });\n }\n\n componentWillUnmount() {\n this._autoDisposer();\n }\n\n render() {\n return this.props.children;\n }\n}\n","import * as React from 'react';\nimport { observable, action, computed } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { PersonLookupModel } from '@app/Models/WebApiModels';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\n\nimport { appStore } from '@app/AppStore';\nimport { permissionStore } from '@app/Stores/PermissionStore';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport ApiService from '@app/Services/ApiService';\n\nimport AircraftPlaceholder from '@app/Components/AircraftPlaceholder';\nimport { applyDecorators, EmptyProps } from \"@app/Helpers/Decorator\";\n\n@observer\nexport class NotFound extends React.Component {\n private _store: NotFoundStore;\n\n constructor(props: EmptyProps) {\n super(props);\n applyDecorators(this);\n this._store = new NotFoundStore();\n }\n\n render() {\n const email = appStore.currentUser ? appStore.currentUser.unique_name : 'anonymous@noreply.com';\n const name = appStore.currentUser && appStore.currentUser.name ? appStore.currentUser.name : '';\n\n const addressing = name ? (\n <>\n {name} ({email})\n \n ) : (\n {email}\n );\n\n const realUserRoles = permissionStore.getRolesMatchFromEncodedRoles(appStore.realUserRoles);\n const impersonatedUserRoles = permissionStore.getRolesMatchFromEncodedRoles(appStore.impersonatedUserRoles);\n\n return (\n \n

404

\n

Page not found

\n

Hi, {addressing} ! Sorry, but the page you are looking for was either not found or does not exist.

\n

Technical details

\n {appStore.currentUser && (\n

\n \n Principal claims: {realUserRoles}\n \n

\n )}\n {appStore.impersonatedUser && appStore.impersonatedUser.personId && (\n

\n \n Impersonate person: {this._store.impersonatePersonName}\n {appStore.impersonatedUser.impersonateAsPrincipal ? ' (as principal)' : ''}\n \n

\n )}\n {appStore.impersonatedUser && appStore.impersonatedUser.roles && (\n

\n \n Impersonate claims: {impersonatedUserRoles}\n \n

\n )}\n {this._store.timestamp && (\n

\n \n Timestamp: {DateTimeService.format(this._store.timestamp, 'YYYY-MM-DD HH:mm:ss')}\n \n

\n )}\n

\n \n Path: {window.location.pathname}\n \n

\n
\n );\n }\n}\n\nclass NotFoundStore {\n @observable personName: PersonName | null = null;\n @observable timestamp: Date | null;\n\n constructor() {\n applyDecorators(this);\n void this._getPersonName();\n this._getTimestamp();\n }\n\n @computed\n get impersonatePersonName(): string {\n if (appStore.impersonatedUser && appStore.impersonatedUser.personId) {\n if (this.personName) return `${this.personName.firstName} ${this.personName.lastName} (${this.trimStartEndZero(appStore.impersonatedUser.personId)})`;\n else return appStore.impersonatedUser.personId;\n }\n\n return '';\n }\n\n trimStartEndZero(personId: string) {\n return personId.replace(new RegExp('^[0, -]+'), '').replace(new RegExp('[0, -]+$'), '');\n }\n\n private async _getPersonName() {\n if (!appStore.impersonatedUser || !appStore.impersonatedUser.personId) return;\n\n const { data: persons } = await ApiService.postTypedData(ApiUrls.PersonLookupUrl, {\n ids: [appStore.impersonatedUser.personId]\n });\n if (persons.length) {\n this.setPersonName(persons[0].firstName, persons[0].lastName);\n }\n }\n\n private _getTimestamp() {\n this._setTimestamp(DateTimeService.now());\n }\n\n @action\n setPersonName(firstName?: string, lastName?: string) {\n this.personName = { firstName: firstName ? firstName : '', lastName: lastName ? lastName : '' };\n }\n\n @action\n private _setTimestamp(timestamp: Date) {\n this.timestamp = timestamp;\n }\n}\n\ntype PersonName = {\n firstName: string;\n lastName: string;\n};\n","import * as React from 'react';\nimport { observable, action, computed } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { PersonLookupModel } from '@app/Models/WebApiModels';\nimport { ApiUrls } from '@app/AppConstants/ApiUrls';\n\nimport { permissionStore } from '@app/Stores/PermissionStore';\nimport DateTimeService from '@app/Services/DateTimeService';\nimport ApiService from '@app/Services/ApiService';\nimport { appStore } from '@app/AppStore';\n\nimport AircraftPlaceholder from '@app/Components/AircraftPlaceholder';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\ntype ForbiddenProps = {\n url: string | null;\n method: string | null;\n error: string | null;\n};\n\n@observer\nexport class Forbidden extends React.Component {\n private _store: ForbiddenStore;\n\n constructor(props: ForbiddenProps) {\n super(props);\n applyDecorators(this);\n this._store = new ForbiddenStore();\n }\n\n render() {\n const email = appStore.currentUser ? appStore.currentUser.unique_name : 'anonymous@noreply.com';\n const name = appStore.currentUser && appStore.currentUser.name ? appStore.currentUser.name : '';\n\n const addressing = name ? (\n <>\n {name} ({email})\n \n ) : (\n {email}\n );\n const { method, url, error } = this.props;\n\n const realUserRoles = permissionStore.getRolesMatchFromEncodedRoles(appStore.realUserRoles);\n const impersonatedUserRoles = permissionStore.getRolesMatchFromEncodedRoles(appStore.impersonatedUserRoles);\n\n return (\n \n

403

\n

Forbidden

\n

\n Hi, {addressing} !
You don't have permission to access this page.\n

\n

Technical details

\n {appStore.currentUser && (\n

\n \n Principal claims: {realUserRoles}\n \n

\n )}\n {appStore.impersonatedUser && appStore.impersonatedUser.personId && (\n

\n \n Impersonate person: {this._store.impersonatePersonName}\n {appStore.impersonatedUser.impersonateAsPrincipal ? ' (as principal)' : ''}\n \n

\n )}\n {appStore.impersonatedUser && appStore.impersonatedUser.roles && (\n

\n \n Impersonate claims: {impersonatedUserRoles}\n \n

\n )}\n {url && (\n

\n \n Request url: {method?.toUpperCase()} {url}\n \n

\n )}\n {error && (\n

\n \n Error: {error}\n \n

\n )}\n {this._store.timestamp && (\n

\n \n Timestamp: {DateTimeService.format(this._store.timestamp, 'YYYY-MM-DD HH:mm:ss')}\n \n

\n )}\n
\n );\n }\n}\n\nclass ForbiddenStore {\n @observable personName: PersonName | null = null;\n @observable timestamp: Date | null = null;\n\n constructor() {\n applyDecorators(this);\n void this._getPersonName();\n this._getTimestamp();\n }\n\n @computed\n get impersonatePersonName(): string {\n if (appStore.impersonatedUser && appStore.impersonatedUser.personId) {\n if (this.personName) return `${this.personName.firstName} ${this.personName.lastName} (${this.trimStartEndZero(appStore.impersonatedUser.personId)})`;\n else return appStore.impersonatedUser.personId;\n }\n\n return '';\n }\n\n trimStartEndZero(personId: string) {\n return personId.replace(new RegExp('^[0, -]+'), '').replace(new RegExp('[0, -]+$'), '');\n }\n\n private async _getPersonName() {\n if (!appStore.impersonatedUser || !appStore.impersonatedUser.personId) return;\n\n const { data: persons } = await ApiService.postTypedData(ApiUrls.PersonLookupUrl, {\n ids: [appStore.impersonatedUser.personId]\n });\n if (persons.length) {\n this.setPersonName(persons[0].firstName, persons[0].lastName);\n }\n }\n\n private _getTimestamp() {\n this._setTimestamp(DateTimeService.now());\n }\n\n @action\n setPersonName(firstName?: string, lastName?: string) {\n this.personName = { firstName: firstName ? firstName : '', lastName: lastName ? lastName : '' };\n }\n\n @action\n private _setTimestamp(timestamp: Date) {\n this.timestamp = timestamp;\n }\n}\n\ntype PersonName = {\n firstName: string;\n lastName: string;\n};\n","import React from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { observer } from 'mobx-react';\nimport { observable, action } from 'mobx';\nimport { emitter } from './Services/EventEmitter';\nimport { Forbidden } from './Pages/Forbidden/Forbidden';\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\n\nexport interface IEdwRouteRouteProps extends RouteProps {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n component: any;\n additionalProps?: { [key: string]: unknown };\n}\n\n@observer\nexport class EdwRoute extends React.Component {\n private _store: EdwRouteStore;\n\n constructor(props: IEdwRouteRouteProps) {\n super(props);\n applyDecorators(this);\n this._store = new EdwRouteStore();\n }\n\n componentDidUpdate(prevProps: IEdwRouteRouteProps) {\n if (prevProps.path !== this.props.path) {\n this._store.clearError();\n }\n }\n\n render() {\n const { component: Component, additionalProps, ...rest } = this.props;\n\n if (this._store.hasErrors) {\n return ;\n } else {\n return } />;\n }\n }\n}\n\nclass EdwRouteStore {\n @observable hasErrors: boolean = false;\n @observable url: null | string = null;\n @observable method: null | string = null;\n @observable error: null | string = null;\n\n constructor() {\n applyDecorators(this);\n emitter.on('notify-error-403', this.onErrorHandler);\n }\n\n unload() {\n emitter.off('notify-error-403', this.onErrorHandler);\n }\n\n @action.bound\n onErrorHandler(details: { config?: { url: string, method: string }, response?: { data?: { error: string } } }) {\n this.hasErrors = true;\n this.url = details.config?.url || null;\n this.method = details.config?.method || null;\n this.error = details.response?.data?.error || null;\n }\n\n @action.bound\n clearError() {\n this.hasErrors = false;\n this.url = null;\n this.method = null;\n this.error = null;\n }\n}\n","import * as React from 'react';\nimport { Switch, Redirect, Route } from 'react-router-dom';\n\nimport { appStore } from './AppStore';\nimport { Layout } from './Components/Layout';\nimport { AppContainer } from '@app/Components/AppContainer';\nimport { AzureAuth, UserPermissions } from '@app/Components/AzureAuth';\nimport { NotFound } from './Pages/NotFound/NotFound';\nimport { Loading } from '@app/Components/Loading';\nimport { EdwRoute, IEdwRouteRouteProps } from './EdwRoute';\nimport { TradeUnionExportType } from './Models/WebApiModels';\n\nconst Home = React.lazy(() => import('./Pages/Home/Home'));\nconst HotelManagementDaily = React.lazy(() => import('./Pages/HotelManagement/HotelManagementDaily'));\nconst HotelManagementMonthly = React.lazy(() => import('./Pages/HotelManagement/HotelManagementMonthly'));\nconst VacManagement = React.lazy(() => import('./Pages/VacManagement/VacManagement'));\nconst ReserveManagement = React.lazy(() => import('./Pages/ReserveManagement/ReserveManagement'));\nconst HealthBoard = React.lazy(() => import('./Pages/HealthBoard/HealthBoard'));\nconst JobList = React.lazy(() => import('./Pages/JobList/JobList'));\nconst HomeStudy = React.lazy(() => import('./Pages/HomeStudy/HomeStudy'));\nconst ChangeLog = React.lazy(() => import('./Pages/ChangeLog/ChangeLog'));\n\nconst PersonReport = React.lazy(() => import('./Pages/PersonReport/PersonReport'));\nconst StandbyReport = React.lazy(() => import('./Pages/StandbyReport/StandbyReport'));\nconst RecurrentTrainingReport = React.lazy(() => import('./Pages/RecurrentTrainingReport/RecurrentTrainingReport'));\nconst PlannedTrainingsReport = React.lazy(() => import('./Pages/PlannedTrainingsReport/PlannedTrainingsReport'));\nconst AirportRecencyReport = React.lazy(() => import('./Pages/AirportRecencyReport/AirportRecencyReport'));\nconst AreaRouteCompetenceReport = React.lazy(() => import('./Pages/AreaRouteCompetenceReport/AreaRouteCompetenceReport'));\nconst SectorsReport = React.lazy(() => import('./Pages/SectorsReport/SectorsReport'));\nconst CrewDutyListReport = React.lazy(() => import('./Pages/CrewDutyListReport/CrewDutyListReport'));\nconst RosterReport = React.lazy(() => import('./Pages/RosterReport/RosterReport'));\nconst CommentReport = React.lazy(() => import('./Pages/CommentReport/CommentReport'));\nconst OffDaysReport = React.lazy(() => import('./Pages/OffDaysReport/OffDaysReport'));\nconst TzvReport = React.lazy(() => import('./Pages/TzvReport/TzvReport'));\nconst UrgentDutyReport = React.lazy(() => import('./Pages/UrgentDutyReport/UrgentDutyReport'));\nconst AircraftTypeRecencyCockpitReport = React.lazy(() => import('./Pages/AircraftTypeRecencyReport/AircraftTypeRecencyCockpitReport'));\nconst AircraftTypeRecencyCabinReport = React.lazy(() => import('./Pages/AircraftTypeRecencyReport/AircraftTypeRecencyCabinReport'));\nconst DooxReport = React.lazy(() => import('./Pages/DooxReport/DooxReport'));\nconst DownloadTempFile = React.lazy(() => import('./Pages/DownloadTempFile/DownloadTempFile'));\nconst ExperienceReport = React.lazy(() => import('./Pages/ExperienceReport/ExperienceReport'));\nconst SimulatorLicenseStatusReport = React.lazy(() => import('./Pages/SimulatorLicenseStatusReport/SimulatorLicenseStatusReport'));\nconst XStarMonitoringReport = React.lazy(() => import('./Pages/XStarMonitoringReport/XStarMonitoringReport'));\nconst CateringReport = React.lazy(() => import('./Pages/CateringReport/CateringReport'));\nconst GroundStatisticsReport = React.lazy(() => import('./Pages/GroundStatisticsReport/GroundStatisticsReport'));\nconst DosimetryReport = React.lazy(() => import('./Pages/DosimetryReport/DosimetryReport'));\nconst ErrorReport = React.lazy(() => import('./Pages/ErrorReport/ErrorReport'));\nconst SeniorityReport = React.lazy(() => import('./Pages/SeniorityReport/SeniorityReport'));\nconst SimulatorReport = React.lazy(() => import('./Pages/SimReport/SimReport'));\n\nconst Maintenance = React.lazy(() => import('./Pages/Maintenance/Maintenance'));\nconst JeppesenTool = React.lazy(() => import('./Pages/JeppesenTool/JeppesenTool'));\nconst BlockDaysManagement = React.lazy(() => import('./Pages/BlockDaysManagement/BlockDaysManagement'));\n\nconst RotationTool = React.lazy(() => import('./Pages/RotationTool/RotationTool'));\nconst RequestTool = React.lazy(() => import('./Pages/RequestTool/RequestTool'));\nconst RequestCapacityTool = React.lazy(() => import('./Pages/RequestCapacityTool/RequestCapacityTool'));\n\nconst PersonVacYearDetails = React.lazy(() => import('./Pages/VacManagement/PersonVacYearDetails'));\nconst Configs = React.lazy(() => import('./Pages/Configs/Configs'));\nconst AeroPersInterface = React.lazy(() => import('./Pages/TradeUnionInterface/TradeUnionInterface'));\nconst LicenseManagement = React.lazy(() => import('./Pages/LicenseManagement/LicenseManagement'));\nconst EmailViewer = React.lazy(() => import('./Pages/EmailViewer/EmailViewer'));\nconst TemplatesManagement = React.lazy(() => import('./Pages/TemplatesManagement/TemplatesManagement'));\nconst CrewApiGenDecConfig = React.lazy(() => import('./Pages/CrewApi/CrewApiGenDecConfig'));\nconst CrewApiConfigReport = React.lazy(() => import('./Pages/CrewApi/CrewApiConfigReport'));\nconst GenDecConfigReport = React.lazy(() => import('./Pages/CrewApi/GenDecConfigReport'));\nconst CustomPersonManagement = React.lazy(() => import('./Pages/CustomPersonManagement/CustomPersonManagement'));\nconst GenDec = React.lazy(() => import('./Pages/GenDec/GenDec'));\nconst PermissionsTool = React.lazy(() => import('./Pages/PermissionsTool/PermissionsTool'));\nconst CourseManagement = React.lazy(() => import('./Pages/CourseManagement/CourseManagement'));\nconst ccaReport = React.lazy(() => import('./Pages/CabinCrewAttestationReport/CabinCrewAttestationReport'));\n\nexport default class Routes {\n static get routs() {\n return {Routes.getLayout()};\n }\n\n static getLayout() {\n const rosterPermissions = AzureAuth.getRosterPermissions();\n const hasAccessToVacManagement = AzureAuth.hasAccess(UserPermissions.VacManagementRead);\n const hasAccessToReserveManagement = AzureAuth.hasAccess(UserPermissions.ReserveManagementRead);\n const hasAccessToRoster = AzureAuth.hasRosterAccess();\n const hasAccessToCockpit = AzureAuth.hasAccess(UserPermissions.RosterCockpitRead);\n const hasAccessToCabin = AzureAuth.hasAccess(UserPermissions.RosterCabinRead);\n const hasAccessToDutyRelatedReport = AzureAuth.hasAccess(UserPermissions.DutyRelatedReportsRead);\n const hasAccessToPersonReport = hasAccessToDutyRelatedReport && AzureAuth.hasAccess([\n UserPermissions.ReadPersonDetails,\n UserPermissions.ReadPersonDetailsCockpit,\n UserPermissions.ReadPersonDetailsCabin,\n UserPermissions.ReadPersonDetailsGround\n ]);\n const hasAccessToCateringReport = AzureAuth.hasAccess(UserPermissions.CateringReportRead);\n const hasAccessToJCR = AzureAuth.hasAccess(UserPermissions.JCRImportRead);\n const hasAccessToLicenseManagement = AzureAuth.hasAccess(UserPermissions.LicenseManagementRead);\n const hasAccessToGenDec = AzureAuth.hasAccess(UserPermissions.GenDecRead);\n const hasAccessToRotationTool = AzureAuth.hasAccess(UserPermissions.RotationToolRead);\n const hasAccessToAeropers = AzureAuth.hasAccess(UserPermissions.ToolAeroPersRead);\n const hasAccessToEfa = AzureAuth.hasAccess(UserPermissions.ToolEfaRead);\n const hasAccessToHotelTools = AzureAuth.hasAccess(UserPermissions.ToolHotelManagement);\n const hasAccessToCapacityTool = AzureAuth.hasAccess(UserPermissions.RequestCapacityTool);\n const hasAccessToBlockDaysManagement = AzureAuth.hasAccess(UserPermissions.BlockingDaysFlightsRead);\n const hasAccessToCrewApi = AzureAuth.hasAccess(UserPermissions.CrewApiRead);\n const hasAccessToCrewApiGenDecConfig = AzureAuth.hasAccess([UserPermissions.CrewApiRead, UserPermissions.GenDecRead]);\n const hasAccessToCustomPersonManagement = AzureAuth.hasAccess([UserPermissions.MarshalsInfoRead, UserPermissions.FseInfoRead]);\n const hasAccessToTemplatesManagement = AzureAuth.hasAccess(UserPermissions.TemplateManagementRead);\n const hasAccessToAdminTools = AzureAuth.hasAccess(UserPermissions.AdminToolsRead);\n const hasAccessToRequestTool = AzureAuth.hasCrewPortalAccess();\n const hasAccessToHomeStudy = AzureAuth.hasAccess([\n UserPermissions.RosterCabinWritePlanning,\n UserPermissions.RosterCabinWriteTracking,\n UserPermissions.RosterCockpitWritePlanning,\n UserPermissions.RosterCockpitWriteTracking,\n UserPermissions.RosterGroundWritePlanning,\n UserPermissions.RosterGroundWriteTracking\n ]);\n const hasAccessToChangeLog = AzureAuth.hasAccess(UserPermissions.ChangeLogRead);\n const hasAccessToGroundStaff = AzureAuth.hasAccess(rosterPermissions);\n const hasAccessToAreaRouteCompetenceReport = AzureAuth.hasAccess(UserPermissions.RosterCockpitRead);\n const hasAccessToEmailViewer = AzureAuth.hasAccess(UserPermissions.EmailsRead);\n const hasAccessToCaCoReport = hasAccessToCockpit || hasAccessToCabin;\n const hasAccessToDosimetryReport = (hasAccessToCockpit || hasAccessToCabin) && hasAccessToDutyRelatedReport;\n const hasAccessToSeniorityReport = AzureAuth.hasAccess(UserPermissions.SeniorityReportRead);\n const hasAccessToCourseManagement = AzureAuth.hasAccess(UserPermissions.CourseManagementRead);\n\n const isCrewPortal = appStore.isCrewPortalDns;\n\n const routes: IEdwRouteRouteProps[] = [];\n\n const crewPageRoutes: IEdwRouteRouteProps[] = [];\n const crewPortalRoutes: IEdwRouteRouteProps[] = [];\n\n hasAccessToRoster && crewPageRoutes.push({ exact: true, path: '/', component: Home });\n\n hasAccessToRequestTool && crewPortalRoutes.push({ path: ['/crew-portal/:type', '/crew-portal'], component: RequestTool });\n hasAccessToRequestTool && crewPortalRoutes.push({ path: ['/request-tool/:type', '/request-tool'], component: RequestTool });\n\n hasAccessToChangeLog && crewPageRoutes.push({ path: '/change-log', component: ChangeLog });\n hasAccessToVacManagement && crewPageRoutes.push({ path: '/vacation-request-management', component: VacManagement });\n hasAccessToReserveManagement && crewPageRoutes.push({ path: '/reserve-request-management', component: ReserveManagement });\n hasAccessToHomeStudy && crewPageRoutes.push({ path: '/home-study', component: HomeStudy });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/urgent-duty-print', component: UrgentDutyReport });\n\n hasAccessToBlockDaysManagement && crewPageRoutes.push({ path: '/request-tool-configuration', component: BlockDaysManagement });\n hasAccessToTemplatesManagement && crewPageRoutes.push({ path: '/templates-management', component: TemplatesManagement });\n hasAccessToEmailViewer && crewPageRoutes.push({ path: '/email-viewer', component: EmailViewer });\n\n hasAccessToCrewApiGenDecConfig && crewPageRoutes.push({ path: '/crewapi-gendec-configuration', component: CrewApiGenDecConfig });\n hasAccessToCrewApi && crewPageRoutes.push({ path: '/reports/crew-api-config', component: CrewApiConfigReport });\n hasAccessToGenDec && crewPageRoutes.push({ path: '/reports/gen-dec-config', component: GenDecConfigReport });\n\n hasAccessToHotelTools && crewPageRoutes.push({ path: '/hotel-management-daily', component: HotelManagementDaily });\n hasAccessToHotelTools && crewPageRoutes.push({ path: '/hotel-management-monthly', component: HotelManagementMonthly });\n\n hasAccessToJCR && crewPageRoutes.push({ path: '/jeppesen-tool', component: JeppesenTool });\n hasAccessToRotationTool && crewPageRoutes.push({ path: '/rotation-tool', component: RotationTool });\n hasAccessToCapacityTool && crewPageRoutes.push({ path: '/request-capacity-tool', component: RequestCapacityTool });\n hasAccessToHomeStudy && crewPageRoutes.push({ path: '/home-study', component: HomeStudy });\n hasAccessToAeropers && crewPageRoutes.push({ path: '/aeropers-interface', component: AeroPersInterface, additionalProps: { type: TradeUnionExportType.AeroPers, title: 'AeroPers Interface' } });\n hasAccessToEfa && crewPageRoutes.push({ path: '/efa-interface', component: AeroPersInterface, additionalProps: { type: TradeUnionExportType.Efa, title: 'EFA Interface' } });\n hasAccessToLicenseManagement && crewPageRoutes.push({ path: '/license-management', component: LicenseManagement });\n hasAccessToCustomPersonManagement && crewPageRoutes.push({ path: '/custom-person-management', component: CustomPersonManagement });\n hasAccessToGenDec && crewPageRoutes.push({ path: '/gen-dec', component: GenDec });\n\n hasAccessToPersonReport && crewPageRoutes.push({ path: '/reports/person', component: PersonReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/recurrent-training', component: RecurrentTrainingReport });\n hasAccessToCaCoReport && crewPageRoutes.push({ path: '/reports/standby', component: StandbyReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/planned-trainings', component: PlannedTrainingsReport });\n hasAccessToCockpit && crewPageRoutes.push({ path: '/reports/airport-recency', component: AirportRecencyReport });\n hasAccessToAreaRouteCompetenceReport && crewPageRoutes.push({ path: '/reports/area-route-competency-recency', component: AreaRouteCompetenceReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/sectors', component: SectorsReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/crew-duty-list', component: CrewDutyListReport });\n (hasAccessToDutyRelatedReport || hasAccessToRoster) && crewPageRoutes.push({ path: '/reports/roster', component: RosterReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/comment', component: CommentReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/off-days', component: OffDaysReport });\n hasAccessToCockpit && crewPageRoutes.push({ path: '/reports/aircraft-type-recency-cockpit', component: AircraftTypeRecencyCockpitReport });\n hasAccessToCabin && crewPageRoutes.push({ path: '/reports/aircraft-type-recency-cabin', component: AircraftTypeRecencyCabinReport });\n hasAccessToCaCoReport && crewPageRoutes.push({ path: '/reports/doox', component: DooxReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/experience', component: ExperienceReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/simulator-license-status', component: SimulatorLicenseStatusReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/errors', component: ErrorReport });\n hasAccessToCateringReport && crewPageRoutes.push({ path: '/reports/catering', component: CateringReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/person-vy-details', component: PersonVacYearDetails });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/tzv', component: TzvReport });\n hasAccessToGroundStaff && crewPageRoutes.push({ path: '/reports/ground-staff', component: GroundStatisticsReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/xstar-monitoring', component: XStarMonitoringReport });\n hasAccessToDosimetryReport && crewPageRoutes.push({ path: '/reports/dosimetry', component: DosimetryReport });\n hasAccessToSeniorityReport && crewPageRoutes.push({ path: '/reports/seniority', component: SeniorityReport });\n hasAccessToCourseManagement && crewPageRoutes.push({ path: '/course-management', component: CourseManagement });\n hasAccessToCourseManagement && crewPageRoutes.push({ path: '/reports/cca-report', component: ccaReport });\n hasAccessToDutyRelatedReport && crewPageRoutes.push({ path: '/reports/simulator', component: SimulatorReport });\n\n if (!isCrewPortal) {\n routes.push(...crewPageRoutes, ...crewPortalRoutes);\n\n //system tools are shared between apps for usability, but by direct url\n hasAccessToAdminTools && routes.push({ path: '/health-board', component: HealthBoard });\n hasAccessToAdminTools && routes.push({ path: '/job-list', component: JobList });\n hasAccessToAdminTools && routes.push({ path: '/maintenance', component: Maintenance });\n hasAccessToAdminTools && routes.push({ path: '/configs', component: Configs });\n //no links, but helpful and nothing critical on the page\n routes.push({ path: '/permissions-tool', component: PermissionsTool });\n } else {\n routes.push({ path: '/permissions-tool', component: PermissionsTool });\n hasAccessToRequestTool && routes.push({ path: ['/:type', '/'], component: RequestTool });\n }\n\n if (crewPageRoutes.length) {\n (window as { hasAccessToCrewPage?: boolean }).hasAccessToCrewPage = true;\n }\n\n const hasHomeAccess = routes.find(x => x.exact && x.path === '/');\n let firstAvailableRoute = routes.length ? routes[0].path : void 0;\n if (firstAvailableRoute && typeof firstAvailableRoute !== 'string') {\n firstAvailableRoute = firstAvailableRoute[firstAvailableRoute.length - 1];\n }\n\n //not valid routes to redirect (not-a-page)\n routes.push({ path: ['/download/:id'], component: DownloadTempFile });\n\n return (\n \n }>\n \n {routes.map((props, index) => )}\n\n {!hasHomeAccess && firstAvailableRoute && }\n\n \n \n \n \n );\n }\n}\n","import { SignalREvents, SignalRGroups } from '@app/AppConstants/SignalR';\nimport { signalRService } from './SignalRService';\nimport { AzureAuth, UserPermissions } from '@app/Components';\n\ntype JobTimelineModel = {\n jobName: string;\n triggerId: string;\n rawTimeline: string;\n};\n\nclass RequestTimelineService {\n private static _instance: RequestTimelineService;\n private _bc: BroadcastChannel | null = null;\n\n constructor() {\n if (this.isSupported){\n this._bc = new BroadcastChannel('request-timeline-channel');\n }\n if (RequestTimelineService._instance) {\n throw new Error(`You can't initialize several instances. Use getInstance instead`);\n }\n }\n\n public get isSupported(){\n return typeof BroadcastChannel !== 'undefined';\n }\n\n public init() {\n if (!AzureAuth.hasAccess(UserPermissions.AdminToolsRead)) return;\n \n signalRService.subscribeToGroup(SignalREvents.sendJobTimeline, (_: string, data: JobTimelineModel) => {\n requestTimelineService.addTimeline(data.rawTimeline);\n }, SignalRGroups.RequestTimeline);\n }\n \n public static getInstanse(): RequestTimelineService {\n if (!RequestTimelineService._instance) {\n RequestTimelineService._instance = new RequestTimelineService();\n }\n\n return RequestTimelineService._instance;\n }\n public addTimeline(rawData: string) {\n this._bc?.postMessage(rawData);\n }\n}\n\nexport const requestTimelineService = RequestTimelineService.getInstanse();\n","import React from 'react';\nimport { action, observable } from 'mobx';\nimport { observer, Provider } from 'mobx-react';\nimport { Router } from 'react-router-dom';\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\nimport { ReactPlugin } from '@microsoft/applicationinsights-react-js';\n\nimport Routes from './routes';\n\nimport { applyDecorators } from \"@app/Helpers/Decorator\";\nimport { Configurations } from './AppConstants/Configurations';\n\nimport { appStore } from './AppStore';\nimport { configurationStore } from './Stores/ConfigurationStore';\nimport { history, navigationStore } from './Stores/NavigationStore';\nimport { permissionStore } from './Stores/PermissionStore';\nimport { personActivityStore } from './Stores/PersonActivityStore';\n\nimport { AppReadyService, AppReadyDisposeHandler } from './Services/AppReadyService';\nimport { service } from './Services/_ServicesRegister';\nimport { requestTimelineService } from './Services/RequestTimelineService';\nimport { emitter } from './Services/EventEmitter';\n\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport { NotificationContainer } from './Components/ToastNotification';\nimport { ToolTipContainer } from '@app/Components';\nimport { DateTimePickerContainer } from '@app/Components/DateTimeControls';\nimport { ChatContainer } from '@app/Components/ExplainErrorChat/ExplainErrorChat';\n\ninterface IApplicationInsightsConfigWindow {\n aiConfig?: {\n instrumentationKey?: string;\n };\n}\n\ntype AppProps = {\n callback: () => void;\n};\n\n@observer\nexport default class App extends React.Component {\n private _appReadyService: AppReadyService = service.resolve(AppReadyService);\n private _appReadyDisposeCallback: AppReadyDisposeHandler | null = null;\n @observable applicationInsights: ApplicationInsights | null = null;\n \n constructor(props: AppProps) {\n super(props);\n applyDecorators(this);\n }\n \n async componentDidMount() {\n this.props.callback();\n navigationStore.init();\n requestTimelineService.init();\n\n this.initApplicationInsights();\n \n emitter.on('trackPageView', this._trackPageView);\n\n void configurationStore.get(Configurations.featureGroup, Configurations.enablePWA).then(async (res) => {\n if (res === 'false' && navigator.serviceWorker) {\n const registrations = await navigator.serviceWorker.getRegistrations();\n registrations.forEach((reg) => reg.unregister());\n void caches.keys().then((cacheNames) => Promise.all(cacheNames.map((cacheName) => caches.delete(cacheName))));\n }\n });\n\n configurationStore.loadConfig();\n this._appReadyDisposeCallback = this._appReadyService.onAppReady(() => {\n appStore.setAppReady();\n personActivityStore.startChecking();\n });\n }\n\n componentWillUnmount() {\n this._appReadyDisposeCallback?.();\n personActivityStore.stopChecking();\n emitter.off('trackPageView', this._trackPageView);\n }\n\n render() {\n return (\n \n \n {appStore.isAppReady ? (\n \n {/**/}\n {Routes.routs}\n {/**/}\n \n ) : (\n
\n )}\n \n \n \n \n );\n }\n\n @action.bound\n private _trackPageView(){\n this.applicationInsights?.trackPageView();\n }\n\n\n public initApplicationInsights () {\n const instrumentationKey = (window as IApplicationInsightsConfigWindow).aiConfig?.instrumentationKey;\n if (instrumentationKey) {\n //https://github.com/microsoft/applicationinsights-react-js\n const reactPlugin = new ReactPlugin();\n this.applicationInsights = new ApplicationInsights({\n config: {\n instrumentationKey: instrumentationKey,\n extensions: [reactPlugin],\n enableAutoRouteTracking: true,\n extensionConfig: {\n [reactPlugin.identifier]: { history: history }\n }\n }\n });\n this.applicationInsights.loadAppInsights();\n this.applicationInsights.trackPageView();\n }\n }\n}","import 'reflect-metadata';\nimport dxConfig from 'devextreme/core/config';\nimport { licenseKey } from './devextreme-license';\ndxConfig({ licenseKey });\n\nimport { globalAjaxLoaderStore } from '@app/Stores/GlobalAjaxLoaderStore';\n\nif (window.unsupportedMode) throw new Error('Your Browser is not supported!');\nimport './scss/App.scss';\n\nimport * as React from 'react';\nimport * as ReactDOMClient from 'react-dom/client';\n\nimport { devInfoStore } from '@app/Stores/DevInfoStore';\nimport { NotificationHandler } from './Components/ToastNotification';\nimport { appStore } from '@app/AppStore';\nimport App from './App';\n\ntype IWindowWithErrors = {\n __pendingErrors?: ErrorEvent[];\n};\n\nimport * as OfflinePluginRuntime from '@lcdp/offline-plugin/runtime';\nOfflinePluginRuntime.install({\n onInstalled: function onInstalled() {\n console.log('OfflinePluginRuntime.onInstalled');\n },\n onUpdateReady: function onUpdateReady() {\n console.log('OfflinePluginRuntime.onUpdateReady');\n },\n onUpdating: function onUpdating() {\n console.log('OfflinePluginRuntime.onUpdating');\n },\n onUpdated: function onUpdated() {\n console.log('OfflinePluginRuntime.onUpdated');\n }\n // onUpdateReady: () => OfflinePluginRuntime.applyUpdate(),\n // onUpdated: () => window.swUpdate = true,\n});\n\nconst keydownHandler = (event: KeyboardEvent) => {\n appStore.isShiftKey = event.shiftKey;\n appStore.isCtrlKey = event.ctrlKey || (appStore.isMacOS && event.metaKey); // event.metaKey - On Macintosh keyboards, this is the ⌘ Command key\n if (event.keyCode === 112 || event.keyCode === 113 || event.keyCode === 114 || event.keyCode === 115) {\n event.preventDefault();\n return false;\n }\n\n return true;\n};\n\nconst keyupHandler = (event: KeyboardEvent) => {\n appStore.isShiftKey = event.shiftKey;\n appStore.isCtrlKey = event.ctrlKey || (appStore.isMacOS && event.metaKey);\n return true;\n};\n\nlet devicePixelRatio: number = 0;\n\nconst resizeHandler = () => {\n\n if (!devicePixelRatio || devicePixelRatio !== window.devicePixelRatio) {\n devicePixelRatio = window.devicePixelRatio;\n\n const scrollDiv = document.createElement('div');\n scrollDiv.style.width = '100px';\n scrollDiv.style.height = '100px';\n scrollDiv.style.overflowY = 'scroll';\n scrollDiv.style.visibility = 'hidden';\n document.body.appendChild(scrollDiv);\n\n let scrollBarWidth = (scrollDiv.offsetWidth - scrollDiv.clientWidth);\n\n document.body.removeChild(scrollDiv);\n document.body.style.setProperty('--scrollbar-width', scrollBarWidth + 'px');\n }\n};\n\ndocument.addEventListener('keydown', keydownHandler, true);\ndocument.addEventListener('keyup', keyupHandler, true);\nwindow.addEventListener('resize', resizeHandler);\n\nconst pendingErrors = (window as IWindowWithErrors).__pendingErrors;\ndelete (window as IWindowWithErrors).__pendingErrors;\nif (pendingErrors) {\n for (let i = 0; i < pendingErrors.length; i++) {\n NotificationHandler.showConsoleError(pendingErrors[i]);\n }\n}\n\nwindow.addEventListener('error', function(event){\n const loaderMessage = this.document.getElementById('react-app-loader-message');\n if (loaderMessage && !NotificationHandler.suppressError(event.message)){\n loaderMessage.innerText = 'Loading Error\\n' + event.message;\n }\n NotificationHandler.showConsoleError(event);\n});\n\nwindow.addEventListener('message', e => {\n if (e.data && e.data.type === 'adal-error'){\n if (!devInfoStore.isProduction){\n NotificationHandler.showError(e.data.errorDescription as string, e.data.error as string);\n } else { \n NotificationHandler.showConsoleError({\n error: e.data.error as string,\n message: e.data.errorDescription as string,\n });\n }\n }\n}, false);\n\nif (devInfoStore.isDevelopment) {\n const privateError = console.error;\n console.error = function (message: string) {\n window.setTimeout(() => {\n NotificationHandler.showError(message.toString());\n }, 0);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n privateError.apply(console, arguments as any);\n };\n}\n\nconst rootEl = document.getElementById('react-app') as HTMLElement;\n\nconst renderCallback = () => {\n const loader = document.getElementById('react-app-loader');\n const message = document.getElementById('react-app-loader-message');\n const notification = document.getElementById('react-notification-bar');\n const notificationMessage = document.getElementById('react-notification-bar-message');\n if (loader && message) {\n globalAjaxLoaderStore.appLoaderElement = loader;\n globalAjaxLoaderStore.appLoaderMessageElement = message;\n loader.addEventListener(\n 'transitionend',\n () => {\n if (loader.classList.contains('hide')) {\n loader.classList.add('invisible');\n }\n },\n true\n );\n }\n if (notification) {\n appStore.notificationBar = notification;\n appStore.notificationBarMessage = notificationMessage;\n }\n resizeHandler();\n};\n\nReactDOMClient.createRoot(rootEl).render();\n","export const licenseKey:string = \"ewogICJmb3JtYXQiOiAxLAogICJjdXN0b21lcklkIjogIjk4MDkyNTUzLTI3ZmEtNDNlNy1hOGIxLWI2YzA3YzMwOWNlMSIsCiAgIm1heFZlcnNpb25BbGxvd2VkIjogMjQxCn0=.Fk7sDeJthWTiAAZ1ETe/oToTaN9BSB1pK8VqkupAVKNfNHAQkdTV0byJtM1YnsauIXlEGU3m8zKs3D5Z6hhNCK87g1/qtuy2HERABpdnwtj6i5DAPZGzTsbCiAFAW1HswcdoAg==\";"],"names":["hasSW","navigator","window","location","protocol","hostname","indexOf","exports","options","serviceWorker","register","refs","_i","arguments","length","composeTwoRefs","slice","reduce","semiCombinedRef","refToInclude","composedRefCache","WeakMap","ref1","ref2","ref1Cache","get","set","composedRef","instance","updateRef","ref","current","Emitter","obj","key","prototype","mixin","module","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","removeListener","removeAllListeners","removeEventListener","cb","callbacks","i","splice","emit","args","Array","len","listeners","hasListeners","config","rtlEnabled","defaultCurrency","defaultUseCurrencyAccountingStyle","oDataFilterToLower","serverDecimalSeparator","decimalSeparator","thousandsSeparator","forceIsoDateParsing","wrapActionsBeforeExecute","useLegacyStoreResult","useJQuery","editorStylingMode","useLegacyVisibleIndex","floatingActionButtonConfig","icon","closeIcon","label","position","at","my","offset","x","y","maxSpeedDialActionCount","shading","direction","optionsParser","optionsString","trim","charAt","JSON","parse","ex","normalizeToJSONString","exNormalize","Error","replace","deprecatedFields","configMethod","newConfig","forEach","deprecatedField","message","log","DevExpress","E0001","E0002","E0003","E0004","E0005","E0006","E0007","E0008","E0009","E0010","E0011","E0012","E0013","E0014","E0015","E0017","E0018","E0020","E0021","E0022","E0023","E0024","E0025","E0100","E0101","E0102","E0103","E0110","E0120","E0121","W0000","W0001","W0002","W0003","W0004","W0005","W0006","W0007","W0008","W0009","W0010","W0011","W0012","W0013","W0014","W0015","W0016","W0017","W0018","W0019","W0020","W0021","W0022","W0023","noop","getConsoleMethod","method","console","bind","logger","info","warn","error","assert","condition","ERROR_URL","split","join","baseErrors","errors","ERROR_MESSAGES","id","details","formatDetails","url","getErrorUrl","formatMessage","__id","__details","call","test","concat","kind","startsWith","extendFromObject","target","source","overrideExistingValues","prop","Object","hasOwnProperty","value","extend","deep","targetValue","sourceValue","clone","sourceValueIsArray","isArray","encodeHtml","encodeRegExp","RegExp","str","String","quadToObject","raw","quad","h","left","v","top","right","bottom","splitQuad","parseInt","isFinite","format","template","_len","values","_key","index","placeholderReg","isEmpty","SPACE_REGEXP","text","types","type","object","typeOfObject","toString","isBoolean","isExponential","isNumeric","isDate","isDefined","isFunction","isString","isNaN","parseFloat","isObject","isEmptyObject","property","isPlainObject","proto","getPrototypeOf","ctor","constructor","isPrimitive","isWindow","isRenderer","jquery","dxRenderer","isPromise","then","isDeferred","done","fail","isEvent","preventDefault","version","fullVersion","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","assign","test1","getOwnPropertyNames","test2","fromCharCode","map","n","test3","letter","keys","err","shouldUseNative","from","symbols","to","val","undefined","TypeError","toObject","s","pako","zlib_deflate","utils","strings","msg","ZStream","Z_OK","Z_DEFAULT_COMPRESSION","Z_DEFAULT_STRATEGY","Z_DEFLATED","Deflate","level","chunkSize","windowBits","memLevel","strategy","opt","gzip","ended","chunks","strm","avail_out","status","deflateInit2","header","deflateSetHeader","dictionary","dict","string2buf","Uint8Array","deflateSetDictionary","_dict_set","deflate","input","deflator","result","data","mode","_mode","next_in","avail_in","output","Buf8","next_out","onEnd","onData","buf2binstring","shrinkBuf","deflateEnd","chunk","flattenChunks","deflateRaw","zlib_inflate","c","GZheader","Inflate","inflateInit2","inflateGetHeader","inflateSetDictionary","inflate","inflator","next_out_utf8","tail","utf8str","allowBufError","Z_FINISH","Z_NO_FLUSH","binstring2buf","Z_NEED_DICT","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","inflateRaw","ungzip","TYPED_OK","Uint16Array","Int32Array","_has","sources","shift","p","buf","size","subarray","fnTyped","dest","src","src_offs","dest_offs","l","pos","fnUntyped","setTyped","Buf16","Buf32","STR_APPLY_OK","STR_APPLY_UIA_OK","__","_utf8len","q","c2","m_pos","str_len","buf_len","charCodeAt","max","out","c_len","utf16buf","adler","s1","s2","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_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_BINARY","Z_TEXT","Z_UNKNOWN","crcTable","table","k","makeTable","crc","t","end","configuration_table","trees","adler32","crc32","MAX_MEM_LEVEL","L_CODES","LITERALS","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","INIT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","errorCode","rank","f","zero","flush_pending","state","pending","pending_buf","pending_out","total_out","flush_block_only","last","_tr_flush_block","block_start","strstart","put_byte","b","putShortMSB","read_buf","start","wrap","total_in","longest_match","cur_match","match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","limit","w_size","_win","wmask","w_mask","prev","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","m","more","_w_size","window_size","hash_size","head","insert","ins_h","hash_shift","hash_mask","deflate_fast","flush","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","func","DeflateState","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","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","deflateReset","ret","max_block_size","max_start","deflateInit","old_flush","beg","hcrc","extra","name","comment","time","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","next","tmpDict","dictLength","deflateInfo","xflags","extra_len","_in","_out","dmax","wsize","whave","wnext","s_window","hold","bits","lcode","dcode","lmask","dmask","here","op","dist","from_source","lencode","distcode","lenbits","distbits","dolen","dodist","sane","inflate_fast","inflate_table","LENS","DISTS","HEAD","TYPE","BAD","ENOUGH_LENS","ENOUGH_DISTS","zswap32","InflateState","havedict","flags","check","total","wbits","ncode","nlen","ndist","have","lens","work","lendyn","distdyn","back","was","inflateResetKeep","inflateReset","inflateReset2","lenfix","distfix","virgin","fixedtables","sym","updatewindow","copy","inflateInit","put","here_bits","here_op","here_val","last_bits","last_op","last_val","opts","hbuf","order","inf_leave","inflateInfo","MAXBITS","lbase","lext","dbase","dext","lens_index","codes","table_index","incr","fill","low","mask","min","root","curr","drop","used","huff","base","base_index","count","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","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","w","send_bits","send_code","tree","bi_reverse","code","res","gen_codes","next_code","init_block","bi_windup","smaller","_n2","_m2","pqdownheap","j","compress_block","ltree","dtree","lc","lx","build_tree","desc","node","stree","xbits","overflow","gen_bitlen","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","black_mask","detect_data_type","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","STATIC_TREES","bi_flush","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bool","number","string","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","createRoot","hydrateRoot","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","it","entries","has","valueOf","$$typeof","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","_typeof","Symbol","iterator","createClass","defineProperties","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","_extends","objectWithoutProperties","encodeSpecialCharacters","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","filter","tagAttrs","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","tag","lowerCaseAttributeKey","toLowerCase","getTagsFromPropsList","tagName","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","clock","Date","now","callback","currentTime","setTimeout","cafPolyfill","clearTimeout","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","g","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","_helmetCallback","commitTagChanges","newState","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","title","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","document","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","removeAttribute","tags","headElement","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","createElement","innerHTML","styleSheet","cssText","appendChild","createTextNode","some","existingTag","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","encode","toComponent","_initProps","generateTitleAsReactComponent","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref","_ref$title","link","meta","noscript","script","style","HelmetExport","Component","_class","_temp","_React$Component","HelmetWrapper","classCallCheck","self","ReferenceError","possibleConstructorReturn","subClass","superClass","create","setPrototypeOf","__proto__","inherits","shouldComponentUpdate","nextProps","mapNestedChildrenToProps","child","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","children","_this2","_child$props","initAttributes","convertReactPropstoHtmlAttributes","render","_props","canUseDOM","propTypes","defaultTitle","defer","titleTemplate","defaultProps","peek","rewind","mappedState","Helmet","renderStatic","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","Promise","e","u","useCachedSetTimeout","r","o","catch","defaultShouldLoadMore","scrollHeight","clientHeight","scrollTop","defaultReduceOptions","prevOptions","loadedOptions","errorText","validateResponse","response","getInitialOptionsCache","defaultOptions","additional","defaultAdditional","initialOptions","isFirstLoad","isLoading","hasMore","getInitialCache","params","requestOptions","_callee","caller","paramsRef","optionsCacheRef","debounceTimeout","sleepParam","setOptionsCache","validateResponseParam","reduceOptions","currentInputValue","isCacheEmpty","currentOptions","newInputValue","hasError","loadOptions","_response","newAdditional","_context","inputValue","abrupt","prevOptionsCache","sent","t0","stop","_x","_x2","_x3","_x4","_x5","_x6","_x7","_x8","increaseStateId","prevStateId","useAsyncPaginateBasePure","useRefParam","useStateParam","useEffectParam","useCallbackParam","getInitialOptionsCacheParam","requestOptionsParam","deps","_params$loadOptionsOn","loadOptionsOnMenuOpen","_params$debounceTimeo","menuIsOpen","_params$filterOption","filterOption","_params$reduceOptions","_params$shouldLoadMor","shouldLoadMore","isMountedRef","useRef","useEffect","useIsMountedRef","isInitRef","setStateId","callRequestOptions","reduceState","handleScrolledToBottom","useAsyncPaginateBase","useState","useCallback","useAsyncPaginate","useAsyncPaginateBaseParam","inputValueParam","menuIsOpenParam","defaultInputValueParam","defaultInputValue","defaultMenuIsOpenParam","defaultMenuIsOpen","onInputChangeParam","onInputChange","onMenuCloseParam","onMenuClose","onMenuOpenParam","onMenuOpen","_useStateParam","_useStateParam2","inputValueState","setInputValue","_useStateParam3","_useStateParam4","menuIsOpenState","setMenuIsOpen","nextInputValue","actionMeta","baseResult","useAsyncPaginatePure","MenuList","WrappedMenuList","_props$selectProps","selectProps","innerRef","useEffectProp","useRefProp","useCallbackProp","setTimeoutProp","clearTimeoutProp","checkTimeoutRef","menuListRef","shouldHandle","el","checkAndHandle","setCheckAndHandleTimeout","composeRefs","wrapMenuList","useComponents","components","useMemoParam","useComponentsPure","useMemo","_excluded","AsyncPaginate","SelectComponent","WithAsyncPaginate","selectRef","isLoadingProp","useComponentsProp","useAsyncPaginateProp","cacheUniqs","asyncPaginateProps","processedComponents","withAsyncPaginate","React","React__default","_defineProperty","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","_proto","UNSAFE_componentWillMount","componentDidUpdate","componentWillUnmount","PureComponent","displayName","getDisplayName","for","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","__self","__source","d","_owner","jsx","Reflect","factory","Function","exporter","makeExporter","previous","hasOwn","supportsSymbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","supportsCreate","supportsProto","downLevel","HashMap","MakeDictionary","functionPrototype","usePolyfill","process","env","_Map","CreateMapPolyfill","_Set","CreateSetPolyfill","Metadata","CreateWeakMapPolyfill","decorate","decorators","propertyKey","IsUndefined","IsArray","IsConstructor","DecorateConstructor","IsObject","IsNull","DecorateProperty","ToPropertyKey","metadata","metadataKey","metadataValue","decorator","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","getMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","metadataMap","GetOrCreateMetadataMap","delete","targetMetadata","decorated","O","P","Create","MetadataKey","parent","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","ownKeys","parentKeys","ownKeys_1","add","_a","parentKeys_1","GetIterator","IteratorStep","nextValue","IteratorValue","IteratorClose","Type","IsSymbol","ToPrimitive","PreferredType","hint","exoticToPrim","GetMethod","OrdinaryToPrimitive","toString_1","IsCallable","toString_2","argument","ToString","V","iterResult","prototypeProto","cacheSentinel","arraySentinel","MapIterator","selector","_index","_keys","_values","_selector","throw","return","_cacheKey","_cacheIndex","_find","clear","getKey","getValue","getEntry","_","_map","UUID_SIZE","rootKey","CreateUniqueKey","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","buffer","Math","random","GenRandomBytes","crypto","getRandomValues","msCrypto","byte","is","objectA","objectB","keysA","keysB","isEqual","customEqual","ActivityCode","PIC","FO","SC","OBS1","OBS2","CC2","CC3","CC4","CC5","CC6","CC7","CC8","CC9","CC10","CC11","CC12","CC13","ME1","ME2","TI1","TI2","FF1","FF2","VAC","ILL","ACC","VAC_ILL","VAC_ACC","OFF_ILL","OFF_ACC","OFF_REL","RES_OFF","SIM","TRG","LAY","OFF","FSB","OFC","OFC_FLX","INS","DTY","COU_N","COU_H","COU_R","RGC","RGC1","RGC2","CRM","COMP","GRD","FLTTRG","LATE_REL","NAS","INS_N_TRN","INS_R_TRN","PR","EFA","AP_OFC","AP_DTY","LTO","LTE","STO","DTY_ILL","DTY_ACC","DTY_UFT","WISH","A__","A_N","AE_","AL_","AN_","N_A","O_R","TZV","AND","BND","M_P","M_U","MIL","PRE","UFT","UFT_F","UFT_O","POS","RSV","RSV_P","RSV_OFF","FRSV","FRSV_P","SBS","SBC","SBL","FSBS","FSBC","FSBL","HOME_STUDY","DUTY_PART","FOFF","FA__","FA_N","FAE_","FAL_","FAN_","FN_A","FO_R","EXT","NULL","SWAP","INTRO_FLIGHT","OBSERVER_FLIGHT","REQUEST","IMPORTANT","GAV","FTL","FLEX","FLEX_OFF","PARTY","DOOO","DOOT","DOOV","DOOF","FILAT","SPHFI","AdditionalActivities","HiddenActivities","VacationActivities","StandByActivities","FormerStandByActivities","FlightActivities","UiActivityCodeNames","CockpitActivityCodeNames","FreelancerActivities","FreelancerActivitiesShort","FormerFreelancerActivities","FormerFreelancerActivitiesShort","NonFreelancerActivities","MeActivities","UnfitActivities","Offs","allowedCabinAndCockpitActivities","allowedCabinActivities","allowedCockpitActivities","TRV","ADM","DIV","OPS","COM","DIS","E","E1","L","L1","L2","AD1","AD2","GND1","GND2","PIKETT","SUPPORT","allowedGroundActivities","allowedOGEActivities","allowedOGGEActivities","allowedOPRActivities","allowedOMCCActivities","groundActivities","AllowedToCopyActivities","ApiUrls","ErrorUrl","RootUrl","PersonUrl","PersonRevalidateUrl","PersonPublishUrl","PersonLookupUrl","PersonLookupByPhoneUrl","PersonByIdUrl","RelatedPersonUrl","PersonSmsUrl","PersonSmsCrewUrl","IsConstantFreelancerUrl","HasTzvContract","PersonLicensesUrl","PersonMintLicensesUrl","PersonMintLicenseInactivationsUrl","PersonPlanningFunctionOverrulesUrl","PersonAircraftActivitiesUrl","PersonAirportsUrl","PersonShowMySchedule","PersonShowMyPhone","PersonOptInShowEfaSchedule","PersonOptInShowAeropersSchedule","PersonEntriesUrl","PersonFunctionsUrl","PersonModificationsUrl","PersonInfoUrl","PersonQuarterInfoUrl","PersonSummaryInfoUrl","PersonDeltaInfoUrl","PersonConsecutiveMonthInfoUrl","PersonDutyPeriodInfoUrl","PersonDayDutyFiguresUrl","PersonDayDayStatusUrl","PersonDatePopupDataUrl","ChangeCheckInCheckOutUrl","ResetCheckInCheckOutUrl","CiCoSetByEstimated","CheckInCheckOutInfoUrl","PersonLocation","AirportsUrl","HolidayUrl","HomeStudyUrl","HomeStudyPersonsUrl","FlightUrl","FlightSectorUrl","FlightInfoUrl","FlightHistoryUrl","FlightFdpExtensionUrl","FlightFdpAmendmentTypeUrl","FlightDecodeUrl","FlightCrewDetailsUrl","FlightPublishUrl","FlightSectorByIdUrl","UrgentFlightUrl","UrgentFlightSuppressUrl","RotationUrl","LonghaulRotationUrl","LonghaulByIdUrl","LonghaulForPeriodUrl","RotationIdByKeyUrl","RotationDirectionsUrl","RotationBuildUrl","RotationPutUrl","RotationCopyUrl","RotationCopyDatesUrl","RotationFlightDatesUrl","RotationDeleteUrl","RotationAvailableFlightsUrl","RotationInitUrl","RotationByIdUrl","RotationsForFlightUrl","RotationAircraftUrl","AirbusTypesUrl","ContractTypeUrl","ContractFlagTypeUrl","TypeRatingFiltersUrl","InstructorFiltersUrl","ReleaseHistoryUrl","ReleaseHistoryAvailableMonthsUrl","ReleaseHistoryPersonsWithNotFullDutyMonthUrl","ReleaseHistoryDateUrl","ReleaseHistoryGroupsUrl","ReleaseHistoryPeriodsUrl","ReleaseHistoryStatusUrl","DutyValidationDataUrl","DutyValidationGroundDataUrl","DutyValidationFseDataUrl","DutyDownloadValidationUrl","DutyDownloadValidationResultUrl","DutyUndoUrl","DutyRollbackUndoUrl","DutySwapUrl","DutyHideUrl","DutyUpdateTitleUrl","DutyCopyUrl","DutyPersistShadowDuties","DayActivitiesUrl","MonthDutyTypeUrl","ReleaseFilterTypeUrl","PopToolDutyHistory","PartialLoadTypeUrl","GetDutyHoursUrl","ChangeDutyHoursUrl","UrgentDutyUrl","UrgentDutyRPUrl","PersonDayLandingUrl","SeatHistory","DutyHidePlanningPeriodUrl","DutyGetPlanningPeriodsUrl","DutyPartUrl","DutyRecencyLandings","DutyRecencyTakeoffs","PlanningDutyPeriodUrl","PlanningDutyPeriodStartUrl","PlanningDutyPeriodReleaseUrl","PersonDayMessageHistoryUrl","FlightMessageHistoryUrl","PersonMessageHistoryUrl","DutySectorSwapCrewUrl","DutySectorMoveCrewUrl","DutyRotationSwapCrewUrl","DutyRotationMoveCrewUrl","JeppesenExportedFileListUrl","JeppesenRosterExportInfoUrl","JeppesenCrewExportInfoUrl","JeppesenRosterImportInfoUrl","JeppesenDownloadFileUrl","JeppesenRosterImportsUrl","JeppesenRosterImportDetailsUrl","JeppesenRosterImportExceptionUrl","JeppesenRosterImportFileDataUrl","JeppesenRosterImportUploadFileUrl","JeppesenCasImportInfoUrl","JeppesenCasImportFileUrl","TradeUnionExportInfoUrl","TradeUnionDownloadFileUrl","TradeUnionExportsUrl","TradeUnionExportsFileDataUrl","CateringReportDataUrl","GroundStaffReportUrl","DutyValidationUrl","DutyValidationUrgentUrl","DutyValidationSuppressReasonsUrl","DutyValidationSuppressUrl","DutyValidationResumeUrl","DutyValidationSuppressErrorsUrl","DutyValidationErrorsInfoUrl","DutyDayUrl","DutyCheckerTraineeUrl","DutyCheckerTraineePersonUrl","DutyCheckerTraineeFunctionUrl","DutyCheckerTraineeLongHaulUrl","DutyCheckerTraineeFlightTeamUrl","DutyCheckerTraineeGroundTeamUrl","FunctionUrl","FunctionGroupUrl","SimulationUrl","SimulationPlannedUrl","SimulationTraineeCandidatesUrl","SimulationHistoryUrl","SimulationDeletionHistoryUrl","SimulationPositionHistoryUrl","SimulationPositionLogHistoryUrl","ConfigurationUrl","MaintenanceUrl","MaintenanceNotificationUrl","VersionUrl","ServiceRevalidateAllUrl","ServicePersonValidationUrl","ServiceRecalculateExperienceUrl","ServiceDownloadFullLogsUrl","ServiceDownloadDayLogsUrl","ServiceDownloadMessagesUrl","ServiceDownloadDeadlettersUrl","ServiceDatesWithLogsUrl","ServiceMessagesDatesUrl","ServiceMessagesLabelsUrl","ServiceMessagesTagsUrl","ServiceVacationDataCalculationUrl","MessageStatisticsUrl","ServiceQueueStatisticsUrl","ServiceQueueDeadlettersUrl","ServiceRestartSchedulerUrl","ServiceOperationsUrl","PushNotificationKeyUrl","PushNotificationEnableUrl","PushNotificationDisableUrl","PushNotificationHasSubscriptionUrl","LocalToUtc","UtcToLocal","AvailableTimeZones","TimezoneOffsets","DefaultTimezoneOffset","TimeSwissTransitions","ChangeLogUrl","ChangeLogSetPlanningConfirmationUrl","ChangeLogUpdateReasonUrl","ChangeLogUpdateOldDutyTextUrl","ChangeLogUpdateNewDutyTextUrl","CrewDutyListReportUrl","CrewApiConfigReportUrl","PersonReportUrl","RecurrentTrainingReportUrl","SectorsReportUrl","SimulatorLicenseStatusReportUrl","StandbyReportUrl","StandbyReportPersonFunctionsUrl","StandbyReportCreateEmailUrl","PlannedTrainingsReportUrl","AirportRecencyReportUrl","AreaRouteCompetenceReportUrl","AreaRouteCompetenceRulesUrl","CommentReportUrl","AbsenceReportUrl","OffDaysReportUrl","AircraftTypeRecencyReportUrl","AircraftTypeRecencyCockpitReportUrl","DooxReportUrl","ExperienceReportUrl","ErrorReportUrl","XStarMonitoringReportUrl","DosimetryReportUrl","SeniorityReportUrl","SimulationReportUrl","LogbookUrl","HotelManagementLocationUrl","HotelManagementLocationMonthUrl","HotelManagementHotelDetailsUrl","HotelManagementHotelPersonDetailsUrl","HotelManagementPreReservationDetailsUrl","HotelManagementPreReservationBookingDetailsUrl","HotelManagementCreateEmailUrl","HotelManagementCreatePreReservationEmailUrl","AircraftsUrl","AircraftsMaintenanceUrl","RequestToolOffUrl","RequestToolAllRequests","RequestToolPoints","RequestToolPointsLog","RequestToolPointsPeriods","RequestToolPointsManualCorrection","RequestToolAvailableFlights","RequestToolPersonFlights","RequestToolGrantJobStatus","RequestToolRejectFlight","RequestToolPersonFlightsOffs","RequestToolValidateOff","RequestToolPersonInfo","RequestToolResolveRequest","RequestToolRotation","RequestToolAvailableRequestRange","RequestToolOffLimits","RequestToolFlightLimitsCockpit","RequestToolFlightLimitsCabin","RequestToolFlightLimitsLogsForCabin","RequestToolFlightLimitsLogsForCockpit","PersonRequestBlockingDay","PersonRequestBlockingFlight","RequestToolVacation","RequestToolVacationValidate","RequestToolVacationRequestRules","RequestToolAvailiableVacTypes","RequestToolVacationDaysBalanceInfo","RequestToolVacationDaysBalanceTotal","RequestToolVacationDaysManualCorrection","RequestToolVacationYearPeriods","RequestToolVacationYears","RequestToolVacationAvailiableVacSDaysAndDeadline","RequestToolVacationAvailiableVacPDaysAndDeadline","RequestToolVacRequestBlock","RequestToolVacationAbsence","RequestToolTzvYears","RequestToolTzvBalanceInfo","RequestToolTzvBalanceTotal","RequestToolTzvBlocks","RequestToolTzvManualCorrection","RequestToolTzvContractInfo","RequestToolTzvAssignment","RequestToolFlightDutyRecord","RequestToolFlightDutyRecordDownload","RequestToolLogbookDownload","RequestToolNbu","RequestPersonView","RequestPersonCabinRecency","RequestPersonCockpitRecency","TzvYearOverviewReport","TzvYearOverviewYears","TzvYearOverviewFleetTypes","VacManagement","VacManagementRequestBlock","VacManagementValidateSelectedRange","VacManagementUpdateSelectedRange","VacManagementVacYears","VacManagementVacYearPeriods","VacManagementVacYearPeriodsFilterOptions","VacManagementVacYearPeriodModels","VacManagementInform","VacManagementCapacityFigures","VacManagementCapacityMonthFigures","VacManagementVacTypes","VacManagementMonthFromOptions","VacManagementMonthToOptions","VacManagementPersonVacYearDetails","ReserveManagement","ReserveBlocksManagement","RequestToolReserveDutyBlocks","CommentUrl","PersonCommentUrl","PersonUpdateOnlyCommentUrl","DayCommentUrl","CreateMultiDayCommentUrl","FlightCommentUrl","AcceptValidationErrorCommentUrl","DutyCommentUrl","NoteCommentUrl","CommentStandbyUrl","JobUrl","JobList","JobStartUrl","JobStopUrl","JobParametersUrl","JobSettingsUrl","JobCronValidation","JobTriggerCreateUrl","JobTriggerDeleteUrl","CheckTriggerNameUrl","MonitoringUrl","SelfTestJobsUrl","SelfTestDatabaseUrl","SelfTestSignalRUrl","SelfTestPersonDayQueueUrl","SelfTestPersonRevalidateUrl","SelfTestEmailQueueUrl","SelfTestNetlineOpsQueue","SelfTestPersonMessageBusQueue","SelfTestCrewApiQueue","SelfTestCrewApiMclQueue","OnlinePrincipalConnectedClientsUrl","OnlinePrincipalRosterActiveityUrl","PlanningFlightActivityCandidatesUrl","PlanningValidateFlightActivityCandidateUrl","PlanningDutyRestTime","PermissionUrl","PermissionRoleUrl","PersonChangeLog","PersonChangeLogConfirm","PersonChangeLogLast","RequestCapacityToolAnalyze","RequestCapacityToolImport","RequestCapacityToolOverview","CalendarMonthUrl","LicenseManagementUrl","CourseManagementUrl","CabinCrewAttestationUrl","CabinCrewAttestationPdfUrl","CabinCrewAttestationBazlUrl","CabinCrewAttestationPersonPdfUrl","CourseManagementImport","CustomPersonManagementUrl","CrewApiPayload","CrewApiHistory","CrewApiGenerate","CrewApiProcess","CrewApiRelatedAirports","CrewApiFlightsStatus","CrewApiPersonStatus","CrewApiPersonState","CrewApiAddMcl","CrewApiUpdateMcl","CrewApiDeleteMcl","CrewApiSkipMcl","CrewApiGetMclMissingDataPersons","CrewApiMassConfiguration","GenDecUrl","GenDecRotationUrl","GenDecRelatedAirports","GenDecFlightsStatus","GenDecProcess","GenDecPayload","GenDecConfigReport","TempFileUrl","TemplatesManagement","TemplatesManagementCodes","EmailsUrl","EmailBodyUrl","EmailAttachmentsUrl","EmailAttachmentDownloadUrl","EmailUpdateStatusUrl","PingUrl","ReleaseNotesUrl","ReleaseNotesMarkAsReadUrl","QualityLoopExportUrl","QualityLoopExportDataUrl","QualityLoopExportMappingUrl","Location","ZRH","PersonContractType","Freelance","PersonInfo","Age","MouseButtons","Left","Wheel","Right","CheckerTraineeFunctionName","CL","SafetyPilot","EisCrew","ChangeLogStatuses","confirmed","notConfirmed","Status","success","warning","Security","FreezePeriodError","Actions","ADD","UPDATE","DELETE","AircraftTypeActivityExperience","ConsecutiveLength","ConsecutiveBlockHours","ConsecutiveSectorsCount","GeneralBlockHours","GeneralSectorsCount","ParameterType","DateTime","Boolean","MultiLine","SingleLine","Integer","Enum","AircraftTypeRecencyLandingType","SimpleLanding","CustomLanding","Training","FlightType","HttpStatusCode","DifferenceStateEnum","LastUpdatedFilter","Outbound","Inbound","MessageQueueItemDirectionType","In","Out","DeadletterToInbox","PageTitles","Home","HealthBoard","Maintenance","Configs","CrewApi","CrewPortal","HotelManagementDaily","HotelManagementMonthly","RotationTool","RequestTool","RequestCapacityTool","PersonReport","RecurrentTrainingReport","StandbyReport","PlannedTrainingsReport","FncRecencyReport","AreaRouteCompetenceReport","SectorsReport","CrewDutyListReport","RosterReport","CommentReport","OffDaysReport","HomeStudy","UrgentDutyReport","AircraftTypeRecencyCockpitReport","AircraftTypeRecencyCabinReport","DooxReport","ExperienceReport","SimulatorLicenseStatusReport","ErrorReport","PersonVacYearDetails","TzvReport","ChangeLog","JeppesenTool","AeroPersInterface","LicenseManagement","BlockDaysManagement","RequestTimeline","NotFound","FreelanceTool","CockpitJulOctMaxReduction","Configurations","globalGroup","crewPortalGroup","crewPortalChangelogPageRules","crewPortalPersonFreelancePageRulesCockpit","crewPortalPersonFreelancePageRulesCabin","crewPortalLtoPageRulesCabin","crewPortalLtoPageRulesCockpit","crewPortalStoPageRulesCabin","crewPortalStoPageRulesCockpit","crewPortalFlightPageRulesCabin","crewPortalFlightPageRulesCockpit","crewPortalPersonNbuPageRules","crewPortalVacationPageRulesCabin","crewPortalVacationPageRulesCockpit","crewPortalReservePageRulesCockpit","featureGroup","featureEnableShowAllErrorCategories","featureEnableChangeLogPushNotification","featureEnableTzvCockpit","featureEnableTzvCabin","featureEnableExperienceReport","featureEnableLTECabin","featureEnableLogbook","featureEnableTakeOffRecencyOnCrewPortal","featureEnableCabinAttestation","featureEnableSimOverview","featureEnableSimCourseOverview","featureEnableEfaUi","featureEnableEBT","featureEnableReserveTool","featureEnableAiExplanation","ebtGroup","ebtFromDate","validationGroup","validationXStarManualTagEffectiveFromDate","featureVacUbuKey","cabinCockpitFlagsEnableKey","recencyTimelinePopup","enableEasaWarning","featureKeys","helpLinkKey","requestToolGroup","allowEditStoInDateRangeAsLto","hideVacToolLinkFor","enablePWA","pushNotificationTag_ChangeLog","jsonDateFormat","viewDateFormat","jsonFullFormat","jsonDateTimeFormat","viewFullFormat","momentFullFormat","viewMonthFormat","timeFormat","minDate","dayMonthFormat","tcDayFormat","ocDayFormat","fullMonthFullYearDateFormat","gridDateFormat","gridDateTimeFormat","Jobs","AeroPersExportJob","EfaExportJob","ExportCrewDutyListJob","ExportLogbookJob","CateringReportJob","ReleaseScheduleJob","SmsQueueJob","QualityLoopExportJob","KeyboardKeys","ENTER","COMMA","ESCAPE","BACKSPACE","C","H","Z","KeyboardCodes","PersonFunctions","FCM","COCKPIT","CC","CABIN","OPR","OGE","OGG","OGGE","OMCC","GROUND","FSE","MARSHALS","TIG","FFX","PersonFunctionsIds","FunctionGroupIds","getAvailableFunctionIds","hasAccess","RosterCockpitRead","Cockpit","RosterCabinRead","Cabin","Fcm","RosterGroundRead","Ground","RosterFseRead","Fse","RosterMarshalRead","Marshals","groupMap","functionNameMap","functionGroupNameMap","groupIdsMap","cockpitMap","fcmWithGroupIds","cockpitWithGroupIds","cabinIdWithGroupsIds","groundWithGroupsIds","fseWithGroupsIds","marshalsGroupsIds","marshalsWithGroupsIds","groupIds","cockpitIds","cabinIds","groundIds","VacationYearPeriodStatus","Upcoming","OpenRoundOne","OpenRoundTwo","Approval","Extended","Closed","VacationRequestPriority","medium","high","VacationRequestColorizeType","slashed","VacationRequestType","vac_p","vac_s","vac_n","vac_v","ubu","vac","vac_w","ubu_j_s","ubu_c","ubu_p","ubu_k","PersonRequestVacDecision","PersonRequestVacDecisionEnum","PersonRequestVacBlockStatusEnum","TypeRatingEnum","None","Confirmed","Denied","ConfirmedAlternative","DeniedAlternative","PersonAlternativeRequestDecision","Accept","Decline","PersonRequestVac14DaysRuleStatus","IsNotFulfilledYetButCanBe","IsFulfilled","IsNotFulfilled","PersonRequestVacCategory","Variant","Alternative","Reality","RequestStatusDisplayName","RequestedToApprove","RequestedToRemove","Approved","Rejected","RejectedByPlanning","RejectedByCrew","RejectedByCancellation","Requested","ManualAction","PersonRequestSummaryStatus","InProgress","PersonRequestType","Vacation","Flight","Reserve","PersonRequestVacStatus","Pending","PersonRequestVacBlockStatus","AlternativePending","AlternativeOffered","PrincipalConfig","PersonFilterKey","RosterViewStateKey","ScrollPositionKey","ShowQuartersKey","ShowSummaryKey","ShowRestTimeKey","ShowDailyDutyFiguresKey","ShowDeltaKey","ShowRosterFilters","ReportFiltersKey","ReportGridConfigKey","ReportGridStateKey","VacationToolKey","ChangeLogFiltersKey","ChangeLogConfigKey","UseKeyboardShortcutsKey","ShowHistorizedRosterline","ShowSwissTime","ShowSwissTimeGround","ShowActivePersons","Zoom","ViewGroup","DarkMode","FdrGroundView","SectorsSortOrder","PersonFilterGroup","PersonOrderGroup","MainRosterGroup","CommonGroup","ChangeLogGroup","FlightsGantGroup","PersonReportGroup","SimulationReportGroup","RosterImportsGroup","AeroPersExportsGroup","EfaExportsGroup","RosterImportDetailsGroup","RecurrentTrainingReportGroup","SimulatorLicenseStatusReportGroup","StandbyReportGroup","VacationRequestReportGroup","TrainingsReportGroup","AirportRecencyReportGroup","AreaRouteCompetenceReportGroup","SectorsReportGroup","CrewDutyReportGroup","HomeStudyReportGroup","HomeStudyPersonGroup","CommentsReportGroup","OffDaysReportGroup","AbsenceReportGroup","RosterReportGroup","VacationBalanceCorrectionGroup","VacationToolGroup","HotelPreReservationLocationGroup","HotelPreReservationBookingGroup","HotelManagementDailyGroup","HotelManagementDailyDetailsGroup","AircraftTypeRecencyCockpitReportGroup","AircraftTypeRecencyCabinReportGroup","DooxReportGroup","SeniorityReportGroup","GroundStatisticsReportGroup","ExperienceReportGroup","VacationDetailsAbsenceGroup","VacationDetailsRequestDaysGroup","ErrorReportGroup","XStarMonitoringReportGroup","DosimetryReportGroup","CrewApiConfigReportGroup","GenDecConfigReportGroup","RotationToolGroup","VacManagementGroup","VacManagementCockpitGroup","VacManagementCabinGroup","VacManagementGroundGroup","PersonVacYearDetailsReportGroup","TzvYearOverviewReportGroup","LicenseManagementGroup","CourseManagementGroup","CabinCrewAttestationGroup","FdrGroup","GenDecGroup","ReserveManagementGroup","GlobalQueryParams","impersonateAsPerson","viewPersonId","RequestToolQueryParams","requestId","vacationYearId","tzvYearId","courseId","personRequestVacBlockId","personAnswer","reserveYearId","SignalREvents","updateEasaAlert","updateStatusMaintenance","urgentErrorsChanged","urgentErrorsRPChanged","urgentFlightsChanged","sendMaintenanceNotification","personRequestVacBlockChanged","personRequestVacAbsenceBlockChanged","personRequestTzvBlockChanged","personRequestReserveBlockChanged","personRequestVacReportLineChangedAsync","personRequestReserveReportLineChanged","personRevalidationComplete","refreshPersonRange","rosterHidePlanningPeriod","rosterPlanningRsvChanged","jobStatusChanged","jobProgressMaxValueChanged","jobProgressValueChanged","jobExportCompleted","jobMailStatusChanged","standByReportNotification","requestToolPointsNotification","requestToolGrantJobChangeStatus","refreshPersonRequestFlight","refreshPersonRequestFlightStatus","refreshPersonRequestAvailableFlight","refreshPersonRequestOff","availableVacTypesChanged","sendJobTimeline","releaseHistoryStep","sendApplyShadowDutiesJobProgressValue","releaseHistoryResult","changeLogNotification","notifyFlightChanged","rosterActivity","updatePersonConnection","simulationCourseChanged","refreshPersonRequestReserve","aiExplainValidationMessageReply","SignalRMethods","updateRosterActivity","updatePersonIsActive","updatePersonLastActivity","updatePersonLocation","explainValidationError","stopExplanation","SignalRGroups","Job","Roster","RosterPlanningPeriod","ReleaseRoster","StandByReport","VacationManagment","ReserveManagment","UrgentError","RosterActivity","ClientActivity","RequestToolFlight","RequestToolLtoStoFlight","RequestToolLtoSto","RequestToolReserve","SignalRJobGroups","CateringReport","ExportCrewDutyListReport","ExportLogbook","QualityLoopExport","ComponentUrls","HubUrl","QsImpersonatedPersonId","QsViewPersonId","QsImpersonatedRoles","QsToken","Sizes","dutyHeight","dutyWidths","personWidth","quarterWidth","consecutiveMonthsWidth","deltaWidth","summaryWidth","summaryWidthExtra","orderMarkWidth","longHaulLineHeight","scrollWidth","dutyPeriodHeight","historizedDutyHeight","datesHeight","gridVirtualSelectMinWidth","dutyListItemWidth","requestHeight","maxJeppesenImportFileSize","flightLineHeight","rotationHeight","actualRotationHeight","rotationBlockHeight","AppStore","isPrintMode","printMode","isHistorized","isLastHistorizedMonth","isAppReady","isChangeLogOff","isCtrlKey","isShiftKey","isContrastMode","isRosterWriteUnlocked","isShortcutsEnabled","isAdaptive","bodyClassList","body","classList","notificationBar","notificationBarMessage","_currentUser","_keydownHandler","_appMouseInHandler","crewPortalUrl","impersonatedUser","isCrewPortalDns","crewPortalUrlConfig","host","isMobileView","innerWidth","isMacOS","platform","includes","currentToken","currentUser","impersonatedUsersStack","pop","setImpersonatedUserValue","setValue","setImpersonatedUser","stack","exitImpersonation","localStorage","removeItem","reload","impersonatedUserRoles","roles","realUserRoles","currentUserName","unique_name","isAuthorized","clearUserData","setItem","stringify","getItem","setAppReady","switchMode","ctrlKey","metaKey","shiftKey","getParam","historizedMode","switchChangeLogCheckBox","setChangeLogCheckBoxValue","currentTokenObj","_parseJwtToken","token","base64","jsonPayload","decodeURIComponent","atob","getQueryStringAuthParams","parameters","impersonateAsPersonId","personId","encodeURIComponent","encodedToken","appStore","single","observable","action","bound","computed","CompletionType","PromiseCompletion","_promiseList","_completedOnce","_waiters","_type","isCompleted","Completed","isPending","promise","subscribe","subscribeRange","promises","_complete","waiters","wait","forceWait","PromiseQueue","maxParallelTasksNumber","_queue","_completion","_parallelTasksNumber","_waitHandlers","_maxParallelTasksNumber","item","handler","onDone","_processNextItem","handlerIndex","_notifyProgress","nextItem","AircraftPlaceholder","pageTitle","mainClass","sceneMsgClass","className","alt","UserPermissions","AzureAuth","permissions","currentUserPermissions","AdminToolsWrite","permission","userUpn","isAllowChangeForDate","date","dateNow","today","currentDay","getUTCDate","startOfMonth","toFirstDayOfMonth","startOfPrevMonth","addMonths","isBeforeDate","hasRosterAccess","rosterPermissions","hasCrewPortalAccess","functionId","CrewPortalAccess","ReadFDRCockpit","ReadFDRCockpitAeropers","ReadFDRCabin","ReadFDRCabinEFA","ReadFDRGround","CrewPortalCockpitReadOthers","CrewPortalCockpitAeropersReadOthers","CrewPortalCabinEFAReadOthers","CrewPortalCabinReadOthers","CrewPortalGroundReadOthers","CrewPortalCockpitCanControlNbu","CrewPortalCabinCanControlNbu","canManageCrewPortal","isCockpit","isCabin","isGround","isOwnData","CrewPortalCockpitWriteOthers","CrewPortalCabinWriteOthers","CrewPortalGroundWriteOthers","hasReadHistoryPermission","cells","personStore","rosterFunctionGroupId","focusedDuty","cell","personData","getDetails","person","pf","function","hasNoContract","functionGroupId","planningFunctionGroupId","rosterReadPermissions","SeeRosterHistoryCockpit","SeeRosterHistoryCabin","SeeRosterHistoryGround","SeeRosterHistoryFse","SeeRosterHistoryMarshal","permissionId","hasRosterWritePermission","onReleasedCheck","ignorePastCheck","personFunction","personFunctionId","isDateReleased","planningFunctionId","rosterWritePermissions","RosterCockpitWriteTracking","RosterCockpitWritePlanning","RosterCabinWriteTracking","RosterCabinWritePlanning","RosterGroundWriteTracking","RosterGroundWritePlanning","RosterFseWrite","RosterMarshalWrite","ignorePermissions","findIndex","logOut","all","appWindow","adal","redirectToLogout","login","redirectToLogin","getRosterPermissions","CONTAINER_ID","DateTimePickerContainer","TimePickerControl","super","disabled","hideControls","defaultValue","onControlClick","onChange","showReset","widgetContainerId","classNames","dateTime","inputFormat","hidden","Button","onClick","color","observer","DatePickerControl","maxDate","onBlur","onEnter","pickerMode","pickerSize","daysOfWeekDisabled","showInputIcon","minimalDate","isValidDate","maximalDate","_getPickerFormat","onEnterKeyDown","TimePickerValidatedControl","formModel","fieldValueRaw","pickerClass","validated","isValid","fieldValue","hideInputIcon","_onTimeChanged","inputProps","_onBlur","_onTimeControlsClick","FormFeedback","errorFor","currentDateTime","DateTimeHelper","changeTimeByTemplate","toUiTime","minutes","newTimeValue","parseUiTime","newTime","addTime","DatePickerValidatedControl","_isManualEditing","_currentDate","_updateProps","dateTimeValue","viewMode","availableDates","clearable","autoFocus","isInvalid","validationClass","invalidFields","cls","formValidatedClass","_onDateChanged","onFocus","_onFocus","_onClearDate","height","width","viewBox","focusable","timeIndex","timeValue","_setDateValue","withTime","getUTCHours","getUTCMinutes","toCustomUiFormat","isValidField","hours","substring","setUTCHours","ErrorBoundary","errorState","componentStack","timestamp","impersonatePersonName","componentDidCatch","errorInfo","_getImpersonatePersonName","getRolesMatchFromEncodedRoles","appVersion","appEnvironment","impersonateAsPrincipal","persons","postTypedData","ids","_setPersonName","firstName","lastName","personName","_trimStartEndZero","ExplainErrorChat","_messages","_input","_chatId","_isLoading","parseTable","lines","headers","rows","row","processText","tableBuffer","line","parts","part","componentDidMount","subscribeToGroup","_getReply","_sendMessage","when","isHomePage","onClose","_cancelExplanation","unsubscribeFromGroup","role","isError","userMessage","sendNotification","_onKeyDown","ChatContainer","ContractFilter","selectSize","multi","onSelect","_onChangeHandler","selected","DatePickerFilter","_store","DatePickerFilterStore","prevProps","isSameDate","newDate","startOfDate","_validate","setDate","_handleChange","originalEventType","dateIsValid","onDateChange","_handleBlur","canBeEmpty","isSelectedValid","triggerChange","newValue","currentValue","getDateIndexInRange","isAfterDate","FilterContainer","itemClass","FunctionFilter","placeholder","InstructorFilter","selectedCrewFunction","FormCheckbox","checked","invalid","changeHandler","bsSize","topAligned","smallValidationError","customLabel","rest","isChecked","Label","Input","FormInput","transformValueHandler","formNamePrefix","autoComplete","ev","FormSelect","customOptions","hasEmpty","showField","customInputChangeHandler","customSelectChangeHandler","changeYearPeriodHandler","selectComponent","selectedIndex","option","FormSwitcher","HoverContainer","isHovered","_timer","_delay","hoveredCssClass","onMouseOver","_onMouseOver","onMouseOut","_onMouseOut","_stopTimer","delay","showDelay","onShow","hideDelay","onHide","Icon","noSolid","isBrand","solid","other","Loading","fullpage","loading","iconStyle","isSuspense","small","visible","globalLoader","classStr","_renderProgress","progress","Progress","striped","animated","CardBodyLoading","CardBody","ImpersonationDialog","LoginSection","loadRoles","_logOutEventHandler","userName","copyTitle","targetId","placement","_tooltipRolesStr","_copyToClipboard","_renderImpersonation","bytes","convertPermissionIdsToBytes","encodedString","encodeBytesToBase64","copyToClipboard","showSuccess","showError","FullPermissionImpersonate","LimitedPermissionImpersonate","impersonatedUserTooltipId","exitImpersonationTooltipId","exitImpersonateTooltip","_openImpersonationTool","show","realRoles","impersonatedRoles","ErrorDialog","_errorData","getModalOptions","axiosError","codeString","statusText","personString","buttons","ModalButtonType","Ok","close","footerPrefix","DateTimeService","Blob","Response","_renderMessage","_renderRequestMessage","mess","isAxiosError","errorData","ConfirmationDialog","onConfirm","Cancel","Confirm","async","messages","InformationDialog","bodyClassName","YesNoDialog","No","Yes","ModalBodyWithBoundary","ModalBody","Modals","_onDocumentKeyDown","modal","modalService","getUpperModal","closeByEscape","stopImmediatePropagation","renderModals","ModalButton","_isWorking","_isDropdownOpen","isDisabled","outline","buttonColor","Add","Save","Update","Download","Apply","Remove","Reset","ButtonDropdown","isOpen","toggle","_onToggleDropdown","_onClick","DropdownToggle","caret","DropdownMenu","DropdownItem","ModalWindow","_payload","_focusButton","contentRef","onAppear","focus","dialog","modalOptions","titleToRender","maxWidth","widthToRender","contentButtons","loader","buttonsToRender","leftButtons","alignLeft","normalButtons","handle","Modal","backdrop","_onCloseClick","keyboard","ModalHeader","fallback","ModalFooter","_renderButtons","isFocused","disableAutoFocus","setFocus","activeButtons","Close","confirmClose","button","getPayload","setPayload","payload","ModalService","_modalData","errorContent","hasActiveModal","showModal","modalIndex","remove","showConfirmation","titleOrOptions","confirmationOptions","showYesNo","yesNoOptions","showInformation","ReleaseNotesDialog","HelpLink","_helpLink","_releaseNotes","_isPopupVisible","_initData","ReleaseNotesRead","_openReleaseNotes","_onMouseOverHandler","_hidePopup","_unreadNotesCount","href","rel","helpLink","refreshNotesCounter","_loadReleaseNotes","_initPopupTimeout","ApiService","_showPopup","isDraft","isNew","CreateStandByReportEmailDialog","QualityLoopExportDialog","MenuSection","NavMenu","_enableExperienceReport","_enableEfaUi","_isAnyMenuItemVisible","_featureEnableCabinAttestation","_enableReserveTool","renderDownloadLink","toUrl","renderLink","openInNewTab","currentLocationParts","currentLocation","pathname","toUrlParts","isActive","every","Link","renderItem","onerror","navMenuStore","hasRenderBlocker","onload","canRunAds","adsDiv","getComputedStyle","getPropertyValue","_featureEnableSimCourseOverview","hoverMenuItemDelay","isCrewPortalConfigured","hasAccessToCockpit","hasAccessToCabin","hasAccessToVacManagement","VacManagementRead","hasAccessToReserveManagement","ReserveManagementRead","hasAccessToDutyRelatedReport","DutyRelatedReportsRead","hasAccessToGroundStaffStatisticReport","hasAccessToPersonReport","ReadPersonDetails","ReadPersonDetailsCockpit","ReadPersonDetailsCabin","ReadPersonDetailsGround","hasAccessToSeniorityReport","SeniorityReportRead","hasAccessToCateringReport","CateringReportRead","hasAccessToJCR","JCRImportRead","hasAccessToLicenseManagement","LicenseManagementRead","hasAccessToGenDec","GenDecRead","hasAccessToRotationTool","RotationToolRead","hasAccessToAeropers","ToolAeroPersRead","hasAccessToEfa","ToolEfaRead","hasAccessToHotelTools","ToolHotelManagement","hasAccessToCapacityTool","hasAccessToBlockDaysManagement","BlockingDaysFlightsRead","hasAccessToCrewApiGenDecConfig","CrewApiRead","hasAccessToCustomPersonManagement","MarshalsInfoRead","FseInfoRead","hasAccessToTemplatesManagement","TemplateManagementRead","hasAccessToAdminTools","AdminToolsRead","hasAccessToRequestTool","hasAccessToHomeStudy","hasAccessToAreaRouteCompetenceReport","hasAccessToEmailViewer","EmailsRead","hasAccessToOutageReport","hasAccessToCaCoReport","hasAccessToDosimetryReport","hasAccessToCourseManagement","CourseManagementRead","hasAccessToStandbyReportEmailCreation","hasAccessToQualityExport","QualityLoopExportReadPlan","accessToReports","accessToTools","adminTools","backgroundImage","_onShowMenuItem","_onHideMenuItem","_renderDynamicItems","Tools","dynamicMenuItems","View","envClassName","menuTitle","ThemeSwitcher","_renderDynamicExtensions","_viewClass","section","sectionItems","sort","isHidden","onGetState","dynamicExtensionItems","itemRender","NavMenuStore","registerMenuItem","ignoreSecondRegistration","find","unregisterMenuItem","itemId","itemIndex","registerExtensionItem","unregisteExtensionItem","PersonFilter","_needToReloadOptions","renderOption","highlightedSearchText","_renderText","isInactive","renderCustomOption","Option","isSelected","renderMultiValueLabel","MultiValueLabel","PersonFilterStore","loadPersonById","updateProps","filters","executeTimeout","selectedPersons","canClear","isMulti","validationErrors","backspaceRemovesValue","closeMenuOnSelect","hideSelectedOptions","_onLoadOptions","onKeyDown","_onKeyDownHandler","_onInputChangeHandler","_onMenuClose","getOptionLabel","getOptionValue","tabSelectsValue","escapeClearsValue","classNamePrefix","isClearable","search","isOptionDisabled","_onSelectPersons","onChangePersons","personIds","keyCode","searchValue","saveFromSearch","modifiedInput","_searchTerms","markMatches","prepareString","textDecoration","isMatch","_options","page","sendData","searchByFullName","functionIds","filteredPersons","referenceDate","qualificationIds","contractTypes","partialLoadType","dutyFilter","monthlyTypes","releaseFilterTypes","functionFromDate","pageSize","includeInactive","includeWithoutEmail","personSortOrder","isPersonDisabled","PersonSelectDTO","getTypedData","toUpperCase","matchedList","email","License","licenses","currentFunction","selectedDate","sortedLicenses","visibleInRoster","sortOrder","isNewcomer","expirationArray","licenseExpirationDate","getUTCFullYear","getUTCMonth","shortName","isNewcomerExperienced","newcomerExperienceDate","typeRatingsLicenses","cockpitQualificationLicenses","cabinCClassLicenses","typeRatingElements","combineLicensesToGroup","cockpitQualificationsElements","bussinesClassQualificationsElements","combineBussinessClassLicenses","otherLicenses","lic","otherLicensesFront","otherLicensesEnd","otherLicensesFrontElements","getLicenseModel","otherLicensesEndElements","traineeLicenses","_getTraineeLicenses","isTraineeElements","licenseId","isExpired","expired","qualElements","elem","mapObj","renderLicenseBlock","arr","isSetClass","ignoreExpiration","endsWith","getNameFunc","licName","licenseGroups","elements","substr","applicableLicenses","toBeCombined","licenseGroupsArray","acc","isTrainee","PersonCommentDialog","PersonCommentDialogStore","currentComment","showHistoryComment","toggleHistory","loadCurrentPerson","loadItems","hasAccessToAddNew","hasWritePermission","comments","renderCommentItem","isNewComment","showForm","commentId","PersonCommentForm","store","canEdit","validFromDate","editComment","deleteComment","toUiDate","validToDate","isVisibleByCrewMember","isVisibleToAllUsers","isStandby","modifiedAtDateUtc","toUiDateTime","modifiedBy","commentRef","_handleClick","closest","parentElement","resetForm","saveData","handleKeyUp","stopPropagation","capture","canSave","onKeyUp","maxLength","ButtonGroup","isFcm","toggleStandby","toggleVisibleByCrewMember","toggleVisibleToAllUsers","_apiClient","FormModel","canReadEmployeeComments","deleteData","completion","reloadPersonInfo","transaction","_personId","_date","_historizationStore","historizationStore","_personStore","personDetails","CommentEmployeeCockpitRead","CommentEmployeeCabinRead","CommentEmployeeGroundRead","showAllComments","runInAction","personRelatedPersonGet","currentPersonId","currentPerson","loadPersonInfo","createComment","updateComment","originalComment","putTypedData","isValidComment","validate","BaseFormModel","parseUiDate","dateFrom","dateTo","createdAtDateUtc","createdBy","PersonsListItem","_onCommentClick","personInfo","renderExtraFiguresCallback","renderExtraDataCallback","onLicensesClick","phoneNumber","contract","personPlanningGroup","experienceDisplayName","experienceCodeName","tooltipTargetId","targetCommentId","hasComments","planningGroup","personContract","actualContractPartTimePercentage","round","actualContractType","experience","codeName","medicalRestrictionClassNames","hasMedicalRestriction","birthDate","calculateAge","licenseBlock","personLicenses","ToolTipItem","Comments","ContractPicker","ContractPickerStore","loadContractTypes","getData","CrewFunctionPickerMode","CrewFunctionPicker","CrewFunctionPickerStore","loadFunctions","_availableFunctions","functions","Group","parentId","CabinCockpit","MarshalFseManage","functionsGroups","funcList","group","FcmRoster","__hasAccessToReadFunction","InstructorPicker","InstructorPickerStore","loadData","instructorFilters","_currentFunctionGroup","loadInstructorFilter","isForCabin","isForCockpit","ReactSelectSize","ReactSelect","ReactSelectStore","updateValue","updateInputValue","closeOnSelect","isSearchable","styles","isCreatable","formatOptionLabel","selectMaxSpace","Regular","_selectHandler","_closeHandler","_openHandler","_selectedOption","_inputChangeHandler","updateDefaultValue","GenerateOptionsFrom","valKey","labKey","RosterLine","_isDragStart","_dutyDoubleClickHandler","dutyStore","personDutyMap","dutyList","currentTarget","personDate","dutyDay","dutyItemCache","getTime","dayDuty","isDefaultAction","hasAccessToCrewPage","onDoubleClick","baseUrl","origin","redirect","toQueryParam","_onStartDragDuty","sourceElement","dataTransfer","effectAllowed","onStartDragDuty","_onDragOverDuty","targetDutyElement","isCopy","dropEffect","onDragOverDuty","contains","firstElementChild","_onDragLeaveDuty","_onDragEnd","onDragEndDuty","_onDropDuty","onDropDuty","clearData","_getCssClasses","dutyItem","isNotReleased","renderOptions","markedDays","marker","customSelectedDays","customSelectedClass","rosterType","selectedDuties","focusedElement","copiedDuties","isHistorizedRosterline","highlightDate","beforeSelectedDutyDate","hasMarkers","isFullRosterType","Full","isCopied","copiedDuty","focusedDate","dateUtc","focusedPersonId","flightTitle","isPlanningPeriodHidden","isNotReady","dutyStatus","getDutyStatus","R","hasCustomHighlighting","isDayToHighlite","_isDateAllowed","hasNoDuties","hasDuties","shadowDutyType","planningNote","isShadowOffOptional","Person","shadowOffType","isFtl","isGav","_isShowCapacity","capacityClass","_getCapacityLevelClass","isRsvHidden","isCrewHidden","unshift","dutyClass","dutyDays","onRenderCellExtras","historizeLastDate","showDutyAsFight","showSwissTime","showCapacityNumbers","dutyItems","isRequestToolRosterType","RequestToolOff","RequestToolVacCabin","RequestToolVacCockpit","RequestToolGeneral","addDays","releasedLastDate","releasedDate","_isNotReleased","haveCapacityInfo","haveCapacity","capacityTotal","capacityUsed","capacityRequested","capacityAvailable","isImportant","haveLockSign","hasOffActivity","activities","activityCodeName","A","havePersistedLockSign","convertedDateToJson","toJsonFormat","nowDate","getSwissDate","currentLine","diffMinutes","toFixed","capacityNumberElement","RequestToolVacGround","extras","onDragStart","onDragOver","onDragLeave","onDragEnd","onDrop","renderCellInfo","_gridLineClass","duty","ftlGav","isFtlGavPersist","isUserActionGavFtl","wish","priority","important","flex","isChecker","isParty","flightDateFrom","flightDateTo","dateFromDiff","dateToDiff","hasPosition","positionHasAbnd","hasHomeStudy","hasDutyPart","hasLanding","hasTakeoff","hasFdpSplit","hasFdpCombine","hasDutySplit","specialType","overlayType","requestType","flightViewDuties","isLongTermEvening","isAfterLongTermEvening","hasXStarFlight","hasIntroFlight","hasObserverFlight","hasAllIntroFlights","hasAllObserverFlights","getDutyPoint","diff","isAfterDateOrEqual","newGavFtlSystemApplicableFrom","isWish","isPriority","isFlex","hasCustomLanding","hasCustomTakeoff","fdpAmendmentType","PreferFdpSplit","PreferFdpCombine","SplitDuty","dooType","isAfterNightDuty","isBeforeNightDuty","requestedItemStatus","requestedItemType","requestedActivity","checkinDateTimeUtc","_getDate","checkoutDateTimeUtc","flagDutyList","isIntroFlight","isObserverFlight","flightId","hasAbnd","flightActivities","dateStartUtc","dateEndUtc","isDutyPart","mainActivity","estimatedStartUtc","estimatedEndUtc","flightInfo","getFlightInformationFromFlightId","startDiff","toDiff","originRcd","destinationRcd","dutyTitle","customTitle","hasCrewHidden","needWrap","needWrapTitle","hasFlags","subTitle","onRenderCellDetails","_getCapacityLevel","RequestToolFreelance","capacityLevel","capacityLevelCockpit","hasCapacity","hasHighCapacityLevel","High","hasNoneCapacityLevel","hasLowCapacityLevel","Low","hasCheckinCheckout","allowedDateRange","range","isBeforeActivePerson","lastReleasedDateWithRotationTails","enableDarkMode","darkModeQuery","darkMode","switchDarkMode","onThemeUpdate","saveToConfig","getElementById","enter","exit","appendPosition","collapse","collapseDuration","preventExitTransition","nodeRef","isIn","playToast","T","minHeight","transition","padding","margin","containerId","toastId","theme","I","isToastActive","buildToast","getSnapshot","setProps","onOpen","updateId","staleId","observe","removeToast","toasts","clearQueue","N","$","toastStyle","fromEntries","closeToast","toastClassName","progressClassName","autoClose","deleteToast","closeButton","toastProps","M","setToggle","newestOnTop","getToastToRender","delta","removalDistance","canCloseOnClick","canDrag","didMove","pauseOnHover","closeOnClick","draggableDirection","clientX","clientY","transform","opacity","abs","collapseAll","removeProperty","pauseOnFocusLoss","hasFocus","onPointerDown","draggable","pointerType","offsetWidth","draggablePercent","offsetHeight","onPointerUp","getBoundingClientRect","nativeEvent","onMouseEnter","stacked","onMouseLeave","pauseToast","isRunning","toastRef","eventHandlers","hide","controlledProgress","rtl","animationDuration","animationPlayState","defaultClassName","B","dismiss","update","dark","clearWaitingQueue","play","pause","D","z","spinner","hideProgressBar","bodyStyle","progressStyle","S","F","X","Y","ariaLabel","fillRule","Q","dataset","collapsed","setProperty","pointerEvents","NotificationContainer","NotificationHandler","subscribeToNotifications","SignalR","onOperationSuccessHandler","onOperationWarningHandler","onOperationErrorHandler","onOperationInfoHandler","showWarning","showInfo","suppressError","excludeErrors","pattern","reason","showConsoleError","errorParameters","filename","lineNo","lineno","columnNo","colno","messageParts","isDevelopment","screenSize","screen","navigatorUserAgent","userAgent","navigatorVendor","vendor","postData","optionsOverride","rect","getWindow","ownerDocument","defaultView","getWindowScroll","win","scrollLeft","pageXOffset","pageYOffset","isElement","isHTMLElement","HTMLElement","getNodeName","nodeName","getDocumentElement","documentElement","getWindowScrollBarX","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","scroll","offsets","getNodeScroll","clientLeft","clientTop","getLayoutRect","offsetLeft","offsetTop","getParentNode","getScrollParent","_getComputedStyle","overflowX","overflowY","listScrollParents","list","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placements","modifierPhases","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","modifiersData","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","merged","existing","mergeByName","enabled","_ref3","_ref3$options","effect","cleanupFn","noopFn","forceUpdate","_state$elements","rects","reset","_state$orderedModifie","_state$orderedModifie2","destroy","onFirstUpdate","passive","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","floor","ceil","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","_roundOffsets","dpr","devicePixelRatio","roundOffsets","hasX","hasY","sideX","sideY","clientWidth","_Object$assign","commonStyles","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets","hash","getOppositePlacement","matched","getOppositeVariationPlacement","toNumber","cssValue","getDecorations","borders","computedStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","getBorders","isHTML","winScrollBarX","innerHeight","isShadow","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","getViewportRect","winScroll","documentRect","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","decorations","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","referenceElement","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","_skip","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","_loop","fittingPlacement","within","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrow","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_preventedOffset","_state$modifiersData$","minProp","maxProp","endDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$scroll","_options$resize","resize","_options$gpuAccelerat","_options$adaptive","initialStyles","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","ToolTipContainer","ToolTipItemMode","_showPortal","_tooltipInstance","_tooltipNumber","_tooltipsCounter","_containerObserver","_containerElement","_tooltipRef","_tooltipArrowRef","_targetElement","_popperMouseOver","_checkTargetElement","_initToolTipItem","_popperMouseEnter","_popperMouseLeave","_closePopper","_onContainerMouseOut","_computedText","MouseHover","_onDocumentMouseClick","_onContainerMouseOver","disconnect","_createContainerChangeDetector","_createPopper","eff","childElementCount","MutationObserver","mutationList","mutation","childNodes","childList","_destroyPopper","_hide","asyncComputedText","MouseClick","ToolTipPortal","showPortal","_portalContainer","RangeReadyStatus","RangeComparer","isEqualDate","r1","r2","isInDateRange","RangeStore","rangeLoadHandler","_rangeStatuses","_rangeLoadHandler","DateRangeStore","_prefetchDates","loadRange","fullRange","_validateRange","minRequiredDate","maxRequiredDate","daysBack","daysForward","requiredDaysBack","requiredDaysForward","dateFromWithFullPrefetch","dateToWithFullPrefetch","_isLoadingRequired","reloadRange","statusRange","_setLoadingStatus","_setReadyStatus","Range","Ready","getStatus","maxStatus","rangeStatuses","rangeStatus","isLoadingNeeded","ranges","refreshVisibleViewport","viewportRange","clearRange","isIntersects","intersectionWithViewport","rangesIntersection","PersonRangeStore","_personStatusesMap","_prefetchItems","_itemLoadHandler","requiredItems","indexesBack","indexesForward","requiredPersonIdsBack","requiredPersonIdsForward","indexFrom","indexTo","indexFromWithFullPrefetch","indexToWithFullPrefetch","reloadItems","items","statusRanges","personStatuses","loadingStatus","rs","personStatus","personIdsToRefresh","viewportPersonsIds","NavigateBehavior","SelectionMode","ActionInitiator","RosterZoom","LoadMode","SinglePersonStore","_personInfo","_requestId","_changeSubscriptions","_person","_dataLoading","onChangeSource","_cancelAdditionalData","_cancellationSourceAdditional","cancel","updatePerson","updateInfo","reloadInfo","toUiTimestamp","personInfos","personInfoGet","cancellationToken","dataLoading","getPerson","loadViewport","getDayWidth","zoom","x1","x2","x4","x8","getZoomMultiplier","DutyStore","_packagePersons","_marginPerson","_maxDuties","_dutyCounter","_dutyMap","_viewportDayFrom","_viewportDayTo","_viewportPersonIds","_loadedRanges","setType","_cancellationSource","_rosterType","keepViewport","_cleanUp","_getDutyCount","viewportPersonRange","viewportDayRange","totalDayRange","personIndexFrom","personIndexTo","toLastDayOfMonth","dateRanges","currentDateFrom","currentDateTo","monthPeriodFrom","monthPeriodTo","rangeIndex","dateRange","nextRange","prefetchPersonIds","canMergeWithNext","mergedPersonIds","mergedPrefetchPersonIds","mergedRange","_isPersonRangeLoadingRequired","shouldMerge","personIdsToLoad","loadDuties","personsDayRanges","dutyResponse","dutyGet","_resultToMap","er","Extensions","setDuties","duties","dayData","timestampDateTimeUtc","transactionAction","personMapItem","newItem","currentRange","isFullyReady","hasRanges","invalidate","part1","part2","part3","maxDuties","maxRounds","personItem","dutyMap","dutyDates","shallow","VirtualDateMonth","_monthRef","_contentRef","_lastUpdatedScrollLeft","_contentLeftProp","scrollWrapperRef","_handleRosterScroll","_getMonthContentLeftProp","updateLeftProp","day","onRenderMonthExtensions","_renderMonthTitle","highlight","datesListRect","_getDatesListRect","monthRect","_getMonthRect","contentRect","_getContentRect","posStart","posEnd","viewportWidth","isOnLeft","isOnRight","isOnMiddle","middlePos","scrollDiff","cellWidth","_getScrollBreakpoint","datesListRef","VirtualDaysList","days","virtualWidth","onRenderCustomDate","onRenderDayExtensions","onRenderDayCssClassName","onRenderDailyFigures","onRenderRosterFilter","dates","newMonth","curMonth","getFullYear","getMonth","lastInRange","_getDaysCount","_isMajorMonth","getDate","dateClass","getUTCDay","x16","zoomClass","_getDay","VirtualHorizontalExpander","currentMonth","daysCount","majorMonth","TimeoutTimer","UpdateStatuses","VirtualizedRoster","_datesList","_personList","_scrollWrapper","_viewportDateFrom","_viewportDateTo","_viewportDays","_viewportPersonIndexFrom","_viewportPersonIndexTo","_majorMonthDay","_scrollTop","_scrollLeft","_gridClientWidth","_updateStatus","_scheduleEnsureRange","_scheduledRestoreScroll","_selectedCells","_selectedElement","_copiedDuties","_autoExpandTimeout","_autoExpandCssClass","_selectedPersonIdsMap","_timeout","_refreshInterval","_pos","_containerOnMouseMove","containerRef","dx","dy","newScrollLeft","_dateFrom","flushSync","toPrevMonth","_dateTo","toNextMonth","_onContainerMouseUp","_dutyStore","personsStore","_viewState","viewState","_filterState","filterState","_showPersonList","showPersonList","_personInfoWidthPx","personInfoWidthPx","_zoom","initialZoom","_restoreViewState","_updateSelectionStrategy","selectionStrategy","_autoDisposer","autorun","_updateViewport","_onWindowResize","_onDocumentMouseUp","_onSignalRDutyChanges","_isPersonRelatedSignalRGroup","_refreshOnHidePlanningPeriod","_updateDuties","autoExpandPeriod","_checkAutoScroll","secondsRemaining","getSeconds","setInterval","unsubscribe","clearInterval","onSaveViewState","viewportDateFrom","viewportDateTo","refresh","updateFilterState","scrollWrapper","ensureRangeVisible","alwaysCenter","_scrollGrid","_positionVirtualScrolls","gridRef","onRenderHeader","onRenderFooter","onRenderPersonList","onRenderDaysListExtensions","showZoomControls","bottomInfoHeightPx","noWrapper","wrapperClassName","canZoomIn","canZoomOut","homeCalendarElement","getElementsByClassName","cellWidthPx","_render","_virtualDrawOptions","personListWidth","_renderDays","personLoadErrorHint","_renderPersons","_renderGrid","marginLeft","_renderZoom","_onZoomChange","baseProfile","daysStyle","_translateLeft","_virtualWidth","highlightMajorMonth","showFocusedPersonDay","personItemStyle","_translateTop","errorMessage","personInfoStatus","topPersonIds","onRenderPersonExtraInfo","onPersonLicenseClick","_vWrapperRender","onRenderGridExtras","onCellDoubleClick","nextPerson","getHistorizeLastDate","department","dutyItemStyle","tabIndex","onScroll","_onRosterScroll","onMouseDown","_onGridMouseDown","_onGridMouseOver","handleWidth","onResize","_onRosterResize","_isSelectedRowInView","selectedPersonIndex","diffDays","_virtualHeight","lineInfoHeight","viewportTop","getDecimal","selectedRowIndex","hStandart","hSelected","heightBeforeSelectedElement","viewportDays","virtualHeight","viewportLeft","fakeStyle","clip","datesList","personsList","NeedToUpdate","grid","viewportPersonsCount","viewportPersonIndex","viewportPersonsRange","viewportDaysCount","viewportDutyStartIndex","viewportDatesRange","viewportDates","currentDate","ArrayHelper","isSameDateArray","_updateMajorMonth","virtualRange","onPersonRangeLoad","Viewport","onDateRangeLoad","_waitTimeout","immediate","shouldUpdateConfig","keepScroll","endOfMonthTo","isVirtualToMonth","monthsInView","diffMonths","waitTillUpdate","endOfNextMonth","newViewportDateTo","lengthToPx","_scheduleScrollGrid","endOfViewportMonth","dateIndex","monthDayStart","monthDayEnd","newScroll","navigateTo","topLeft","middleDate","behavior","selectCell","_navigateInternal","selectedCells","setFocusedElement","personIndex","waitTilUpdate","daysInView","dayStart","dayEnd","scrollToPerson","selectedPersonsMap","selectedPersonId","getSelectedPersonIdForCurrentFunction","keepFullRange","baseDate","viewportCenterRange","funcIdKey","personIdFromMap","dateFromUtc","dateToUtc","isValidation","refreshRange","viewportPersonIds","RefreshVisible","keepDataDuringRefresh","resetCopiedDuties","Clean","onPlanningDutyPeriodStatusLoad","reloadDailyData","changeEvent","personsRange","Refresh","minUpdateDate","maxUpdateDate","strategyConstructor","RosterSelectionStrategyDefault","_selectionStrategy","updateDomSelection","getDuty","personMap","personDuty","selectedElement","selectedRowNumber","selectedColumnIndex","datesRange","onCellSelected","gridDutyList","updated","userSelect","altKey","sourceDutyElement","mouseDownHandler","_saveSelectedPersonForCurrentCrewFunction","onCellFocused","funcGroupIdKey","documentMouseUpHandler","mouseMoveHandler","copyDuties","initiator","onCanCopyDuties","pasteDuties","onPasteDuties","pasteDraggedDuty","Keyboard","isZoomIn","onZoom","majorMonthDay","_getMajorMonth","onMajorMonthChange","monthGroups","groupBy","BaseRosterSelectionStrategy","roster","cellInnerClass","_roster","_gridRef","getElementFromDom","domElement","getDomElement","getIndexAttr","attrName","getNamedItem","selectItem","deselectItem","convertToRosterElements","domElements","rosterCell","getCellsRange","rangeStartCell","rangeEndCell","rowStartIndex","colStartIndex","rowEndIndex","colEndIndex","rowEnd","colStart","colEnd","colIndexAttr","cellI","selectRange","getSelectedCells","targetCells","rosterElement","targetCellIndex","_rangeStartCell","_selectionBeforeRange","_totalSelection","areGapsEnabled","targetElement","isTargetItemSelected","shouldAddRange","_getFullSelection","rangeCells","RosterSelectionStrategyDefaultNoGaps","RosterSelectionStrategyMobileRangeWithGap","isTargetCellSelected","RosterSelectionStrategyMobileRangeWithoutGap","RosterSelectionStrategyMobileSingleRange","AirbusTypePicker","AirbusTypePickerStore","airbusTypes","loadAirbusTypesFilters","airbusTypesCabin","airbusTypesCockpit","airbusTypesResponse","isVisible","AirbusTypeFilter","MonthlyPicker","MonthlyPickerStore","loadMonthlyTypes","MonthlyFilter","PartialLoadPicker","PartialLoadPickerStore","partialLoadTypes","_loadPartialTypes","PartialLoadFilter","ReleasedPicker","ReleasedPickerStore","ReleasedFilter","TypeRatingPicker","TypeRatingPickerStore","typeRatings","loadTypeRatingFilters","typeRatingFilters","TypeRatingFilter","ScreenDisabled","renderIcon","iconName","PopupTrigger","PopupPlacement","Popup","_popup","_isVisible","_isFreezed","_target","_container","container","trigger","triggerType","Hover","_documentScrollHandler","Click","_onContainerClick","_onContainerOutsideClick","reaction","_updatePopupPosition","_documentMouseOutHandler","_checkTarget","onHidePopup","setFreezed","isFreezed","onDisappear","sheduledTarget","cssClass","targetRect","popupRect","defaulPlacement","popupPlacementOrder","_getPlacementOrder","popup","coords","_getPlacementCoords","_setPopupPosition","docWidth","docHeight","indent","targetXCenter","popupHalfWidth","fitwidthL","_fit","scrollX","fitwidthR","scrollY","targetYCenter","popupHalfHeight","fitHeightT","fitHeightB","defaultPopupPlacementOrder","targetPoint","popupSide","containerPoint","value1","value2","isSameArray","valueSelector","distinctBy","mapFn","itemsMap","collection","sortByAccessor","caseSensitive","valueA","accessor","valueB","applyDecorators","isIOS","isTouchDevice","matchMedia","getEncodedToken","tokenParts","dec0","escape","def0","enc0","btoa","dec1","def1","AcclimatisationStatus","ActivityType","AircraftType","AirportExperienceConditionType","BlockedDayType","CabinCrewAttestationStatus","CalendarType","CapacityLevel","ChangeLogStatus","CheckerTraineeFunction","CheckerTraineeFunctionCrewType","CommentCategory","ConfigType","ContractFlagType","ContractModelType","ContractType","CourseStatus","CourseType","CrewApiDeliveryMethod","CrewApiMessageFormat","CrewApiPersonChangeAction","CrewFunctionType","CrewType","DailyDutyFiguresType","DirectionType","DooType","DutyFlag","DutyLogType","DutyWarningType","EbtModuleType","EmailContentType","FdpAmendmentType","FdpExtensionType","FleetType","FlightQueueResultStatus","FlightRequestLimitRange","FlightStatus","FlightTriggerType","FreelanceActivityType","FreelancePeriodStatus","FunctionOverruleType","GenDecCrewType","GenDecDeliveryMethod","Gender","HotelDetailType","InstructorRequirements","JobMisfireInstruction","JobParameterType","JobStatus","LandingType","LogbookExportType","MailQueueStatus","MailQueueType","MealReportType","MessageLabel","MonthlyType","PartialLoadType","PersonDutySwapType","PersonGroupType","PersonLicenseStatus","PersonNbuType","PersonPlanningDayType","PersonRequestDayType","PersonRequestFlightStatus","PersonRequestFlightType","PersonRequestOffStatus","PersonRequestOffType","PersonRequestReserveGroupType","PersonRequestReserveStatus","PersonRequestVacAnswer","PersonRequestVacBlockDecision","PersonRequestVacLogUseType","PersonRequestVacPriority","PersonRequestVacType","PersonSortOrder","PersonTzvDayAssignmentType","PersonWishStatus","PlanningGroupDayStatus","PositioningType","ReleaseFilterType","ReleaseLevel","RequestCapacityDateStatus","RequestCapacityType","RequestPointSubType","RequestPointUseType","RosterImportErrorType","RosterType","RotationCrewComplementsFunction","RotationType","SchedulerStatus","SearchMatched","SelfTestResultStatus","ShadowDutyType","ShadowOffCategory","ShadowOffType","SimulationAircraftType","SimulationCoursePosition","SimulationMemberType","SimulationType","SortOrder","SuppressValidationErrorReason","TradeUnionExportType","UrgentFlightSupressType","VacationType","ValidationErrorCategory","VasaSalaryPeriodStatus","BaseApiModelClass","ApiClient","aircraftGet","_url","sendRequest","GET","aircraftMaintenanceGet","aircraftTypeRecencyReportCabinPost","POST","aircraftTypeRecencyReportCockpitPost","airportGetByThreeLetterCode","getDynamicUrl","airportGet","airportDetailsGetByThreeLetterCode","airportRecencyReportPost","airportRecencyReportPersonGet","areaRouteCompetenceRulesReportPost","areaRouteCompetenceListGet","areaRouteCompetenceRulesListGet","areaRouteCompetenceCreateRulePost","areaRouteCompetenceDeleteRuleDelete","areaRouteCompetenceWebBasedTrainingGet","areaRouteCompetenceWebBasedTrainingPost","areaRouteCompetenceWebBasedTrainingDelete","areaRouteCompetenceReportPost","cateringReportGet","cateringReportPost","cateringReportGetByReportId","changeLogPost","changeLogPut","PUT","changeLogSetPlanningConfirmationPost","changeLogReasonPut","changeLogOldDutyTextPut","changeLogNewDutyTextPut","commentFlightGet","commentFlightPut","commentPersonGet","commentPersonPost","commentPersonPut","commentPersonUpdateCommentPut","commentDayGet","commentDayPost","commentDayPut","commentStandbyGet","commentCreateMultiPost","commentValidationGet","commentValidationPut","commentDutyPut","commentDutyGet","commentPlanningNotePut","commentPlanningNoteGet","commentDelete","commentGet","commentReportPost","configurationGet","configurationPut","contractTypesGet","contractFlagTypesGet","countryGet","courseManagementListPost","courseManagementGet","courseManagementPut","courseManagementDelete","courseManagementReportPost","courseManagementExportPdfGet","courseManagementExportBazlGet","courseManagementImportPost","formFile","courseManagementPersonCoursesGet","courseManagementPersonExportPdfGet","courseManagementSignCcaPut","courseManagementIncorrectCcaPut","crewApiConfigurationGet","crewApiConfigurationPut","crewApiConfigurationDelete","crewApiMassConfigurationGet","crewApiMassConfigurationPut","crewApiConfigReportPost","crewApiConfigurationGetByCountryCode","crewApiMessageFormatGet","crewApiDeliveryMethodGet","crewApiTriggerGet","crewApiPayloadGetByFlightIdItemId","crewApiProcessGetByFlightId","crewApiGenerateGetByFlightId","crewApiFlightGetByFlightId","crewApiLocationGetByLocationRcd","crewApiFlightStatusGet","crewApiFlightStatusGetByFlightId","crewApiHistoryGet","crewApiHistoryGetByFlightIdItemId","crewApiHistoryPaxlstCountGet","crewApiRelatedAirportsGet","crewApiPersonStateGetByPersonId","crewApiAddMclPostByPersonId","crewApiUpdateMclPostByPersonId","crewApiDeleteMclPostByPersonId","crewApiSkipMclPostByPersonId","crewApiMclMissingDataGet","crewDutyListReportPost","crewDutyListReportExportPost","customPersonManagementListPost","customPersonManagementGetById","customPersonManagementPost","customPersonManagementPut","devPingGet","devVersionGet","dooxReportPost","dosimetryReportPost","dutyPut","dutyDeletePost","dutyDownloadValidationPost","dutyDownloadValidationResultPost","dutyValidationDataGet","dutyValidationDataGroundGet","dutyValidationDataFseGet","dutyCopyPost","dutyUndoGet","dutyUndoPost","dutyRollbackUndoPost","dutyBulkUndoPost","dutyDayActivitiesGet","dutyMonthDutyTypesGet","dutyReleaseFilterTypesGet","dutyHistoryPost","dutySeatHistoryPost","dutyUpdateTitlePost","dutySectorSwapCrewPost","dutyRotationSwapCrewPost","dutySectorMoveCrewPost","dutyRotationMoveCrewPost","dutyHideDutyPost","dutyDayDutiesGet","dutyPartialLoadTypesGet","dutyGetDutyHoursGet","dutyChangeDutyHoursPost","dutyUrgentGet","dutyUrgentReleasePeriodGet","dutyPersonDayLandingPut","dutyPersonDayLandingGet","dutyPersonDayTakeoffPut","dutyPersonDayTakeoffGet","dutyPersistPost","dutyPersonDayMessagesGet","dutyConfigurePlanningPeriodPost","dutyPlanningPeriodsGet","dutyPlanningDutyPeriodGet","dutyPlanningDutyPeriodStartPost","dutyPlanningDutyPeriodReleasePost","dutyDutyPartGet","dutyDutyPartPut","dutyRecencyLandingsGet","dutyRecencyTakeoffsGet","dutyCheckerTraineeGet","dutyCheckerTraineePost","dutyCheckerTraineePut","dutyCheckerTraineeDelete","dutyCheckerTraineeLongHaulGet","dutyCheckerTraineeFlightTeamGet","dutyCheckerTraineeGroundTeamGet","dutyCheckerTraineePersonDelete","dutyCheckerTraineeFunctionGet","dutyPredefinedPost","dutyPredefinedGet","dutyPredefinedPutById","dutyPredefinedDeleteById","dutyValidationGet","dutyValidationUrgentGet","dutyValidationErrorsInfoPost","dutyValidationSuppressReasonsGet","dutyValidationLandingAirportsGet","dutyValidationSuppressPost","dutyValidationSuppressErrorsPut","dutyValidationResumePost","emailPost","emailBodyGet","emailAttachmentsGet","emailAttachmentGet","emailValidatePost","emailUpdateStatusPostByIdStatus","errorUiPost","errorReportPost","errorReportGet","experienceReportPost","flightGet","flightPost","flightGetByYearMonthDay","flightInfoGet","flightCrewDetailsGet","flightSectorsGetByYearMonthDay","flightSectorGetByFlightId","flightUrgentGet","flightUrgentGetByFlightId","flightUrgentSuppressPut","flightPersonFdpExtensionTypePut","flightPersonFdpAmendmentTypePut","flightDecodeGet","flightHistoryPost","flightInformationGet","flightInformationPut","flightRevalidatePost","flightMessagesGet","flightPublishNetlinePost","flightCrewTypeGet","flightCrewGetByFlightId","flightDutyRecordGet","flightDutyRecordDownloadGet","functionGet","functionGroupGet","genDecPost","genDecPreviewPost","genDecPayloadGetByFlightIdItemId","genDecProcessGetByFlightId","genDecGetByReportId","genDecRotationGet","genDecConfigurationGet","genDecConfigurationPut","genDecConfigurationDelete","genDecRelatedAirportsGet","genDecFlightStatusGet","genDecFlightStatusGetByFlightId","genDecConfigReportPost","genDecDeliveryMethodsGet","groundStaffReportGet","holidayGet","errorPost","homeStudyPost","homeStudyPersonsPost","hotelManagementLocationsPost","hotelManagementLocationsMonthPost","hotelManagementHotelDetailsGet","hotelManagementHotelPersonDetailsPost","hotelManagementPreReservationHotelDetailsGet","hotelManagementPreReservationHotelBookingDetailsPost","hotelManagementDownloadEmailGet","hotelManagementPreReservationDownloadEmailGet","instructorFilterGet","instructorFilterPost","instructorFilterPut","instructorFilterDelete","instructorFilterCodeGetByCodeName","jeppesenToolDownloadFileGet","jeppesenToolRosterExportInfoGet","jeppesenToolCrewExportInfoGet","jeppesenToolRosterImportInfoGet","jeppesenToolRosterImportsPost","jeppesenToolRosterImportDetailsPost","jeppesenToolRosterImportExceptionGet","jeppesenToolRosterImportFileDataGet","jeppesenToolRosterImportUploadFilePost","jeppesenToolCasImportInfoGet","jeppesenToolCasImportFileGet","jeppesenToolCasImportFilePut","jobListGet","jobGetById","jobStartPostByJobName","jobName","jobParametersGetByJobName","jobCronValidationPostByCronExpression","jobParametersPostByTriggerName","triggerName","jobSettingsPostByJobName","jobCreatePost","jobDeleteDelete","jobCheckTriggerNameGet","jobStopPostByJobNameJobExecutionId","licenseManagementLicenseListPost","licenseManagementGet","licenseManagementPost","licenseManagementPut","licenseManagementDelete","licenseManagementLicenseManagementOptionsGet","logbookPost","logbookExportPost","maintenanceNotificationPut","maintenancePut","maintenanceGet","maintenanceCanBypassMaintenanceGet","maintenancePingGet","offdaysReportPost","onlinePrincipalConnectedClientsGet","onlinePrincipalRosterActivityGet","permissionGet","permissionRoleGet","permissionRoleGetByRoleId","personGet","personRevalidatePost","personPublishPost","personLookupPost","personLookupByPhoneGet","personSmsPost","personSmsCrewGet","personLicensesPost","personMintLicensesPost","personMintLicenseInactivationsPost","personEntriesPost","personFunctionsPost","personPlanningFunctionOverrulesPost","personAircraftActivitiesGet","personAirportsGet","personExperienceGet","personShowMyScheduleGet","personShowMySchedulePut","personAllowSecondReserveGet","personAllowSecondReservePut","personShowMyPhoneGet","personShowMyPhonePut","personOptInShowEfaScheduleGet","personOptInShowEfaSchedulePut","personOptInShowAeropersScheduleGet","personOptInShowAeropersSchedulePut","personMessagesGet","personPersonModificationsGetByPersonId","personAircraftTypeExperienceGet","personAircraftTypeExperiencePost","personAircraftTypeExperiencePut","personAircraftTypeExperienceDelete","personAircraftTypeExperienceGetByPersonIdAircraftTypeGroupActivityDate","personAircraftTypeExperienceOverruleGetByPersonIdAircraftTypeGroupActivity","personChangeLogGet","personChangeLogLastGet","personChangeLogConfirmPut","personInfoQuarterGet","personInfoSummaryFiguresGet","personInfoDeltaFiguresGet","personInfoConsecutive3monthFiguresGet","personInfoDutyPeriodsGet","personInfoDutyFiguresPost","personInfoDayStatusPut","personInfoCicoChangePost","personInfoCicoResetPost","personInfoCicoGet","personInfoCicoSetByEstimatedPost","personInfoPopupDataGet","personInfoLocationGet","personLicenseAirbusTypesGet","personRequestPointsBalanceGet","personRequestValidateOffGet","personRequestOffPost","personRequestOffPut","personRequestOffDelete","personRequestOffGet","personRequestResolvePost","personRequestAvailableFlightsGet","personRequestFlightGet","personRequestFlightPost","personRequestFlightDelete","personRequestGrantJobStatusGet","personRequestFlightRejectedByPlannerPost","personRequestRequestsGet","personRequestPointsLogGet","personRequestPointsPeriodsGet","personRequestPersonInfoGet","personRequestAvailableRequestRangeGet","personRequestOffLimitsGet","personRequestFlightLimitsCockpitGet","personRequestFlightLimitsCabinGet","personRequestFlightLimitsLogsCabinGet","personRequestFlightLimitsLogsCockpitGet","personRequestFlightLimitsCorrectionPost","personRequestIsConstantFreelancerGet","personRequestRotationOffsPost","personRequestManualCorrectionPut","personRequestBlockingFlightFlightPost","personRequestBlockingFlightFlightDelete","personRequestBlockingFlightFlightGet","personRequestBlockingPeriodDayPost","personRequestBlockingPeriodDayPut","personRequestBlockingPeriodDayDelete","personRequestBlockingPeriodDayGet","personRequestFreelanceFreelanceYearsGet","personRequestFreelanceContractInfoGet","personRequestFreelanceValidateGet","personRequestFreelancePeriodExportGet","personRequestFreelanceConfirmPost","personRequestFreelanceDeviatePost","personRequestFreelancePut","personRequestNbuPost","personRequestNbuDutyPost","personRequestNbuDutyPut","personRequestNbuDutyDeleteById","personRequestNbuErrorSuppressPost","personRequestNbuErrorResumePost","personRequestNbuMonthGet","personRequestNbuMonthPut","personRequestReserveGet","personRequestReservePost","personRequestReserveDelete","personRequestReserveReserveRequestAvailableGet","personRequestReserveReserveBlocksGet","personRequestReserveReservePeriodsGet","personRequestReserveReserveDutyBlocksGet","personRequestReserveBalanceGet","personRequestSeniorityFlightHoursOverviewGet","personRequestSeniorityWishTypesGet","personRequestSeniorityWishGet","personRequestSeniorityWishPost","personRequestSeniorityWishDeleteById","personRequestSeniorityWishHistoryGet","personRequestTzvTzvYearsGet","personRequestTzvTzvBalanceInfoGet","personRequestTzvTzvBalanceInfoTotalGet","personRequestTzvHasTzvContractGet","personRequestTzvTzvBlocksGet","personRequestTzvContractInfoGet","personRequestTzvBalanceManualCorrectionPut","personRequestTzvBalanceManualCorrectionPost","personRequestTzvBalanceManualCorrectionDeleteById","personRequestTzvTzvAssignmentGet","personRequestTzvTzvAssignmentPost","personRequestTzvTzvAssignmentDeleteById","personRequestVacValidationGet","personRequestVacPost","personRequestVacPut","personRequestVacGet","personRequestVacRequestBlockPut","personRequestVacDeleteById","personRequestVacRulesStatusGet","personRequestVacVacSDeadlineInfoGet","personRequestVacVacPDeadlineInfoGet","personRequestVacAvailableTypesGet","personRequestVacBalanceInfoGet","personRequestVacBalanceInfoTotalGet","personRequestVacBalanceManualCorrectionPut","personRequestVacBalanceManualCorrectionPost","personRequestVacBalanceManualCorrectionDeleteById","personRequestVacVacationPeriodsGet","personRequestVacVacationYearsGet","personRequestVacRequestBlockAlternativesCrewDecisionPostByRequestBlockIdRequestId","requestBlockId","personRequestVacVacBlocksGet","personRequestVacRequestBlockLogGetByRequestBlockId","personsReportPost","personViewGet","personViewCabinRecencyGet","personViewCockpitRecencyGet","plannedTrainingsReportPost","planningFlightActivityCandidatesGet","planningValidateFlightCandidateGet","planningRestDeltaTimesPost","positioningGet","positioningForDayGet","positioningCodesGet","positioningFlightsGet","positioningAvailableDirectionsGet","positioningCustomsGet","positioningDiffToLtGet","qualityLoopExportGet","qualityLoopExportPost","qualityLoopExportDataGetByReportId","qualityLoopExportIdMappingGetByReportId","recencyGetByPersonId","recurrentTrainingReportPost","releaseHistoryReleaseGroupsGet","releaseHistoryReleasePeriodsGet","releaseHistoryNotFullPersonsGet","releaseHistoryReleasePut","releaseHistoryReleaseStatusGet","releaseHistoryReleaseDateGet","releaseNotesGet","releaseNotesPost","releaseNotesGetById","releaseNotesPutById","releaseNotesDeleteById","releaseNotesMarkAsReadPost","requestCapacityToolAnalyzePost","requestCapacityToolImportPost","requestCapacityToolOverviewGet","reserveManagementRequestsPost","reserveManagementReservePeriodsGet","reserveManagementReservePeriodsPutByReserveYearPeriodId","reserveYearPeriodId","reserveManagementRequestApprovePost","reserveManagementRequestInformPost","reserveManagementRequestRejectPost","reserveManagementRequestUndoPost","reserveManagementRequestPlannerCommentPut","reserveManagementYearPeriodsFilterOptionsGet","reserveManagementReserveBlocksPost","reserveManagementReserveBlocksPut","reserveManagementReserveBlocksDelete","rotationForDayGetByYearMonthDay","rotationLongHaulGetByYearMonthDay","rotationLongHaulForPeriodGet","rotationLongHaulSingleGet","rotationDirectionsGet","rotationDatesGet","rotationFlightDatesGet","rotationAvailableFlightsGet","rotationInitRotationGet","rotationPut","rotationGet","rotationRotationIdGet","rotationCopyPost","rotationBuildPost","rotationDeleteDelete","rotationFlightPostByFlightId","rotationAircraftGet","sectorsReportPost","monitoringGet","monitoringSendingQueuePersonDayGet","monitoringJobGetByJobName","selfTestJobsPost","monitoringJobsGet","selfTestSignalrPost","monitoringSignalrGet","selfTestDatabasePost","monitoringDatabaseGet","selfTestUpdateDatabasePost","selfTestPersondayqueuePost","selfTestNetlineOpsQueuePost","selfTestPersonMessageBusQueuePost","selfTestCrewApiQueuePost","selfTestCrewApiMclQueuePost","selfTestPersonrevalidatePost","selfTestEmailqueuePost","seniorityReportPost","seniorityReportSeniorityCommentPut","seniorityReportSeniorityExitDatePut","seniorityReportSeniorityEntryDatePut","serviceDownloadMessagesGet","serviceMessageLabelsGet","serviceMessageTagsGet","serviceDownloadFullLogsGet","serviceDownloadDayLogsGet","serviceDownloadDeadlettersGet","serviceMessageStatisticsGet","serviceOperationsGet","serviceLogsDatesGet","serviceMessagesDatesGet","serviceRestartSchedulerPost","serviceInputQueueStatisticsPost","serviceInputQueueDeadlettersPost","serviceInputQueueDeadlettersDelete","simulationGet","simulationPost","simulationActivityPlannedGet","simulationTraineeCandidatesGet","simulationSimOverviewGet","simulationSimOverviewPut","simulationSimOverviewDelete","simulationEbtModulesGet","simulationHistoryPost","simulationPositionHistoryPost","simulationPositionHistoryLogPost","simulationDeletionHistoryPost","simulatorLicenseStatusReportPost","standbyReportPost","standbyReportFunctionsGet","standbyReportDownloadEmailGet","tempFilePost","contentType","file","tempFileGetByIdName","tempFileOutageRosterReportGet","tempFileRecentlyGetByLabel","templatesManagementCodesGet","templatesManagementGetByGroupCode","templatesManagementPostByGroupCode","templatesManagementPutByGroupCode","templatesManagementModelGetByGroupCode","timeLocalToUtcPost","timeUtcToLocalPost","timeAvailableTimezonesPost","timeTimezoneOffsetsGet","timeDefaultTimezoneGet","timeCalendarMonthGet","timeSwissTransitionsGet","tradeUnionInterfaceDownloadFileGet","tradeUnionInterfaceExportInfoGetByType","tradeUnionInterfaceExportsPostByType","tradeUnionInterfaceFileDataGet","typeRatingFilterGet","tzvYearOverviewReportPost","tzvYearOverviewReportTzvYearsGet","tzvYearOverviewReportFleetTypesGet","tzvYearOverviewReportPlannerCommentPut","vacManagementRequestsPost","vacManagementRequestBlockPlannerCommentGetByRequestBlockId","vacManagementRequestBlockPlannerCommentPutByRequestBlockId","vacManagementRequestBlockPointsPutByRequestBlockId","vacManagementRequestBlockGetByRequestBlockId","vacManagementRequestBlockAlternativesPostByRequestBlockId","vacManagementRequestsDeleteByRequestId","vacManagementRequestsApprovePostByRequestId","vacManagementRequestBlockRejectPostByRequestBlockId","vacManagementSelectedRangeValidationGet","vacManagementUpdateSelectedRangePost","vacManagementRequestBlockInformedPostByRequestBlockId","vacManagementRequestBlockStatusRollbackPostByRequestBlockId","vacManagementVacTypesGet","vacManagementVacationYearsGet","vacManagementVacationYearPeriodsGet","vacManagementVacationYearPeriodsFilterOptionsGet","vacManagementVacationPeriodsGet","vacManagementVacationPeriodsPutByVacYearPeriodId","vacYearPeriodId","vacManagementCapacityFiguresGet","vacManagementCapacityMonthFiguresGet","vacManagementMonthFromOptionsGet","vacManagementMonthToOptionsGet","vacManagementPersonVacYearDetailsPost","xStarMonitoringReportPost","xStarMonitoringReportCommentPut","ApproveReserveRequestModel","AvailableDirectionModel","ConfigurationModel","CreatePlaningNoteModel","DayCommentCreateDto","DayCommentUpdateDto","DutyCellModel","DutyCheckerTraineeUpdateItem","DutyCommentDto","DutyCreateModel","DutyRestTimeDeltaRequestItemModel","DutyRestTimeDeltaRequestModel","EnumModel","FlightCommentDto","InformReserveRequestModel","JobParameterModel","JobSaveParametersModel","MultiDayCommentCreateDto","PersonChangeLogModel","PersonCommentCreateDto","PersonCommentUpdateDto","PersonDayDto","PersonModel","PersonOffRequestUpdate","PersonRequestVacApproveModel","PersonRequestVacCreate","PersonRequestVacInformModel","PersonRequestVacUpdate","PosDutyData","RequestDutyData","ReservePeriodChangeStatusModel","RotationCrewComplement","RotationDayActivityInfo","RotationDayInfo","RotationModel","SendSmsBody","SimDutyData","StandbyReportComment","SwapDutyData","VacPeriodChangeStatusModel","ValidationErrorModel","DayDutyFilter","activityIds","flightIds","errorTypes","DayDuty","_activityService","ActivityService","_hasDuties","_dutyClass","_subTitle","_codeName","_flightTitle","_hasPosition","_hasHomeStudy","_hasDutyPart","_isSplitDay","_duty","hasFtlErrors","hasGavErrors","hasGroundWarnings","hasEasaErrors","hasAgreementErrors","hasOtherErrors","hasGroundErrors","isNotCountableOff","hasAugmentedFlight","hasExtendedFlight","hasLongHaulFlight","hasCustomCheckin","hasCustomCheckout","hasComment","isFormerStandbyOrReserve","hasNotFullSuppressed","requestedItemPriority","requestedItemColorizeType","requestedItemVacationTypesCount","isSim","firstActivity","rsvActivity","nonFlightActivities","additionalActivities","activity","_getFlightsTitle","buildActivityName","vacationType","isSpecialRsv","flightActivity","isDifferentRotationsFlights","rotationKey","flightNumber","lastFlightActivity","_dutyDay","_flightDateFrom","_flightDateTo","isSplitDay","shadowOffTitle","requestedFlightNumber","requestedItemVacationType","requestedItemIsAlternative","targetConstructor","_parseRange","fromFlightId","guid","year","airlineRcd","legSequenceNumber","getStringFrom","fromPersonDate","rosterCellFormatter","formatRange","selectedPersonList","selectedDateList","isOneDate","personCodes","dateTitle","_comments","_loading","_loadData","commentsIds","OperationText","operationId","separator","textParts","defaultHiddenActivityCode","defaultHiddenGrounActivityCode","activityName","getDefaultColumnVisibility","defaultHidden","checkIsActivityAvailable","activityCode","functionGroups","groupId","_checkIsCabinActivityAvailable","_checkIsCockpitActivityAvailable","_checkIsGroundActivityAvailable","_ownCellsSelected","isOwnChange","isMinorChange","RosterReleasedPlanMinorChanges","isLimitedChange","RosterGroundLimitedWrite","AxiosMethod","ApiHeadersKeys","startupTime","addResponseInterceptor","interceptor","_responseInterceptors","_addAndChechCancelationToken","tokenKey","duplicateToken","_cancelTokenCollection","_callMethod","methodChooser","responseType","requestKey","_getAbsoluteUrl","cancelToken","cancelDuplicatedRequests","_getInstance","requestTimestamp","isHandleError","suppressErrorHandling","showAjaxSpinner","handleError","hideAjaxSpinner","getRequestUrl","operation","PATCH","patchTypedData","putData","post","patchData","patch","showAppLoader","errorHandleService","toQueryString","axiosConfig","_createRequestHeaders","transformResponse","noDateTransform","typeCheck","timeout","axiosInstance","_useInterceptors","interceptors","use","_handlerList","callbackIndex","_getHeadersFromSubscriptions","customApiHeader","CacheControl","Authorization","AppIsHistorized","AppHistorizedDate","AppHistorizedIsLastMonth","AppIsChangeLogDisabled","operationName","AppOperationName","signalRConnectionId","AppSignalRConnectionId","AppImpersonationPersonId","AppImpersonationRoles","AppImpersonateAsPrincipal","performance","getEntriesByType","diffSeconds","AppRefreshData","AppViewPersonId","relariveUrl","typeEl","strCheck","arrCheck","objCheck","ISO_8601_date","fromString","_lastError","defaultErrorMessage","AppReadyService","subscribers","onInitialized","onAppReady","sub","validationErrorsName","sName","isFormValid","__validators","__isValidForm","__errorFields","ClipboardService","border","boxShadow","background","select","execCommand","SwissTimeTransitionsStore","swissTransitions","swissTransitionsYearsLoaded","loadTransitions","_loadTransitions","loadTransitionsAsync","request","periodFrom","periodTo","_rebuildTransitions","transitionsMap","events","timeUtc","transitions","e1","e2","toJSON","month","hh","mm","ss","getUTCSeconds","filteredValues","distinct","parseUiDateTime","parseUiMinutes","parseUiSeconds","NaN","timeParts","originDate","setUTCMinutes","toUiDateShortYear","toUiMonth","useSwissTime","toUiClientShortDate","toUiClientShortDateTime","getHours","getMinutes","toDateString","toUiTimeSeconds","showMS","ms","getUTCMilliseconds","toUiSeconds","seconds","sec","trunc","isNegative","positiveSec","toUiMiliseconds","miliseconds","toUiDiffTime","diffHours","toDiffTime","diffInMinutes","addColon","diffAbs","dayOfMOnth","d1","d2","isSameMonth","isSameYear","isBeforeDateOrEqual","isBeforeDateTime","compare","date1WithoutTime","date2WithoutTime","addSeconds","addMinutes","months","addYears","years","daysBetween","utcToLocalDate","localToUtcDate","timeZone","TimeZone","availableTimeZones","dateLt","addDiffToLt","sourceOffset","signChar","sign","timeDiff","trimTime","dateWithTime","UTC","toFirstDayOfYear","toFirstDayOfWeek","dayOfWeek","toLastDayOfWeek","defaultTimezoneOffset","birthday","atDate","ageDifMs","ageDate","asRestString","getNanDate","hour","minute","second","milliseconds","patternCache","patterns","regexpText","regExpDateMask","patternsToRegex","regExp","foundValue","valuePart","_parseSafeInteger","monthNames","weekDayNames2Letters","getRefYear","getZeroDate","getStartOfDay","setUTCFullYear","setUTCMonth","setUTCDate","maxValue","parsedPart","Number","isInteger","ensureTransitionsLoaded","dateTimeUtc","_transitionsStore","_getSwissTransitionForDate","minutesUtcTimeDiff","getUtcDate","swissDateTimeUtc","getTransitionsForLt","dateTimeLt","transitionsForLt","transitionStartLt","transitionEndLt","getSwissUtcOffset","getShortRelatedTime","relatedDate","referenceDateTimeDiff","getShortRelatedTimeWithSeconds","getDaysInMonth","dateFromA","dateToA","dateFromB","dateToB","ISO_8601","YYYY","MMMM","MM","DD","HH","SSS","DXLinkId","DevExtremeCssService","_itemCount","_itemSet","WeakSet","_cssLink","_onload","_onerror","addItem","_loadCssFile","_unloadCssFile","append","isCssLoaded","dxCssService","DownloadService","downloadFile","sourceFileName","fileName","disposition","exec","blob","downloadBlob","objectUrl","URL","createObjectURL","click","dutyChangeService","notifyDutyChange","handlers","updates","dutyRange","notifyRangeChange","emitter","callBack","scope","extendedFunction","selectTimeOut","capitalizeFirstLetter","num","deepCopy","setTime","FreelanceActivityService","getFromLt","_getHours","getToLt","getFromUtc","getToUtc","LocalStorageService","addOperationToStack","operationStack","clearOld","isChangeLogEnabled","getLastOperation","lastOperation","pickTopOperationDetails","getOperationsAmount","getOperations","needSave","addOperationListToStack","operations","operationTime","operationDateUtc","PrintService","printClickHandler","openInNewWindow","printUrgentClickHandler","isExtended","ScrollService","scrollToTop","scrollTo","SignalRConnectionWrapper","hubConnection","onReconnect","suppressReconnection","_hubConnection","_onReconnect","onclose","abortConnection","signalRService","_signalRObservers","_initObservers","_reconnectObservers","initialize","_queryStringAuthParams","setUpHub","updateHeartbeat","Connected","invoke","setupHeartbeat","isReconnected","connectionUrl","transportType","HttpTransportType","LongPolling","ServerSentEvents","WebSockets","withUrl","transport","accessTokenFactory","_jwtTokenFactory","build","reconnect","_reconnectTimeoutId","oldConnectionWrapper","_connectionWrapper","loaderMessage","innerText","startupLoaders","hideAppLoader","_setupConnection","timeMsNow","exp","groups","eventName","internalObserver","isPersonRelated","lastError","timeoutInSec","methodName","notification","_waitForConnection","groupName","signalRObserver","context","hasGroupConnection","obs","_addObserver","_removeObserver","groupHasAnyObserver","addReconnectObserver","removeReconnectObserver","reinitOnObservedPersonChanged","newQueryParams","_waitForConnectionPromise","checkIntervalId","timeoutId","checkConnection","diacritics","stringSearchService","terms","matcher","textToSearch","_stripDiacritics","hightlites","pStart","term","_removeInHightlites","_expandHightlites","h1","h2","se","highlightInternal","plainTextNodeIndexes","plainText","splittedText","currentSplit","chr","TitleService","buildTitle","baseTitle","selectedList","startDate","personDay","isSameRange","isEqualStartEnd","UndoService","_undoProcessing","notifyCountChange","_loadOperations","operationsCount","addOperation","undoDuty","suppressConfirmation","rosterLoading","operationDetails","undoDutyOperation","removeOperation","shouldRemoveOperationInErrorCase","undoRequest","UrlService","getCurrentUrl","URLSearchParams","param","specs","open","clearParams","history","replaceState","updateParams","path","getParams","addValidation","fieldName","validateFunction","isRequiredWhenExist","related","isRequiredWhenNotExist","isRequiredWhen","compareName","compareValue","shouldValidate","isRequiredWhenAndNotExist","regEx","isDateAfter","compareDate","isDateTimeAfter","disableEquals","comparedDates","isDateBefore","isDateTimeBefore","isSameAs","isNotSameAs","isTime","isDateTime","isNotEmptyArray","hasMinLength","hasMaxLength","notWhitespace","isRange","isDateInRange","endDate","isStartValid","isEndValid","isRegEx","isNumber","errorMEssage","isBiggerThanNull","isDuration","isEmail","emailsHasMaxCount","maxCount","emails","emailsHasDomains","domains","emailPattern","domain","camelCase","addDateTimeValidator","addDateValidator","addDateInRangeValidator","addNumberValidator","addUrlValidator","newUrl","addRequiredValidator","addIsRangeValidator","addCustomValidator","validationFn","validationRule","__validationErrors","__validateError","prototypeValue","defineComputedProperty","errorList","validator","validators","errorNames","prefix","others","__displayName","service","_servicesRegistrations","_servicesInstances","existingInstance","newInstance","ConfigurationStore","_pendingLoadConfigurations","_localConfigurations","featureList","_saveQueue","isFeatureEnabled","featureName","loadConfig","configurationStore","localConfigValue","_loadPendingConfiguration","isSystem","_saveConfigurationInternal","configurationsToLoad","loadKeys","distinctKeys","_notifyPendingHandler","configuration","devInfoStore","environment","toLocaleLowerCase","isStaging","isProduction","GlobalAjaxLoaderStore","_actionElement","_actionElementMap","appClickHandler","loaderNode","appLoaderElement","messageNode","appLoaderMessageElement","setActiveAjaxElement","globalAjaxLoaderStore","LoaderStore","globalProgress","updateGlobalProgress","progressData","loaderStore","isAbsolute","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","addLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","listener","notifyListeners","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","setState","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","goBack","goForward","block","unblock","listen","unlisten","createBrowserHistory","NavigationStore","init","_sendCurrentLocation","lastTitle","newTitle","_onSignalRReconnect","locationName","sendPersonLastActivity","isRequestTool","navigationStore","PermissionStore","getPermissionIdsFromEncodedRoles","decodeBase64ToBytes","encodedStr","base64Str","maxId","bytesCount","byteIndex","bitIndex","convertBytesToPermissionIds","bitesCount","encodedStrings","permissionIds","encodedRoles","getRolesMatch","_getMostProbableRoles","selectedPermissions","probableRoles","matchesCount","kpi","mostProbableRoles","matchedRoles","remainingPermissions","missingPermissions","excludingPermissions","processRoles","continueCondition","mostProbableRole","missingRolePermissions","resultSql","mostMatchedRole","extraPermissionsSql","sql","permissionStore","personActivityStore","startChecking","stopChecking","_isActive","sendPersonIsActive","_setLastActivityDate","_lastActivityDate","__webpack_require__","Vendor","_regeneratorRuntime","__esModule","Op","$Symbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","iterable","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","_arrayLikeToArray","arr2","enumerableOnly","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","_objectWithoutProperties","excluded","sourceSymbolKeys","_objectWithoutPropertiesLoose","sourceKeys","_slicedToArray","_s","_e","_r","_arr","_n","_d","unsupportedIterableToArray","_toConsumableArray","arrayLikeToArray","_toPropertyKey","prim","_unsupportedIterableToArray","invariant","provided","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","getter","leafPrototypes","ns","def","definition","chunkId","miniCssF","inProgress","dataWebpackPrefix","needAttach","scripts","nc","onScriptComplete","doneFns","nmd","paths","loadStylesheet","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","MaintenanceBar","MaintenanceBarStore","unload","maintenance","MaintenanceBlock","isNotifyingMaintenanceMessageOn","caption","notifyingMessage","alertColor","isMaintenanceOn","maintenanceMessage","setupInterval","Alert","fade","updateData","AdminToolsSafe","EasaAlertBar","hasErrors","category","onClickNavigateToErrors","Layout","_onResizeAlertsContainer","dispatchEvent","Event","isCrewPortal","hasEasaPopupAccess","handleHeight","Container","fluid","query","AppContainer","_isAdaptive","_bodyClass","updateViewPort","responsiveSwitchBreakpoint","viewportNode","documentNode","updateBodyClass","NotFoundStore","addressing","_getPersonName","_getTimestamp","trimStartEndZero","setPersonName","_setTimestamp","Forbidden","ForbiddenStore","EdwRoute","EdwRouteStore","clearError","component","additionalProps","Route","routeProps","onErrorHandler","AirportRecencyReport","DownloadTempFile","XStarMonitoringReport","GroundStatisticsReport","DosimetryReport","SeniorityReport","SimulatorReport","EmailViewer","CrewApiGenDecConfig","CrewApiConfigReport","CustomPersonManagement","GenDec","PermissionsTool","CourseManagement","ccaReport","Routes","routs","getLayout","hasAccessToRoster","hasAccessToCrewApi","hasAccessToChangeLog","ChangeLogRead","hasAccessToGroundStaff","routes","crewPageRoutes","crewPortalRoutes","AeroPers","Efa","hasHomeAccess","firstAvailableRoute","Switch","Redirect","RequestTimelineService","_bc","isSupported","BroadcastChannel","_instance","requestTimelineService","addTimeline","rawTimeline","getInstanse","rawData","postMessage","App","_appReadyService","_appReadyDisposeCallback","applicationInsights","initApplicationInsights","_trackPageView","getRegistrations","reg","unregister","caches","cacheNames","cacheName","Provider","Router","trackPageView","instrumentationKey","aiConfig","reactPlugin","ReactPlugin","ApplicationInsights","extensions","enableAutoRouteTracking","extensionConfig","identifier","loadAppInsights","licenseKey","unsupportedMode","onInstalled","onUpdateReady","onUpdating","onUpdated","resizeHandler","scrollDiv","visibility","scrollBarWidth","pendingErrors","__pendingErrors","errorDescription","privateError","rootEl","notificationMessage"],"sourceRoot":""}