@mtgame/core 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/league-api.d.ts +2 -0
- package/bundles/mtgame-core.umd.js +35 -5
- package/bundles/mtgame-core.umd.js.map +1 -1
- package/bundles/mtgame-core.umd.min.js +1 -1
- package/bundles/mtgame-core.umd.min.js.map +1 -1
- package/esm2015/api/league-api.js +7 -1
- package/esm2015/models/league-document.js +26 -0
- package/esm2015/models/league.js +2 -8
- package/esm5/api/league-api.js +9 -1
- package/esm5/models/league-document.js +31 -0
- package/esm5/models/league.js +3 -7
- package/fesm2015/mtgame-core.js +27 -6
- package/fesm2015/mtgame-core.js.map +1 -1
- package/fesm5/mtgame-core.js +35 -5
- package/fesm5/mtgame-core.js.map +1 -1
- package/models/league-document.d.ts +8 -0
- package/models/league.d.ts +0 -1
- package/mtgame-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@mtgame/core/localization/hockey-penalty-types.ts","ng://@mtgame/core/models/util.ts","ng://@mtgame/core/models/file.ts","ng://@mtgame/core/models/sport.ts","ng://@mtgame/core/models/basketball-profile.ts","ng://@mtgame/core/models/user-profile.ts","ng://@mtgame/core/models/city.ts","ng://@mtgame/core/models/volleyball-profile.ts","ng://@mtgame/core/models/hockey-profile.ts","ng://@mtgame/core/models/football-profile.ts","ng://@mtgame/core/models/handball-profile.ts","ng://@mtgame/core/models/user.ts","ng://@mtgame/core/models/tournament-season.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/volleyball-game-config.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/game.ts","ng://@mtgame/core/models/league-court.ts","ng://@mtgame/core/models/media-item.ts","ng://@mtgame/core/models/hockey-game-config.ts","ng://@mtgame/core/models/football-game-config.ts","ng://@mtgame/core/models/handball-game-config.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/team-user.ts","ng://@mtgame/core/storage/store.ts","ng://@mtgame/core/services/base.service.ts","ng://@mtgame/core/services/config.service.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/basketball-game-log.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/league-player.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/basketball-statistic.ts","ng://@mtgame/core/models/basketball-game-team-statistic.ts","ng://@mtgame/core/models/basketball-game-statistic.ts","ng://@mtgame/core/models/hockey-game-log.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/api/game-base-api.ts","ng://@mtgame/core/api/basketball-game-api.ts","ng://@mtgame/core/models/feedback.ts","ng://@mtgame/core/api/feedback-api.ts","ng://@mtgame/core/api/file-api.ts","ng://@mtgame/core/models/football-game-log.ts","ng://@mtgame/core/models/hockey-game-statistic.ts","ng://@mtgame/core/models/hockey-statistic.ts","ng://@mtgame/core/models/hockey-game-team-statistic.ts","ng://@mtgame/core/api/hockey-game-api.ts","ng://@mtgame/core/models/handball-game-log.ts","ng://@mtgame/core/models/football-game-statistic.ts","ng://@mtgame/core/models/football-statistic.ts","ng://@mtgame/core/models/football-game-team-statistic.ts","ng://@mtgame/core/api/football-game-api.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/handball-game-statistic.ts","ng://@mtgame/core/models/handball-statistic.ts","ng://@mtgame/core/models/handball-game-team-statistic.ts","ng://@mtgame/core/api/handball-game-api.ts","ng://@mtgame/core/models/tournament-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/league-news.ts","ng://@mtgame/core/models/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/models/tournament-event.ts","ng://@mtgame/core/models/league-user.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/league-banner.ts","ng://@mtgame/core/models/league-partner.ts","ng://@mtgame/core/models/poll.ts","ng://@mtgame/core/api/league-api.ts","ng://@mtgame/core/api/league-news-api.ts","ng://@mtgame/core/api/media-api.ts","ng://@mtgame/core/models/game-invite.ts","ng://@mtgame/core/models/team-invite.ts","ng://@mtgame/core/models/team-event-type.ts","ng://@mtgame/core/models/team-event-invite.ts","ng://@mtgame/core/localization/team-event-type.ts","ng://@mtgame/core/models/team-event.ts","ng://@mtgame/core/models/notification.ts","ng://@mtgame/core/models/tournament-team-user-invite.ts","ng://@mtgame/core/models/tournament-invite.ts","ng://@mtgame/core/models/notification-settings.ts","ng://@mtgame/core/models/team-permission.ts","ng://@mtgame/core/api/notification-base-api.ts","ng://@mtgame/core/api/notification-api.ts","ng://@mtgame/core/api/org-notification-api.ts","ng://@mtgame/core/api/reference-api.ts","ng://@mtgame/core/models/team-invite-external.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/models/team-access.ts","ng://@mtgame/core/api/team-api.ts","ng://@mtgame/core/api/team-event-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-api.ts","ng://@mtgame/core/api/tournament-season-api.ts","ng://@mtgame/core/api/tournament-stage-api.ts","ng://@mtgame/core/models/user-access.ts","ng://@mtgame/core/models/volleyball-game-log.ts","ng://@mtgame/core/api/user-api.ts","ng://@mtgame/core/models/volleyball-game-team-statistic.ts","ng://@mtgame/core/models/volleyball-game-statistic.ts","ng://@mtgame/core/api/volleyball-game-api.ts","ng://@mtgame/core/api/public-team-api.ts","ng://@mtgame/core/api/public-user-api.ts","ng://@mtgame/core/localization/basketball-game-log-types.ts","ng://@mtgame/core/localization/hockey-game-log-types.ts","ng://@mtgame/core/localization/football-game-log-types.ts","ng://@mtgame/core/localization/handball-game-log-types.ts","ng://@mtgame/core/localization/overtime-types.ts","ng://@mtgame/core/localization/team-user-role.ts","ng://@mtgame/core/localization/user-profile.ts","ng://@mtgame/core/localization/volleyball-game-log-types.ts","ng://@mtgame/core/models/league-playlist.ts","ng://@mtgame/core/services/centrifugo.service.ts","ng://@mtgame/core/storage/storage-engine.ts","ng://@mtgame/core/storage/local-storage-engine.ts","ng://@mtgame/core/utils/cookie.ts","ng://@mtgame/core/utils/favicon.ts","ng://@mtgame/core/http-cookie.interceptor.ts","ng://@mtgame/core/utils/component-destroyed.ts","ng://@mtgame/core/utils/validators.ts","ng://@mtgame/core/utils/enum.ts","ng://@mtgame/core/utils/errors.ts","ng://@mtgame/core/utils/device.ts","ng://@mtgame/core/utils/form.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","HockeyPenaltyTypes","id","code","title","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","penaltyTypeField","find","item","listField","modelClass","isArray","DateField","_super","date","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","slice","DateTimeField","ModelInstance","config","mappingFields","relation","path","modelType","map","instance","backField","frontField","extractValue","undefined","FileEngine","ToFrontHook","descriptor","args","_i","parseMethod","ToBackHook","keyParts","split","keyParts_1","keyParts_1_1","k","SportTypes","File","_originalName","name","resizedPath","_path","filePath","file","original_name","resized_path","mime_type","size","engine","created_at","createdAt","GameBasketballPosition","WorkHand","Sport","isBasketball","basketball","parentId","isClassicBasketball","classic_basketball","isStreetball","streetball","isVolleyball","volleyball","isClassicVolleyball","classic_volleyball","isBeachVolleyball","beach_volleyball","isHockey","hockey","isIceHockey","ice_hockey","isBallHockey","ball_hockey","isFootball","football","isClassicFootball","classic_football","isMiniFootball","mini_football","isHandball","handball","isHandballClassic","handball_classic","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","GameFootballPosition","FootballWorkFoot","HockeyProfile","GameHandballPosition","FootballProfile","work_foot","workFoot","UserGender","HandballProfile","TournamentSeasonStatuses","User","user","lastName","firstName","filter","join","substr","birthDate","diff","getTime","Math","floor","last_name","first_name","middle_name","email","phone","birth_date","photo","profile","basketball_profile","volleyball_profile","hockey_profile","football_profile","handball_profile","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","footballProfile","handballProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","_this","documents","socialLinks","link","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","cover","about","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","VolleyballStatisticTypes","GameTimeTypes","OvertimeTypes","TournamentSeason","preview_image","status","start_date","closed_date","tournaments","previewImage","startDate","closedDate","VolleyballGameTypes","TournamentSettings","age_from","age_to","max_team_players","max_game_players","type","tours_count","periods_count","period_time","overtime_type","overtime_time","overtime_score","game_type","timeout_count","timeout_time","substitute_count","game_up_to_score","volleyball_score_in_set","volleyball_score_in_last_set","manage_team_application","recruitment_is_open","transfer_is_open","basketball_statistic_type","volleyball_statistic_type","shot_clock_enabled","game_time_type","with_result_table","basketballStatisticType","volleyballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","location","price","regulation_files","settings","league","teams_count","team_winner","team_second","team_third","season","season_id","regulationFile","teamWinner","teamSecond","teamThird","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","GameStatuses","GameResultTypes","VolleyballGameConfig","gameType","best_of_three","getSetMaxScore","set","setsCount","scoreInLastSet","scoreInSet","score_in_set","score_in_last_set","LeagueCourt","address","league_id","MediaItem","Boolean","videoUrl","original_photo","list_photo","detail_photo","game","tournament","game_id","video_url","video_preview","is_live","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","FootballGameConfig","HandballGameConfig","Game","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","tournament_team_id","competitor_team","competitor_tournament_team_id","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","basketball_game_config","volleyball_game_config","hockey_game_config","football_game_config","handball_game_config","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media_live_count","media","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","footballGameConfig","handballGameConfig","tournamentCourt","updateItemInArray","force","checkFunction","isFunction","updatedAt","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","TeamUserRole","Store","get","getSubject","pipe","save","appendItem","appendItems","prependItem","prependItems","updateItem","updateItems","deleteItem","dispose","complete","clearStorageData","clear","getEngine","BehaviorSubject","BaseService","store","Injectable","providedIn","ConfigService","configData","initialize","_a","Optional","Inject","TournamentGroup","TournamentTeam","gamesCount","wonGamesCount","group","final_standing","draw_games_count","last_games_count","last_games_won","missed_sum","score_points_sum","missed_points_sum","games","notifications_count","win_normal_time_games_count","lose_normal_time_games_count","win_overtime_games_count","lose_overtime_games_count","last_five_games","lastFiveGames","BasketballGameLogTypes","TeamUser","teamPlayer","role","number","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","LeaguePlayer","middleName","has_changes","rating","TournamentTeamUser","tournament_team","team_user","disqualified","disqualification","league_player","tournamentTeam","teamUser","leaguePlayer","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","gameTime","tournament_team_user","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","game_time","newbie","rank","tournamentTeamUser","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","updated_at","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","indexOf","logType","isReboundType","rebound","offensive_rebound","defensive_rebound","isFoulType","personal_foul","technical_foul","unsportsmanlike_foul","getScore","compare","model","time","minutes","seconds","unique_id","log_type","is_highlight","GameUser","is_mvp","GameBaseApi","httpClient","configService","getUsers","gameId","toPromise","getMvp","HttpClient","BasketballGameApi","getById","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","responseType","downloadFibaProtocol","Feedback","theme","message","files","captcha","FeedbackApi","sendFeedback","post","response","sendLeagueFeedback","leagueId","FileApi","upload","fileData","filename","width","params","HttpParams","formData","FormData","append","createZipArchive","files_1","files_1_1","FootballGameLogTypes","HockeyGameLog","_penalizedGameUserId","isScoreType","goal","shootout_goal","isPenaltyType","minor_penalty","major_penalty","misconduct_penalty","game_misconduct_penalty","penalty_shot","match_penalty","isAfter","log","advantage","advantage_num","is_goalie","penalty_type","penalized_game_user_id","mutual_penalty","penaltyType","HockeyGameStatistic","evShotsOnGoal","ppShotsOnGoal","shShotsOnGoal","evShotsBlocked","ppShotsBlocked","shShotsBlocked","evShotMisses","ppShotMisses","shShotMisses","ppShots","evShots","shShots","ppGoals","shGoals","evGoals","ppAssists","evAssists","shAssists","faceOffWins","faceOffLosses","shootoutAttempts","shootoutGoals","saves","goalsAgainst","shotsAgainst","round","pp_shot_misses","pp_shots_on_goal","pp_shots_blocked","ev_shot_misses","ev_shots_on_goal","ev_shots_blocked","sh_shot_misses","sh_shots_on_goal","sh_shots_blocked","pp_goals","ev_goals","sh_goals","pp_assists","ev_assists","sh_assists","shootout_attempts","shootout_goals","block_shots","face_off_losses","face_off_wins","goals_against","safety_rate","penalty_minutes","plus_minus","HockeyStatistic","lose_games_count","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","goals","shot_misses","shots_on_goal","shots_blocked","shots","goals_percent","shots_against","saves_percent","face_offs","face_off_percent","HockeyGameTeamStatistic","HockeyGameApi","format","downloadApplication","HandballGameLogTypes","FootballGameLog","penalty_goal","small_penalty_goal","FootballGameStatistic","shotMisses","shotsOnGoal","shotsBlocked","penaltyGoals","smallPenaltyGoals","totalGoals","penaltyAttempts","smallPenaltyAttempts","penaltySaves","penaltyGoalsAgainst","smallPenaltySaves","smallPenaltyGoalsAgainst","penaltyShotsAgainst","smallPenaltyShotsAgainst","corners","free_kicks","penalty_goals","penalty_attempts","penalty_goals_against","penalty_saves","small_penalty_goals","small_penalty_attempts","small_penalty_goals_against","small_penalty_saves","fouls","yellow_cards","red_cards","perfect_passes","losses","outs","FootballStatistic","shots_on_goal_percent","total_goals","penalty_goals_percent","penalty_shots_against","penalty_saves_percent","small_penalty_goals_percent","small_penalty_shots_against","small_penalty_saves_percent","total_saves","total_goals_against","FootballGameTeamStatistic","FootballGameApi","TournamentStageStatuses","HandballGameLog","foul","yellow_card","red_card","HandballGameStatistic","penaltyShotsOnGoal","penaltyMisses","penaltyShots","penalty_misses","penalty_shots_on_goal","yellowCards","two_minute_fouls","HandballStatistic","penalty_shots","HandballGameTeamStatistic","HandballGameApi","TournamentNews","picture","text","author","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","stages","PlayoffTypes","TournamentStage","generateArray","LeagueNewsType","PlayoffSettings","rounds","final_rounds","third_place_rounds","Playoff","teamsCount","getPlayoffStages","stagesCount","stage","playoffStage","pow","is_official","VolleyballStatistic","serve_hits","serve_faults","serve_aces","serve_percent","ace_percent","stuff_blocks","block_faults","block_rebounds","block_percent","attack_spikes","attack_faults","attack_shots","attack_percent","receives","receive_faults","excellent_receives","receive_percent","serve_receives","serve_receive_faults","excellent_serve_receives","serve_receive_percent","faults","TournamentStageTeam","received_points","TournamentEventTypes","LeagueNews","preview_text","detail_text","mobile_picture","is_main","video_link","tag","mobilePicture","LeagueUserRoles","LeagueUserPermissions","TournamentEvent","news","event","LeagueUser","_role","permissions","TournamentApi","tournamentId","getByAlias","getNews","getEvents","page","filters","search","tournamentTour","observe","total","headers","getTournamentStages","getPlayoff","getPlayoffGames","playoffId","getGamesStages","getGames","applyGamesFilters","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatisticLeaders","applyStatisticLeadersFilters","getVolleyballStatisticLeaders","getHockeyStatisticLeaders","getFootballStatisticLeaders","getHandballStatisticLeaders","getBasketballStatistic","per_game","tournament_ids","getVolleyballStatistic","getHockeyStatistic","getFootballStatistic","getHandballStatistic","getTournamentTeamUsers","myPermission","getTournamentTeamTournaments","getTournamentUserTournaments","tournamentTeamUserId","tournamentIds","tournamentStageId","statuses","tournamentCourtId","query","fields","BannerLocation","LeaguePartner","sort","PollStatuses","LeagueBanner","LeagueApi","getByDomain","domain","getTournaments","getTournamentSeasons","getSeasons","notClosed","include","getPartners","getBanners","getCourts","getGraphicSettings","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getMainLeagueNewsList","getNewsById","newsId","getTournamentNewsList","MediaApi","getMedia","mediaId","getTournamentGameMedia","applyGameMediaFilters","getLeagueGameMedia","getLeagueMedia","mediaType","getGameMediaById","getGameMedia","createZip","mediaIds","downloadMedia","mediaCount","GameInviteStatus","PollVariant","uuid","PollAnswer","answer_uuid","poll_id","Poll","variantsWithAnswers","_variants","_answers","calculateAnswersPercentage","variants","answersByVariant","reduce","acc","answerUuid","variant","percent","a","answers","multiple_answer","anonymous","TeamInvite","user_accept","team_accept","updateAt","TeamEventTypes","GameInvite","TeamEventInviteStatuses","TeamEventTypeLocalization","training","other","TeamEvent","eventType","eventCustomName","event_type","event_custom_name","NotificationType","NotificationServiceEnum","TeamEventInvite","team_event_id","team_user_id","TournamentTeamUserInvite","tournament_team_invite_id","accepted","TournamentInvite","teamAccept","organizationAccept","organization_accept","user_invites_count","user_invites","userInvites","NotificationAllowTypes","Notification","initiator","team_invite","poll","game_invite","team_event","team_event_invite","tournament_invite","viewed","protected","service","teamInvite","gameInvite","teamEvent","teamEventInvite","tournamentInvite","TeamPermissionTypes","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","TeamInviteExternal","UserPermissionTypes","TeamPermission","players","statistic","polls","events","TeamAccess","can_edit","can_view_users","can_manage_permission","can_change_owner","can_delete","can_manage_invites","can_view_invites","can_manage_polls","can_view_polls","can_answer_poll","can_manage_games","can_view_games","can_view_statistic","can_promote_users","can_edit_users","can_delete_users","can_view_events","can_manage_events","can_view_tournaments","can_manage_tournaments","TeamApi","sportId","getTeamAccess","update","values","patch","delete","getPermission","updatePermission","permission","updateUserRole","teamUserId","updateUserNumber","gameNumber","deleteUser","changeOwner","getInvites","sendInvite","acceptInvite","invite","declineInvite","resendInvite","getInvitesExternal","sendInviteExternal","deleteInviteExternal","resendInviteExternal","getPolls","archive","createPoll","getUsersStatistic","joinTeam","leaveTeam","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentJoinData","validUsersCount","invalidUsersCount","hasAccess","inviteSent","alreadyInTournament","valid_users_count","invalid_users_count","has_access","invite_sent","already_in_tournament","TournamentJoinTeam","join_data","joinData","TournamentJoinApi","getTeamsForJoin","getTeamUsers","joinTournament","invites","TournamentSeasonApi","seasonId","TournamentStageApi","getGroups","stageId","getPlayoffs","UserAccess","edit","personal_data","teams","VolleyballGameLogType","UserPermission","personalData","UserApi","getCurrentUser","getAccess","updateUser","updateUserPhoto","changePassword","oldPassword","password","passwordConfirm","payload","old_password","password_confirm","changeEmail","changeEmailConfirm","token","getUserProfile","getBasketballProfile","getVolleyballProfile","updateUserProfile","userProfile","updateUserBasketballProfile","updateUserVolleyballProfile","getUserPermissions","updateUserPermission","getStatistics","getStreetballStatistics","getGameInvites","acceptGameInvite","declineGameInvite","searchUsers","setWizardShowed","wizard","put","VolleyballGameTeamStatistic","VolleyballGameStatistic","attackSpikes","attackShots","stuffBlocks","blockRebounds","excellentReceives","SCORE_LOG_TYPES","serve_ace","stuff_block","attack_spike","point","FAULT_LOG_TYPES","serve_fault","attack_fault","block_fault","receive_fault","fault","serve_receive_fault","VolleyballGameLog","rally","includes","isFaultType","isServe","serve_hit","isAttack","attack_shot","isReceive","receive","excellent_receive","isServeReceive","serve_receive","excellent_serve_receive","isBlock","block_rebound","isEnterExit","enter_game","exit_game","timeout","isComboType","VolleyballGameApi","PublicTeamApi","PublicUserApi","getTournamentUser","BasketballGameLogTypeLocalization","_a$1","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","team_rebound","HockeyGameLogTypeLocalization","_a$2","shot_miss","shot_on_goal","shot_blocked","shootout_attempt","block_shot","face_off_lose","face_off_win","penalty_start","penalty_end","FootballGameLogTypeLocalization","_a$3","penalty_attempt","small_penalty_attempt","corner","free_kick","penalty_save","small_penalty_save","perfect_pass","loss","out","HandballGameLogTypeLocalization","_a$4","penalty_miss","penalty_shot_on_goal","two_minute_foul","OvertimeTypeLocalization","_a$5","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","penalties","time_and_penalties","TeamUserRoleLocalization","_a$6","member","moderator","admin","coach","head_coach","playing_coach","manager","head_manager","captain","assistant","GameBasketballPositionLocalization","_a$7","point_guard","shooting_guard","small_forward","power_forward","center","GameBasketballPositionShortLocalization","WorkHandLocalization","left","right","GameVolleyballPositionLocalization","_d","setter","libero","middle_player","receiver_attacker","dioganal","GameVolleyballPositionShortLocalization","_e","GameVolleyballPositionShortRuLocalization","_f","VolleyballWorkHandLocalization","_g","GameHockeyPositionLocalization","_h","goaltender","defensemen","forward","GameFootballPositionLocalization","_j","goalkeeper","midfielder","FootballWorkFootLocalization","_k","both","GameHandballPositionLocalization","_l","winger","pivot","centre_back","fullback","VolleyballGameLogTypeLocalization","_a$8","LeaguePlaylist","key_code","CentrifugoService","channels$","subscriptions","connectedSubject","listen","channel","Subject","subscription","connect","subscribe","connected","addEngineSubscription","setTimeout","unsubscribe","initializeEngineSubject","ReplaySubject","initializeEngine","url","timestamp","transports","centrifuge","on","publish","Observable","observer","res","disconnect","Centrifuge","resolveMessage","bind","StorageEngineField","defaultValue","StorageEngine","addField","field","setItem","getItem","removeItem","Error","LocalStorageEngine","localStorage","JSON","stringify","parse","getCookie","parts","document","cookie","shift","getIconsData","folder","rel","sizes","href","color","HttpCookieInterceptor","injector","platformId","isBrowser","isPlatformBrowser","intercept","req","handle","clone","withCredentials","csrf","setHeaders","X-CSRFToken","Injector","PLATFORM_ID","cmpType","def","ɵcmp","ɵdir","original","onDestroy","__componentDestroyed$","leagueAlias","data_1","data_1_1","createElement","e_2","setAttribute","head","appendChild","component","maxFileSize","control","array","chunks","chunkLength","ceil","production","captureException","console","prefixes","window","DocumentTouch","q","matchMedia","matches","markFormGroupTouched","formGroup","controls","markAsTouched","markAsDirty","FormGroup","minLength","minLengthArray","valid","test","invalidDate","authService","selfCheck","ignore","subject","of","delay","switchMap","checkEmail","emailTaken","replace","invalidPhone","invalidUrl"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export const HockeyPenaltyTypes = [\n {id: 1, code: 'ÐÐÐ ÐС', title: 'ÐгÑеÑÑÐ¾Ñ Ð² дÑаке'},\n {id: 2, code: 'ÐТ-Ð-ÐÐÐ', title: 'ÐÑака в Ð³Ð¾Ð»Ð¾Ð²Ñ Ð¸Ð»Ð¸ ÑеÑ'},\n {id: 3, code: 'ÐТ-ÐÐ ', title: 'ÐÑака вÑаÑаÑÑ'},\n {id: 4, code: 'ÐТ-СÐ', title: 'ÐÑака Ñзади'},\n {id: 5, code: 'ÐÐÐÐ', title: 'ÐлокиÑовка'},\n {id: 6, code: 'ÐÐ -ÐÐ', title: 'ÐÑоÑок клÑÑки'},\n {id: 7, code: 'ÐÐ-ШÐ', title: 'ÐÑбÑÐ¾Ñ ÑайбÑ'},\n {id: 8, code: 'ÐРУÐ', title: 'ÐÑÑбоÑÑÑ'},\n {id: 9, code: 'ÐÐСЦ', title: 'ÐиÑÑиплинаÑнÑй ÑÑÑаÑ'},\n {id: 10, code: 'ÐÐС-ÐÐ', title: 'ÐиÑÑиплинаÑнÑй до конÑа маÑÑа'},\n {id: 11, code: 'ÐÐ ÐÐÐ', title: 'ÐÑака'},\n {id: 12, code: 'ÐÐЧÐÐ', title: 'ÐаÑинÑик дÑаки'},\n {id: 13, code: 'ÐÐ-ÐÐ', title: 'ÐадеÑжка игÑÑ'},\n {id: 14, code: 'ÐÐ-ÐÐ-СÐ', title: 'ÐадеÑжка клÑÑки ÑопеÑника'},\n {id: 15, code: 'ÐÐ-ÐÐ', title: 'ÐадеÑжка клÑÑкой'},\n {id: 16, code: 'ÐÐ-СÐ', title: 'ÐадеÑжка ÑопеÑника'},\n {id: 17, code: 'ÐÐ-ШÐ', title: 'ÐадеÑжка ÑÐ°Ð¹Ð±Ñ ÑÑками'},\n {id: 18, code: 'СÐ-ÐÐ', title: 'ÐгÑа Ñо Ñломанной клÑÑкой'},\n {id: 19, code: 'ÐÐ-ÐÐ', title: 'ÐгÑа вÑÑоко поднÑÑой клÑÑкой'},\n {id: 20, code: 'ÐÐ-УÐ', title: 'ÐолÑÑий ÑдаÑ'},\n {id: 21, code: 'СÐ-ШТ', title: 'ÐалÑй ÑкамееÑнÑй ÑÑÑаÑ'},\n {id: 22, code: 'ÐШ', title: 'ÐаÑÑ-ÑÑÑаÑ'},\n {id: 23, code: 'ÐÐ-ÐТ', title: 'ÐепÑавилÑÐ½Ð°Ñ Ð°Ñака'},\n {id: 24, code: 'ЧС-СТ', title: 'ÐаÑÑÑение ÑиÑленного ÑоÑÑава'},\n {id: 25, code: 'ÐС-ÐÐ', title: 'ÐеÑÑандаÑÑÐ½Ð°Ñ ÐºÐ»ÑÑка'},\n {id: 26, code: 'ÐÐÐ -ÐÐ', title: 'ÐпаÑное ÑнаÑÑжение'},\n {id: 27, code: 'ÐС-ÐÐ', title: 'ÐÑкоÑбление ÑÑдей и неÑпоÑÑивное поведение'},\n {id: 28, code: 'ÐТ-ÐÐ', title: 'ÐÑказ наÑаÑÑ Ð¸Ð³ÑÑ'},\n {id: 29, code: 'ÐТСЧ', title: 'ÐÑÑеÑение'},\n {id: 30, code: 'ÐÐÐÐÐÐ', title: 'Ðлевок'},\n {id: 31, code: 'ÐÐÐÐ', title: 'Ðодножка'},\n {id: 32, code: 'ÐÐÐС', title: 'ÐодÑеÑка'},\n {id: 33, code: 'ÐÐ -ÐÐ', title: 'ÐÑедÑпÑеждение инÑекÑий'},\n {id: 34, code: 'ÐÐ-СÐ', title: 'Ðокидание Ñкамейки во вÑÐµÐ¼Ñ ÐºÐ¾Ð½ÑликÑа'},\n {id: 35, code: 'СÐ-ÐÐ ', title: 'Сдвиг воÑоÑ'},\n {id: 36, code: 'СÐÐ', title: 'СимÑлÑÑиÑ'},\n {id: 37, code: 'ТÐ-ÐÐ ', title: 'ТолÑок на боÑÑ'},\n {id: 38, code: 'ТÐ-ÐÐ', title: 'ТолÑок клÑÑкой'},\n {id: 39, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ Ð³Ð¾Ð»Ð¾Ð²Ð¾Ð¹'},\n {id: 40, code: 'УÐ-ÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ»ÑÑкой'},\n {id: 41, code: 'УÐ-Ð-ÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ¾Ð½Ñом клÑÑки'},\n {id: 42, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ¾Ð»ÐµÐ½Ð¾Ð¼'},\n {id: 43, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ Ð»Ð¾ÐºÑем'},\n {id: 44, code: 'УÐ-ÐÐ', title: 'Ð£Ð´Ð°Ñ Ð½Ð¾Ð³Ð¾Ð¹'},\n {id: 45, code: 'УÐУС', title: 'УкÑÑ'},\n {id: 46, code: 'ÐÐ-ÐÐ ', title: 'ФизиÑеÑкий конÑÐ°ÐºÑ Ñо зÑиÑелем'},\n {id: 47, code: 'ШТ-ÐÐ ', title: 'ШÑÑÐ°Ñ Ð²ÑаÑаÑÑ'}\n];\n","import { HockeyPenaltyTypes } from '../localization/hockey-penalty-types';\n\nexport const MODEL_MAPPING_FIELDS_KEY = '_mapping_fields_';\nexport const MODEL_RELATION_KEY = '_relation_';\nexport const MODEL_TO_FRONT_KEY = '_to_front_';\nexport const MODEL_TO_BACK_KEY = '_to_back_';\n\ntype ParserInterface = (dto: any, path?: GraphPathInterface) => any;\n\ninterface ModelTypeInterface {\n new(data?: any);\n}\n\nexport interface ModelInterface {\n toFront(dto: any): any;\n toBack(dto: any): any;\n}\n\nexport abstract class BaseModel {\n constructor(data?: {[key: string]: any}) {\n if (data) {\n for (const key of Object.keys(data)) {\n this[key] = data[key];\n }\n }\n }\n\n static toFront(dto: any): any {\n return undefined;\n }\n\n static toBack(dto: any): any {\n return undefined;\n }\n}\n\ninterface GraphPathInterface {\n [key: string]: any;\n}\n\nexport function enumField(enumClass) {\n return {\n toFront: (value) => {\n if (isNaN(+value)) {\n return enumClass[value];\n } else {\n return value;\n }\n },\n toBack: (value) => {\n if (isNaN(+value)) {\n return value;\n } else {\n return enumClass[value];\n }\n }\n };\n}\n\nexport function penaltyTypeField() {\n return {\n toFront: (data) => {\n if (!data) {\n return null;\n }\n if (typeof data === 'object') {\n return data;\n }\n return HockeyPenaltyTypes.find(item => item.id === data);\n },\n toBack: (data) => {\n if (!data) {\n return null;\n }\n if (typeof data === 'object') {\n return data.id;\n }\n return data;\n }\n };\n}\n\nexport function listField(modelClass) {\n return {\n toFront: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return modelClass.toFront(value);\n },\n toBack: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return modelClass.toBack(value);\n }\n };\n}\n\nexport class DateField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return dateUtc.toISOString().slice(0, 10);\n } else {\n return undefined;\n }\n }\n}\n\nexport class DateTimeField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return date.toISOString();\n } else {\n return undefined;\n }\n }\n}\n\nexport function ModelInstance(\n config: {\n mappingFields?: { [key: string]: string },\n relation?: { [key: string]: BaseModel }\n }\n) {\n return (target: ModelTypeInterface) => {\n if (config) {\n if (config.mappingFields) {\n target[MODEL_MAPPING_FIELDS_KEY] = config.mappingFields;\n }\n if (config.relation) {\n target[MODEL_RELATION_KEY] = config.relation;\n }\n target[MODEL_TO_FRONT_KEY] = (dto: any, path: GraphPathInterface) => {\n return toFront(target, dto, path);\n };\n target[MODEL_TO_BACK_KEY] = (dto: any, path: GraphPathInterface) => {\n return toBack(target, dto, path);\n };\n }\n };\n}\n\nexport const ToFrontHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_FRONT_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0], (args.length > 1 ? args[1] : undefined));\n }\n return undefined;\n }\n };\n};\n\nexport const ToBackHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_BACK_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0]);\n }\n return undefined;\n }\n };\n};\n\nfunction extractValue(key, data) {\n if (!data) {\n return undefined;\n }\n\n const keyParts = key.split('.');\n if (keyParts.length === 1) {\n if (key in data) {\n return data[key];\n } else {\n return undefined;\n }\n }\n\n for (const k of keyParts) {\n if (data && k in data) {\n data = data[k];\n } else {\n return undefined;\n }\n }\n\n return data;\n}\n\nfunction toFront(modelType: ModelTypeInterface, data: any, path?: GraphPathInterface): any {\n // Check if recursion is required\n if (Array.isArray(data)) {\n return data.map(item => {\n return toFront(modelType, item);\n });\n }\n\n const instance = new modelType();\n\n // Mapping fields\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n const value = extractValue(backField, data);\n if (relation && relation.hasOwnProperty(frontField)) {\n instance[frontField] = relation[frontField].toFront(value);\n } else {\n instance[frontField] = value;\n }\n }\n }\n\n return instance;\n}\n\nfunction toBack(modelType: ModelTypeInterface, instance: any, path?: GraphPathInterface): any {\n if (!instance) {\n return instance;\n }\n\n // Check if recursion is required\n if (Array.isArray(instance)) {\n return instance.map(item => {\n return toBack(modelType, item);\n });\n }\n\n const data = {};\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n if (relation && relation.hasOwnProperty(frontField) && instance[frontField] !== undefined) {\n data[backField] = relation[frontField].toBack(instance[frontField]);\n } else {\n data[backField] = instance[frontField];\n }\n }\n }\n\n return data;\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n original_name: 'originalName',\n path: 'path',\n resized_path: 'resizedPath',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n created_at: 'createdAt',\n },\n relation: {\n engine: enumField(FileEngine),\n createdAt: DateTimeField,\n }\n})\nexport class File {\n id: number;\n name: string;\n _originalName: string;\n _path: string;\n resizedPath: string;\n mimeType: string;\n size: number;\n engine: FileEngine;\n createdAt: Date;\n\n set originalName(name: string) {\n this._originalName = name;\n }\n\n get originalName(): string {\n return this._originalName || this.name;\n }\n\n set path(filePath: string) {\n this._path = filePath;\n }\n\n get path(): string {\n return this.resizedPath || this._path;\n }\n\n @ToFrontHook\n static toFront(data: any): File {\n return null;\n }\n\n @ToBackHook\n static toBack(file: File): any {\n return null;\n }\n}\n","import {ModelInstance, ToFrontHook, ToBackHook, BaseModel} from './util';\n\nexport enum SportTypes {\n basketball = 1,\n volleyball = 2,\n classic_basketball = 3,\n streetball = 4,\n classic_volleyball = 5,\n beach_volleyball = 6,\n hockey = 7,\n ice_hockey = 8,\n ball_hockey = 9,\n football = 10,\n classic_football = 11,\n mini_football = 12,\n handball = 13,\n handball_classic = 14\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n parent_id: 'parentId',\n sub_sports: 'subSports'\n }\n})\nexport class Sport extends BaseModel {\n id: number;\n name: string;\n parentId: number;\n subSports: Sport[];\n\n isBasketball() {\n return this.id === SportTypes.basketball || this.parentId === SportTypes.basketball;\n }\n\n isClassicBasketball() {\n return this.id === SportTypes.classic_basketball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\n }\n\n isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isClassicVolleyball() {\n return this.id === SportTypes.classic_volleyball;\n }\n\n isBeachVolleyball() {\n return this.id === SportTypes.beach_volleyball;\n }\n\n isHockey(): boolean {\n return this.id === SportTypes.hockey || this.parentId === SportTypes.hockey;\n }\n\n isIceHockey(): boolean {\n return this.id === SportTypes.ice_hockey;\n }\n\n isBallHockey(): boolean {\n return this.id === SportTypes.ball_hockey;\n }\n\n isFootball() {\n return this.id === SportTypes.football || this.parentId === SportTypes.football;\n }\n\n isClassicFootball() {\n return this.id === SportTypes.classic_football;\n }\n\n isMiniFootball() {\n return this.id === SportTypes.mini_football;\n }\n\n isHandball() {\n return this.id === SportTypes.handball || this.parentId === SportTypes.handball;\n }\n\n isHandballClassic() {\n return this.id === SportTypes.handball_classic;\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(sport: Sport): any {\n return null;\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameBasketballPosition {\n point_guard = 1,\n shooting_guard,\n small_forward,\n power_forward,\n center\n}\n\nexport enum WorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameBasketballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class BasketballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameBasketballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n height: 'height',\n weight: 'weight'\n }\n})\nexport class UserProfile {\n id: number;\n userId: number;\n height: number;\n weight: number;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name'\n }\n})\nexport class City extends BaseModel {\n id: number;\n name: string;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameVolleyballPosition {\n setter = 1,\n libero,\n middle_player,\n receiver_attacker,\n dioganal\n}\n\nexport enum VolleyballWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameVolleyballPosition),\n workHand: enumField(VolleyballWorkHand)\n }\n})\nexport class VolleyballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameVolleyballPosition;\n workHand: VolleyballWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameHockeyPosition {\n defensemen = 1,\n forward,\n goaltender\n}\n\nexport enum HockeyWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHockeyPosition),\n workHand: enumField(HockeyWorkHand)\n }\n})\nexport class HockeyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHockeyPosition;\n workHand: HockeyWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameFootballPosition {\n defensemen = 1,\n midfielder,\n forward,\n goalkeeper\n}\n\nexport enum FootballWorkFoot {\n left = 1,\n right,\n both\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_foot: 'workFoot'\n },\n relation: {\n position: enumField(GameFootballPosition),\n workFoot: enumField(FootballWorkFoot)\n }\n})\nexport class FootballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameFootballPosition;\n workFoot: FootballWorkFoot;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { WorkHand } from './basketball-profile';\n\nexport enum GameHandballPosition {\n goalkeeper = 1,\n winger,\n pivot,\n centre_back,\n fullback\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHandballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class HandballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHandballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, DateField, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { UserProfile } from './user-profile';\nimport { File } from './file';\nimport { City } from './city';\nimport { BasketballProfile } from './basketball-profile';\nimport { VolleyballProfile } from './volleyball-profile';\nimport { HockeyProfile } from './hockey-profile';\nimport { FootballProfile } from './football-profile';\nimport { HandballProfile } from './handball-profile';\n\nexport enum UserGender {\n male = 1,\n female\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n last_name: 'lastName',\n first_name: 'firstName',\n middle_name: 'middleName',\n email: 'email',\n phone: 'phone',\n birth_date: 'birthDate',\n photo: 'photo',\n profile: 'profile',\n basketball_profile: 'basketballProfile',\n volleyball_profile: 'volleyballProfile',\n hockey_profile: 'hockeyProfile',\n football_profile: 'footballProfile',\n handball_profile: 'handballProfile',\n wizards: 'wizards',\n city: 'city',\n gender: 'gender',\n is_active: 'isActive',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n profile: UserProfile,\n basketballProfile: BasketballProfile,\n volleyballProfile: VolleyballProfile,\n hockeyProfile: HockeyProfile,\n footballProfile: FootballProfile,\n handballProfile: HandballProfile,\n city: City,\n gender: enumField(UserGender)\n }\n})\nexport class User extends BaseModel {\n id: number;\n lastName: string;\n firstName: string;\n middleName: string;\n email: string;\n phone: string;\n birthDate: Date;\n profile: UserProfile;\n basketballProfile: BasketballProfile;\n volleyballProfile: VolleyballProfile;\n hockeyProfile: HockeyProfile;\n footballProfile: FootballProfile;\n handballProfile: HandballProfile;\n photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, enumField, DateField } from './util';\nimport { File } from './file';\n\nexport enum TournamentSeasonStatuses {\n open,\n in_progress,\n closed,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n status: 'status',\n start_date: 'startDate',\n closed_date: 'closedDate',\n tournaments: 'tournaments',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n status: enumField(TournamentSeasonStatuses),\n startDate: DateField,\n closedDate: DateField,\n }\n})\nexport class TournamentSeason extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n status: TournamentSeasonStatuses;\n startDate: Date;\n closedDate: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateField } from './util';\nimport { File } from './file';\nimport { Sport } from './sport';\nimport { User } from './user';\nimport { City } from './city';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sport: 'sport',\n logo: 'logo',\n owner: 'owner',\n city: 'city',\n users_count: 'usersCount',\n won_games_count: 'wonGamesCount',\n games_count: 'gamesCount',\n score_sum: 'scoreSum',\n closest_game_datetime: 'closestGameDatetime',\n },\n relation: {\n sport: Sport,\n logo: File,\n owner: User,\n city: City,\n closestGameDatetime: DateField,\n }\n})\nexport class Team extends BaseModel {\n id: number;\n name: string;\n sport: Sport;\n logo: File;\n owner: User;\n city: City;\n usersCount: number;\n wonGamesCount: number;\n gamesCount: number;\n scoreSum: number;\n closestGameDatetime: Date;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n if (this.sport.isHandball()) {\n classList.push('empty-logo-handball');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(team: Team): any {\n return null;\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n owner_id: 'ownerId',\n owner: 'owner',\n },\n relation: {\n owner: User,\n }\n})\nexport class Organization extends BaseModel {\n id: number;\n ownerId: number;\n owner: User;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n logo: 'logo',\n contact_email: 'contactEmail',\n contact_phone: 'contactPhone',\n name: 'name',\n alias: 'alias',\n sport: 'sport',\n description: 'description',\n social_links: 'socialLinks',\n links: 'links',\n organization: 'organization',\n tournaments_count: 'tournamentsCount',\n closest_game_datetime: 'closestGameDatetime',\n cover: 'cover',\n about: 'about',\n documents: 'documents',\n },\n relation: {\n organization: Organization,\n logo: File,\n cover: File,\n sport: Sport,\n documents: listField(File),\n }\n})\nexport class League extends BaseModel {\n id: number;\n logo: File;\n contactEmail: string;\n contactPhone: string;\n name: string;\n alias: string;\n sport: Sport;\n description: string;\n socialLinks: string[];\n links: string[];\n organization: Organization;\n tournamentsCount: number;\n closestGameDatetime: string;\n cover: File;\n about: string;\n documents: File[] = [];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get vkLink(): string {\n return this.socialLinks.find(link => link.substr(0, 15) === 'https://vk.com/');\n }\n\n get fbLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.facebook.com/');\n }\n\n get instaLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.instagram.com');\n }\n}\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { City } from './city';\nimport { File } from './file';\nimport { League } from './league';\nimport { Sport } from './sport';\nimport { Team } from './team';\nimport { TournamentSeason } from './tournament-season';\n\nexport enum TournamentTypes {\n group = 'group',\n elimination = 'elimination',\n fiba = 'fiba'\n}\n\nexport enum TournamentStatuses {\n open,\n in_progress,\n closed,\n}\n\nexport enum TournamentGender {\n male= 1,\n female,\n all\n}\n\nexport enum BasketballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum VolleyballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum GameTimeTypes {\n clean = 1,\n dirty,\n}\n\nexport enum OvertimeTypes {\n to_score_total = 1,\n to_score_diff,\n time,\n without_overtime,\n to_first_goal,\n to_first_goal_and_bullitts,\n bullitts,\n penalties,\n time_and_penalties\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n gender: 'gender',\n age_from: 'ageFrom',\n age_to: 'ageTo',\n max_team_players: 'maxTeamPlayers',\n max_game_players: 'maxGamePlayers',\n type: 'type',\n tours_count: 'toursCount',\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n game_up_to_score: 'gameUpToScore',\n volleyball_score_in_set: 'volleyballScoreInSet',\n volleyball_score_in_last_set: 'volleyballScoreInLastSet',\n manage_team_application: 'manageTeamApplication',\n recruitment_is_open: 'recruitmentIsOpen',\n transfer_is_open: 'transferIsOpen',\n basketball_statistic_type: 'basketballStatisticType',\n volleyball_statistic_type: 'volleyballStatisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n with_result_table: 'withResultTable'\n },\n relation: {\n type: enumField(TournamentTypes),\n gender: enumField(TournamentGender),\n basketballStatisticType: enumField(BasketballStatisticTypes),\n volleyballStatisticType: enumField(VolleyballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n overtimeType: enumField(OvertimeTypes),\n }\n})\nexport class TournamentSettings extends BaseModel {\n id: number;\n gender: TournamentGender;\n ageFrom: number;\n ageTo: number;\n maxTeamPlayers: number;\n maxGamePlayers: number;\n type: TournamentTypes;\n toursCount: number;\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n gameType: string;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n gameUpToScore: number;\n volleyballScoreInSet: number;\n volleyballScoreInLastSet: number;\n manageTeamApplication: boolean;\n recruitmentIsOpen: boolean;\n transferIsOpen: boolean;\n basketballStatisticType: BasketballStatisticTypes;\n volleyballStatisticType: VolleyballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n withResultTable: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n team: 'team',\n points: 'points',\n },\n relation: {\n team: Team,\n }\n})\nexport class TournamentTeamWinner extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n team: Team;\n points: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n city: 'city',\n sport: 'sport',\n location: 'location',\n description: 'description',\n date: 'date',\n price: 'price',\n regulation_files: 'regulationFiles',\n settings: 'settings',\n league: 'league',\n teams_count: 'teamsCount',\n closest_game_datetime: 'closestGameDatetime',\n status: 'status',\n team_winner: 'teamWinner',\n team_second: 'teamSecond',\n team_third: 'teamThird',\n season: 'season',\n season_id: 'seasonId',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n city: City,\n sport: Sport,\n regulationFile: File,\n settings: TournamentSettings,\n date: DateTimeField,\n league: League,\n status: enumField(TournamentStatuses),\n teamWinner: TournamentTeamWinner,\n teamSecond: TournamentTeamWinner,\n teamThird: TournamentTeamWinner,\n season: TournamentSeason,\n }\n})\nexport class Tournament extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n city: City;\n sport: Sport;\n location: string;\n description: string;\n date: Date;\n price: number;\n regulationFiles: File[];\n settings: TournamentSettings;\n league: League;\n teamsCount: number;\n closestGameDatetime: string;\n status: TournamentStatuses;\n teamWinner: TournamentTeamWinner;\n teamSecond: TournamentTeamWinner;\n teamThird: TournamentTeamWinner;\n season: TournamentSeason;\n seasonId: number;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { VolleyballStatisticTypes } from './tournament';\n\nexport enum VolleyballGameTypes {\n best_of_five = 1,\n best_of_three\n}\n\n@ModelInstance({\n mappingFields: {\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n score_in_set: 'scoreInSet',\n score_in_last_set: 'scoreInLastSet',\n statistic_type: 'statisticType'\n },\n relation: {\n gameType: enumField(VolleyballGameTypes),\n statisticType: enumField(VolleyballStatisticTypes),\n }\n})\nexport class VolleyballGameConfig extends BaseModel {\n gameType: VolleyballGameTypes;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n scoreInSet: number;\n scoreInLastSet: number;\n statisticType: VolleyballStatisticTypes;\n\n get setsCount(): number {\n return this.gameType === VolleyballGameTypes.best_of_three ? 3 : 5;\n }\n\n getSetMaxScore(set: number) {\n return set === this.setsCount ? this.scoreInLastSet : this.scoreInSet;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n game_up_to_score: 'gameUpToScore',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n statistic_type: 'statisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n statisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class BasketballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n gameUpToScore: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n statisticType: BasketballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField, listField } from './util';\nimport { Team } from './team';\nimport { BasketballGameConfig } from './basketball-game-config';\nimport { VolleyballGameConfig } from './volleyball-game-config';\nimport { LeagueCourt } from './league-court';\nimport { MediaItem } from './media-item';\nimport { HockeyGameConfig } from './hockey-game-config';\nimport { Tournament } from './tournament';\nimport { FootballGameConfig } from './football-game-config';\nimport { HandballGameConfig } from './handball-game-config';\n\nexport enum GameStatuses {\n open = 1,\n in_progress,\n closed,\n archived,\n draft\n}\n\nexport enum GameResultTypes {\n team_won = 1,\n competitor_team_won,\n team_technical_defeat,\n competitor_team_technical_defeat\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n status: 'status',\n team: 'team',\n tournament_team_id: 'tournamentTeamId',\n team_id: 'teamId',\n competitor_team: 'competitorTeam',\n competitor_tournament_team_id: 'competitorTournamentTeamId',\n competitor_team_id: 'competitorTeamId',\n competitor_team_name: 'competitorTeamName',\n datetime: 'datetime',\n location: 'location',\n team_score: 'teamScore',\n competitor_team_score: 'competitorTeamScore',\n result_type: 'resultType',\n playoff_number: 'playoffNumber',\n tournament_id: 'tournamentId',\n tournament_tour: 'tournamentTour',\n basketball_game_config: 'basketballGameConfig',\n volleyball_game_config: 'volleyballGameConfig',\n hockey_game_config: 'hockeyGameConfig',\n football_game_config: 'footballGameConfig',\n handball_game_config: 'handballGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_court: 'tournamentCourt',\n media_count: 'mediaCount',\n media_live_count: 'mediaLiveCount',\n media: 'media',\n tournament: 'tournament',\n },\n relation: {\n status: enumField(GameStatuses),\n team: Team,\n competitorTeam: Team,\n datetime: DateTimeField,\n resultType: enumField(GameResultTypes),\n basketballGameConfig: BasketballGameConfig,\n volleyballGameConfig: VolleyballGameConfig,\n hockeyGameConfig: HockeyGameConfig,\n footballGameConfig: FootballGameConfig,\n handballGameConfig: HandballGameConfig,\n tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\n tournament: Tournament,\n }\n})\nexport class Game extends BaseModel {\n id: number;\n status: GameStatuses;\n team: Team;\n teamId: number;\n tournamentTeamId: number;\n competitorTeam: Team;\n competitorTeamId: number;\n competitorTournamentTeamId: number;\n competitorTeamName: string;\n datetime: Date;\n location: string;\n teamScore: number;\n competitorTeamScore: number;\n archive: boolean;\n playoffNumber: string;\n tournamentId: number;\n tournamentTour: number;\n basketballGameConfig: BasketballGameConfig;\n volleyballGameConfig: VolleyballGameConfig;\n hockeyGameConfig: HockeyGameConfig;\n footballGameConfig: FootballGameConfig;\n handballGameConfig: HandballGameConfig;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n mediaLiveCount: number;\n media: MediaItem[];\n tournament: Tournament;\n\n get scoreByPeriodList(): {period: number, teamScore: number, competitorTeamScore: number}[] {\n if (!this.scoreByPeriod) {\n return [];\n }\n return Object.keys(this.scoreByPeriod).map(period => ({\n period: +period,\n teamScore: this.scoreByPeriod[period][0],\n competitorTeamScore: this.scoreByPeriod[period][1]\n }));\n }\n\n get isClosed(): boolean {\n return this.status === GameStatuses.closed;\n }\n\n get isTeamWon() {\n return this.teamScore > this.competitorTeamScore;\n }\n\n get isCompetitorTeamWon() {\n return this.competitorTeamScore > this.teamScore;\n }\n\n get teamWinnerId() {\n if (this.status !== GameStatuses.closed) {\n return null;\n }\n if (this.teamScore === this.competitorTeamScore) {\n return null;\n }\n if (this.team.id) {\n return this.teamScore > this.competitorTeamScore ? this.team.id : this.competitorTeam.id;\n } else {\n return this.teamScore > this.competitorTeamScore ? this.teamId : this.competitorTeamId;\n }\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n address: 'address',\n league_id: 'leagueId'\n }\n})\nexport class LeagueCourt extends BaseModel {\n id: number;\n name: string;\n address: string;\n leagueId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n original_photo: 'originalPhoto',\n list_photo: 'listPhoto',\n detail_photo: 'detailPhoto',\n game: 'game',\n tournament: 'tournament',\n game_id: 'gameId',\n tournament_id: 'tournament_id',\n video_url: 'videoUrl',\n video_preview: 'videoPreview',\n is_live: 'isLive',\n },\n relation: {\n originalPhoto: File,\n listPhoto: File,\n detailPhoto: File,\n videoPreview: File\n }\n})\nexport class MediaItem extends BaseModel {\n id: number;\n originalPhoto: File;\n listPhoto: File;\n detailPhoto: File;\n gameId: number;\n tournamentId: number;\n videoUrl: string;\n videoPreview: File;\n isLive: boolean;\n\n get isVideo(): boolean {\n return Boolean(this.videoUrl);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HockeyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class FootballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HandballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","export function updateItemInArray(data: any[], item: any, force = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n if (v.updatedAt && item.updatedAt && !force) {\n return v.updatedAt > item.updatedAt ? v : item;\n }\n return item;\n });\n}\n\nexport function updateItemsInArray(data: any[], items: any[], force: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n items.forEach(item => {\n data = updateItemInArray(data, item, force, checkFunction);\n });\n return data;\n}\n\nexport function patchItemInArray(data: any[], item: any, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n return Object.assign(v, item);\n });\n}\n\nexport function addItemInArray(data: any[], item: any, atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return [item];\n }\n if (data.find(i => isFunction(checkFunction) ? checkFunction(i) : i.id === item.id)) {\n return data;\n }\n\n return atEnd\n ? [...data, item]\n : [item, ...data];\n}\n\nexport function addItemsInArray(data: any[], items: any[], atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n (!atEnd\n ? Object.assign([], items).reverse()\n : items\n ).forEach(item => {\n data = addItemInArray(data, item, atEnd, checkFunction);\n });\n return data;\n}\n\nexport function deleteItemFromArray(data: any[], item: any): any[] {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isFunction(item)) {\n return data.filter(i => !item(i));\n } else {\n return data.filter(v => v.id !== item.id);\n }\n}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\nexport enum TeamUserRole {\n member = 1,\n moderator,\n admin,\n coach,\n head_coach,\n playing_coach,\n manager,\n head_manager,\n captain,\n assistant,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n user: 'user',\n role: 'role',\n number: 'number',\n team: 'team',\n },\n relation: {\n user: User,\n team: Team,\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamUser extends BaseModel {\n id: number;\n teamId: number;\n user: User;\n team: Team;\n number: number;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(teamPlayer: TeamUser): any {\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { addItemInArray, addItemsInArray, deleteItemFromArray, updateItemInArray, updateItemsInArray } from '../utils/data';\nimport { StorageEngine } from './storage-engine';\n\nexport class Store {\n private data: {[key: string]: BehaviorSubject<any>} = {};\n\n constructor(private engine?: StorageEngine) {\n }\n\n get(key: string): Observable<any> {\n return this.getSubject(key).pipe(filter(item => item !== undefined));\n }\n\n value(key: string): any {\n return this.getSubject(key).value;\n }\n\n save(key: string, value: any): void {\n this.getSubject(key).next(value);\n if (this.engine) {\n this.engine.save(key, value);\n }\n }\n\n appendItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, true, checkFunction));\n }\n\n appendItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, true));\n }\n\n prependItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n prependItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n updateItem(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n updateItems(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemsInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n deleteItem(key: string, value: any): void {\n this.save(key, deleteItemFromArray(this.value(key) || [], value));\n }\n\n dispose(): void {\n for (const key of Object.keys(this.data)) {\n this.data[key].complete();\n delete this.data[key];\n }\n }\n\n clearStorageData(): void {\n if (this.engine) {\n this.engine.clear();\n }\n }\n\n getEngine(): StorageEngine {\n return this.engine;\n }\n\n private getSubject(key: string): BehaviorSubject<any> {\n if (!this.data[key]) {\n this.data[key] = new BehaviorSubject<any>(this.engine ? this.engine.get(key) : undefined);\n }\n return this.data[key];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '../storage/store';\n\n@Injectable({providedIn: 'root'})\nexport class BaseService {\n protected store = new Store();\n\n dispose(): void {\n this.store.dispose();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BaseService } from './base.service';\n\nconst CONFIG_STORE_KEY = 'config';\n\nexport const CONFIG_DATA = 'mtg-core-config-data';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigService extends BaseService {\n constructor(\n @Optional() @Inject(CONFIG_DATA) private configData: any\n ) {\n super();\n if (configData) {\n this.initialize(configData);\n }\n }\n\n get config$() {\n return this.store.get(CONFIG_STORE_KEY);\n }\n\n get config() {\n return this.store.value(CONFIG_STORE_KEY) || {};\n }\n\n initialize(data: any): void {\n this.store.save(CONFIG_STORE_KEY, data);\n }\n\n set(key: string, value: any): void {\n this.store.save(CONFIG_STORE_KEY, {\n ...this.config,\n [key]: value\n });\n }\n\n get(key: string): any {\n return this.store.value(CONFIG_STORE_KEY) && this.store.value(CONFIG_STORE_KEY)[key];\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n tournament_stage_id: 'tournamentStageId'\n }\n})\nexport class TournamentGroup extends BaseModel {\n id: number;\n name: string;\n tournamentStageId: number;\n teams: TournamentTeam[];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { TournamentGroup } from './tournament-group';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n tournament: 'tournament',\n team: 'team',\n group: 'group',\n final_standing: 'finalStanding',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n draw_games_count: 'drawGamesCount',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n score_points_sum: 'scorePointsSum',\n missed_points_sum: 'missedPointsSum',\n points: 'points',\n users_count: 'usersCount',\n games: 'games',\n notifications_count: 'notificationsCount',\n win_normal_time_games_count: 'winNormalTimeGamesCount',\n lose_normal_time_games_count: 'loseNormalTimeGamesCount',\n win_overtime_games_count: 'winOvertimeGamesCount',\n lose_overtime_games_count: 'loseOvertimeGamesCount',\n last_five_games: 'lastFiveGames'\n },\n relation: {\n tournament: Tournament,\n team: Team,\n group: TournamentGroup,\n games: Game,\n lastFiveGames: Game,\n }\n})\nexport class TournamentTeam extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n tournament: Tournament;\n team: Team;\n group: TournamentGroup;\n finalStanding: number;\n gamesCount: number;\n wonGamesCount: number;\n drawGamesCount: number;\n lastGamesCount: number;\n lastGamesWon: number;\n scoreSum: number;\n missedSum: number;\n scorePointsSum: number;\n missedPointsSum: number;\n points: number;\n usersCount: number;\n games: Game[];\n notificationsCount: number;\n winNormalTimeGamesCount: number;\n loseNormalTimeGamesCount: number;\n winOvertimeGamesCount: number;\n loseOvertimeGamesCount: number;\n lastFiveGames: Game[];\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum BasketballGameLogTypes {\n enter_game = 1,\n exit_game,\n remove_game,\n two_point_made,\n three_point_made,\n free_throw_made,\n two_point_attempt,\n three_point_attempt,\n free_throw_attempt,\n assist,\n block,\n rebound,\n offensive_rebound,\n defensive_rebound,\n steal,\n turnover,\n personal_foul,\n technical_foul,\n unsportsmanlike_foul,\n one_point_attempt,\n one_point_made,\n timeout,\n team_rebound,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(BasketballGameLogTypes),\n }\n})\nexport class BasketballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: BasketballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n combined: BasketballGameLog;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n\n isPointsType() {\n return [\n BasketballGameLogTypes.two_point_made,\n BasketballGameLogTypes.three_point_made,\n BasketballGameLogTypes.free_throw_made,\n BasketballGameLogTypes.one_point_made,\n ].indexOf(this.logType) > -1;\n }\n\n isReboundType() {\n return [\n BasketballGameLogTypes.rebound,\n BasketballGameLogTypes.offensive_rebound,\n BasketballGameLogTypes.defensive_rebound\n ].indexOf(this.logType) > -1;\n }\n\n isFoulType() {\n return [\n BasketballGameLogTypes.personal_foul,\n BasketballGameLogTypes.technical_foul,\n BasketballGameLogTypes.unsportsmanlike_foul\n ].indexOf(this.logType) > -1;\n }\n\n getScore() {\n const scoreMapping = {\n [BasketballGameLogTypes.one_point_made]: 1,\n [BasketballGameLogTypes.free_throw_made]: 1,\n [BasketballGameLogTypes.two_point_made]: 2,\n [BasketballGameLogTypes.three_point_made]: 3\n };\n return scoreMapping[this.logType];\n }\n\n compare(model: BasketballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_user_id: 'tournamentTeamUserId',\n date_from: 'dateFrom',\n date_to: 'dateTo',\n matches_count: 'matchesCount',\n },\n relation: {\n dateFrom: DateField,\n dateTo: DateField,\n }\n})\nexport class TournamentDisqualification extends BaseModel {\n id: number;\n tournamentTeamUserId: number;\n dateFrom: Date;\n dateTo: Date;\n matchesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n league_id: 'leagueId',\n first_name: 'firstName',\n last_name: 'lastName',\n middle_name: 'middleName',\n photo: 'photo',\n has_changes: 'hasChanges',\n rating: 'rating'\n },\n relation: {\n photo: File,\n }\n})\nexport class LeaguePlayer extends BaseModel {\n\n id: number;\n userId: number;\n leagueId: number;\n firstName: string;\n lastName: string;\n middleName: string;\n photo: File;\n hasChanges: boolean;\n rating: number;\n\n get fullName(): string {\n return [this.lastName, this.firstName, this.middleName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TeamUser } from './team-user';\nimport { TournamentDisqualification } from './tournament-disqualification';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n team_user: 'teamUser',\n disqualified: 'disqualified',\n disqualification: 'disqualification',\n league_player: 'leaguePlayer',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n teamUser: TeamUser,\n disqualification: TournamentDisqualification,\n leaguePlayer: LeaguePlayer,\n }\n})\nexport class TournamentTeamUser extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n teamUser: TeamUser;\n disqualified: boolean;\n disqualification: TournamentDisqualification;\n leaguePlayer: LeaguePlayer;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n free_throws_made: 'freeThrowsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n two_point_percent: 'twoPointPercent',\n three_point_percent: 'threePointPercent',\n free_throw_percent: 'freeThrowPercent',\n one_point_percent: 'onePointPercent',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n game_time: 'gameTime',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class BasketballStatistic extends BaseModel implements BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n twoPointsMade: number;\n threePointsMade: number;\n freeThrowsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n twoPointPercent: number;\n threePointPercent: number;\n freeThrowPercent: number;\n onePointPercent: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n gameTime: number;\n newbie: boolean;\n rank: number;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { BasketballStatistic } from './basketball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: BasketballStatistic,\n competitorTeam: BasketballStatistic\n }\n})\nexport class BasketballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: BasketballStatistic;\n competitorTeam: BasketballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n free_throws_made: 'freeThrowsMade',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n updated_at: 'updatedAt',\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class BasketballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n freeThrowsMade: number;\n twoPointsMade: number;\n threePointsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get totalFouls(): number {\n return (this.personalFouls || 0) + (this.technicalFouls || 0) + (this.unsportsmanlikeFouls || 0);\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum HockeyGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n shootout_attempt,\n shootout_goal,\n assist,\n block_shot ,\n minor_penalty ,\n major_penalty ,\n misconduct_penalty ,\n game_misconduct_penalty ,\n match_penalty ,\n penalty_shot ,\n face_off_lose ,\n face_off_win ,\n save ,\n timeout,\n penalty_start,\n penalty_end,\n}\n\nexport enum HockeyAdvantageTypes {\n power_play = 1,\n shorthanded,\n even_strength\n}\n\nexport interface PenaltyType {\n id: number;\n code: string;\n title: string;\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n advantage: 'advantage',\n advantage_num: 'advantageNum',\n is_goalie: 'isGoalie',\n penalty_type: 'penaltyType',\n penalized_game_user_id: 'penalizedGameUserId',\n mutual_penalty: 'mutualPenalty',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HockeyGameLogTypes),\n advantage: enumField(HockeyAdvantageTypes),\n penaltyType: penaltyTypeField()\n }\n})\nexport class HockeyGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HockeyGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n advantage: HockeyAdvantageTypes;\n advantageNum: number;\n isGoalie: boolean;\n penaltyType: PenaltyType;\n _penalizedGameUserId: number;\n mutualPenalty: boolean;\n\n get penalizedGameUserId(): number {\n if (this._penalizedGameUserId) {\n return this._penalizedGameUserId;\n }\n return this.gameUserId;\n }\n\n set penalizedGameUserId(value: number) {\n this._penalizedGameUserId = value;\n }\n\n compare(model: HockeyGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HockeyGameLogTypes.goal, HockeyGameLogTypes.shootout_goal].indexOf(this.logType) > -1;\n }\n\n isPenaltyType(): boolean {\n return [\n HockeyGameLogTypes.minor_penalty, HockeyGameLogTypes.major_penalty,\n HockeyGameLogTypes.misconduct_penalty, HockeyGameLogTypes.game_misconduct_penalty,\n HockeyGameLogTypes.penalty_shot, HockeyGameLogTypes.match_penalty\n ].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HockeyGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { TeamUser } from './team-user';\nimport { TournamentTeamUser } from './tournament-team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game_id: 'gameId',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n is_mvp: 'isMvp',\n updated_at: 'updatedAt'\n },\n relation: {\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n updatedAt: DateTimeField,\n }\n})\nexport class GameUser extends BaseModel {\n id: number;\n gameId: number;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n isMvp: boolean;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { GameUser } from '../models/game-user';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService,\n ) {\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getMvp(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/mvp/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<BasketballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/team_statistic/`).pipe(\n map(result => BasketballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<BasketballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/user_statistic/`).pipe(\n map(result => BasketballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<BasketballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/logs/`).pipe(\n map(result => BasketballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n\n async downloadFibaProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol_fiba/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n theme: 'theme',\n message: 'message',\n files: 'files',\n email: 'email',\n captcha: 'captcha',\n },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: string;\n email: string;\n captcha: string;\n files: File[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(value: any): any {\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Feedback } from '../models/feedback';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class FeedbackApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async sendFeedback(data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n\n async sendLeagueFeedback(leagueId: number, data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { File } from '../models/file';\n\n@Injectable({providedIn: 'root'})\nexport class FileApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async upload(fileData: any, filename?: string, width?: number, height?: number): Promise<File> {\n let params = new HttpParams();\n if (width && height) {\n params = params.set('width', width.toString()).set('height', height.toString());\n }\n\n const formData = new FormData();\n formData.append('file', fileData, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData, {params})\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async createZipArchive(files: {file: any, filename: string}[]): Promise<any> {\n const formData = new FormData();\n for (const file of files) {\n formData.append('files', file.file, file.filename);\n }\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/zip_archive/`, formData, {responseType: 'blob'})\n .toPromise();\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum FootballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n penalty_attempt,\n penalty_goal,\n penalty_save,\n small_penalty_attempt,\n small_penalty_goal,\n small_penalty_save,\n assist,\n block_shot,\n corner,\n free_kick,\n foul,\n save,\n yellow_card,\n red_card,\n perfect_pass,\n loss,\n steal,\n out,\n timeout,\n}\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(FootballGameLogTypes)\n }\n})\nexport class FootballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: FootballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: FootballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [FootballGameLogTypes.goal, FootballGameLogTypes.penalty_goal, FootballGameLogTypes.small_penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: FootballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals: 'ppGoals',\n ev_goals: 'evGoals',\n sh_goals: 'shGoals',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class HockeyGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoals: number;\n evGoals: number;\n shGoals: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shotsOnGoal(): number {\n return (this.evShotsOnGoal || 0) + (this.ppShotsOnGoal || 0) + (this.shShotsOnGoal || 0);\n }\n\n get shotsBlocked(): number {\n return (this.evShotsBlocked || 0) + (this.ppShotsBlocked || 0) + (this.shShotsBlocked || 0);\n }\n\n get shotMisses(): number {\n return (this.evShotMisses || 0) + (this.ppShotMisses || 0) + (this.shShotMisses || 0);\n }\n\n get ppShots(): number {\n return (this.ppShotMisses || 0) + (this.ppShotsOnGoal || 0) + (this.ppShotsBlocked || 0);\n }\n\n get evShots(): number {\n return (this.evShotMisses || 0) + (this.evShotsOnGoal || 0) + (this.evShotsBlocked || 0);\n }\n\n get shShots(): number {\n return (this.shShotMisses || 0) + (this.shShotsOnGoal || 0) + (this.shShotsBlocked || 0);\n }\n\n get shots(): number {\n return this.ppShots + this.evShots + this.shShots;\n }\n\n get goals(): number {\n return (this.ppGoals || 0) + (this.shGoals || 0) + (this.evGoals || 0);\n }\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.evAssists || 0) + (this.shAssists || 0);\n }\n\n get faceOffs(): number {\n return (this.faceOffWins || 0) + (this.faceOffLosses || 0);\n }\n\n get shootOuts(): number {\n return (this.shootoutAttempts || 0) + (this.shootoutGoals || 0);\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n lose_games_count: 'loseGamesCount',\n points: 'points',\n pp_shots: 'ppShots',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shots: 'evShots',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shots: 'shShots',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals_percent: 'ppGoalsPercent',\n pp_goals: 'ppGoals',\n ev_goals_percent: 'evGoalsPercent',\n ev_goals: 'evGoals',\n sh_goals_percent: 'shGoalsPercent',\n goals: 'goals',\n sh_goals: 'shGoals',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n face_offs: 'faceOffs',\n face_off_percent: 'faceOffPercent',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HockeyStatistic extends BaseModel implements BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n loseGamesCount: number;\n points: number;\n ppShots: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShots: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShots: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoalsPercent: number;\n ppGoals: number;\n evGoalsPercent: number;\n evGoals: number;\n shGoalsPercent: number;\n shGoals: number;\n goals: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shots: number;\n goalsPercent: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n faceOffs: number;\n faceOffPercent: number;\n savesPercent: number;\n saves: number;\n shotsAgainst: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n newbie: boolean;\n rank: number;\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.shAssists || 0) + (this.evAssists || 0);\n }\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HockeyStatistic } from './hockey-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HockeyStatistic,\n competitorTeam: HockeyStatistic\n }\n})\nexport class HockeyGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HockeyStatistic;\n competitorTeam: HockeyStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyGameLog } from '../models/hockey-game-log';\nimport { HockeyGameStatistic } from '../models/hockey-game-statistic';\nimport { HockeyGameTeamStatistic } from '../models/hockey-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HockeyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/team_statistic/`).pipe(\n map(result => HockeyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HockeyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/user_statistic/`).pipe(\n map(result => HockeyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HockeyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/logs/`).pipe(\n map(result => HockeyGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user'|'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum HandballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n assist,\n penalty_miss,\n penalty_shot_on_goal,\n penalty_goal,\n save,\n penalty_save,\n foul,\n yellow_card,\n red_card,\n two_minute_foul,\n turnover,\n steal,\n block_shot,\n timeout\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HandballGameLogTypes)\n }\n})\nexport class HandballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HandballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: HandballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HandballGameLogTypes.goal, HandballGameLogTypes.penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HandballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n isFoulType(): boolean {\n return [HandballGameLogTypes.foul, HandballGameLogTypes.yellow_card, HandballGameLogTypes.red_card].indexOf(this.logType) > -1;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n corners: 'corners',\n free_kicks: 'freeKicks',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_saves: 'penaltySaves',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_saves: 'smallPenaltySaves',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class FootballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsAgainst: number;\n penaltySaves: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltySaves: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0) + (this.smallPenaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penalties(): number {\n return (this.penaltyGoals || 0) + (this.penaltyAttempts || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyAttempts || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyAttempts) / 10;\n }\n\n get smallPenalties(): number {\n return (this.smallPenaltyGoals || 0) + (this.smallPenaltyAttempts || 0);\n }\n\n get smallPenaltyGoalsPercent(): number {\n if (!this.smallPenaltyAttempts || !this.smallPenaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.smallPenaltyGoals / this.smallPenaltyAttempts) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get smallPenaltyShotsAgainst(): number {\n return (this.smallPenaltySaves || 0) + (this.smallPenaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0) + (this.smallPenaltyGoalsAgainst || 0);\n }\n\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0) + (this.smallPenaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get smallPenaltySavesPercent(): number {\n if (!this.smallPenaltyShotsAgainst || !this.smallPenaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.smallPenaltySaves / this.smallPenaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots_on_goal_percent: 'shotsOnGoalPercent',\n shots: 'shots',\n goals: 'goals',\n goals_percent: 'goalsPercent',\n total_goals: 'totalGoals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_percent: 'penaltyGoalsPercent',\n penalty_saves: 'penaltySaves',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_percent: 'smallPenaltyGoalsPercent',\n small_penalty_saves: 'smallPenaltySaves',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_shots_against: 'smallPenaltyShotsAgainst',\n small_penalty_saves_percent: 'smallPenaltySavesPercent',\n saves: 'saves',\n saves_percent: 'savesPercent',\n total_saves: 'totalSaves',\n goals_against: 'goalsAgainst',\n total_goals_against: 'totalGoalsAgainst',\n shots_against: 'shotsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n corners: 'corners',\n free_kicks: 'freeKicks',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class FootballStatistic extends BaseModel implements BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shotsOnGoalPercent: number;\n shots: number;\n goals: number;\n totalGoals: number;\n goalsPercent: number;\n assists: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsPercent: number;\n penaltySaves: number;\n penaltyGoalsAgainst: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsPercent: number;\n smallPenaltySaves: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltyShotsAgainst: number;\n smallPenaltySavesPercent: number;\n saves: number;\n savesPercent: number;\n totalSaves: number;\n goalsAgainst: number;\n totalGoalsAgainst: number;\n shotsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n newbie: boolean;\n rank: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { FootballStatistic } from './football-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: FootballStatistic,\n competitorTeam: FootballStatistic\n }\n})\nexport class FootballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: FootballStatistic;\n competitorTeam: FootballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { FootballGameLog } from '../models/football-game-log';\nimport { FootballGameStatistic } from '../models/football-game-statistic';\nimport { FootballGameTeamStatistic } from '../models/football-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class FootballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<FootballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/team_statistic/`).pipe(\n map(result => FootballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<FootballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/user_statistic/`).pipe(\n map(result => FootballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<FootballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/logs/`).pipe(\n map(result => FootballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateField } from './util';\n\nexport enum TournamentStageStatuses {\n open,\n in_progress,\n closed\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n date: 'date',\n tournament_id: 'tournamentId',\n status: 'status',\n },\n relation: {\n date: DateField,\n status: enumField(TournamentStageStatuses)\n }\n})\nexport class TournamentStage extends BaseModel {\n id: number;\n name: string;\n date: Date;\n tournamentId: number;\n status: TournamentStageStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_misses: 'penaltyMisses',\n penalty_shots_on_goal: 'penaltyShotsOnGoal',\n saves: 'saves',\n penalty_saves: 'penaltySaves',\n goals_against: 'goalsAgainst',\n penalty_goals_against: 'penaltyGoalsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellowCards: 'yellowCards',\n red_cards: 'redCards',\n two_minute_fouls: 'twoMinuteFouls',\n turnovers: 'turnovers',\n steals: 'steals',\n block_shots: 'blockShots',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n }\n})\nexport class HandballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n penaltyGoals: number;\n penaltyMisses: number;\n penaltyShotsOnGoal: number;\n saves: number;\n penaltySaves: number;\n goalsAgainst: number;\n penaltyGoalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n twoMinuteFouls: number;\n turnovers: number;\n steals: number;\n blockShots: number;\n gameTime: number;\n plusMinus: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penaltyShots(): number {\n return (this.penaltyShotsOnGoal || 0) + (this.penaltyMisses || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyShots || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyShots) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_misses: 'penaltyMisses',\n penalty_shots_on_goal: 'penaltyShotsOnGoal',\n saves: 'saves',\n penalty_saves: 'penaltySaves',\n goals_against: 'goalsAgainst',\n penalty_goals_against: 'penaltyGoalsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n two_minute_fouls: 'twoMinuteFouls',\n turnovers: 'turnovers',\n steals: 'steals',\n block_shots: 'blockShots',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n penalty_shots: 'penaltyShots',\n penalty_goals_percent: 'penaltyGoalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n total_goals: 'totalGoals',\n total_saves: 'totalSaves',\n total_goals_against: 'totalGoalsAgainst',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HandballStatistic extends BaseModel implements BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n penaltyGoals: number;\n penaltyMisses: number;\n penaltyShotsOnGoal: number;\n saves: number;\n penaltySaves: number;\n goalsAgainst: number;\n penaltyGoalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n twoMinuteFouls: number;\n turnovers: number;\n steals: number;\n blockShots: number;\n gameTime: number;\n plusMinus: number;\n shots: number;\n goalsPercent: number;\n penaltyShots: number;\n penaltyGoalsPercent: number;\n shotsAgainst: number;\n savesPercent: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n totalGoals: number;\n totalSaves: number;\n totalGoalsAgainst: number;\n newbie: boolean;\n rank: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HandballStatistic } from './handball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HandballStatistic,\n competitorTeam: HandballStatistic\n }\n})\nexport class HandballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HandballStatistic;\n competitorTeam: HandballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HandballGameLog } from '../models/handball-game-log';\nimport { HandballGameStatistic } from '../models/handball-game-statistic';\nimport { HandballGameTeamStatistic } from '../models/handball-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HandballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HandballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/team_statistic/`).pipe(\n map(result => HandballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HandballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/user_statistic/`).pipe(\n map(result => HandballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HandballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/logs/`).pipe(\n map(result => HandballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n text: 'text',\n author: 'author',\n created_at: 'createdAt',\n },\n relation: {\n picture: File,\n author: User,\n createdAt: DateTimeField,\n }\n})\nexport class TournamentNews extends BaseModel {\n id: number;\n title: string;\n picture: File;\n text: string;\n author: User;\n createdAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\n\n@ModelInstance({\n mappingFields: {\n stage_id: 'stageId',\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n stages: 'stages',\n tournament_stage_id: 'tournamentStageId',\n },\n relation: {\n stages: listField(GameTimelineStageItem)\n }\n})\nexport class GameTimelineStages extends BaseModel {\n toursCount: number;\n playoffStagesCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n stages: GameTimelineStageItem[];\n tournamentStageId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { generateArray } from '../utils/array';\n\nexport enum PlayoffTypes {\n double_elimination = 'double_elimination',\n elimination = 'elimination'\n}\n\n@ModelInstance({\n mappingFields: {\n rounds: 'rounds',\n final_rounds: 'finalRounds',\n third_place_rounds: 'thirdPlaceRounds',\n teams_count: 'teamsCount',\n type: 'type',\n },\n relation: {\n type: enumField(PlayoffTypes)\n }\n})\nexport class PlayoffSettings extends BaseModel {\n rounds: number;\n finalRounds: number;\n thirdPlaceRounds: number;\n teamsCount: number;\n type: PlayoffTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n settings: 'settings',\n tournament_id: 'tournamentId',\n tournament_stage_id: 'tournamentStageId',\n is_official: 'isOfficial'\n },\n relation: {\n settings: PlayoffSettings\n }\n})\nexport class Playoff extends BaseModel {\n id: number;\n name: string;\n settings: PlayoffSettings;\n tournamentId: number;\n tournamentStageId: number;\n isOfficial: boolean;\n private stages: {title: string, value: number}[] = [];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get stagesCount(): number {\n return Math.log(this.settings.teamsCount) / Math.log(2);\n }\n\n getPlayoffStages() {\n if (this.stages.length === 0 && this.settings.teamsCount) {\n const stagesCount = Math.log(this.settings.teamsCount) / Math.log(2);\n this.stages = generateArray(stagesCount).map(stage => {\n const playoffStage = this.settings.teamsCount / 2 ** stage;\n let title = '';\n if (playoffStage === 1) {\n title = 'Финал';\n } else {\n title = `1 / ${playoffStage}`;\n }\n return {\n value: stage,\n title\n };\n });\n }\n return this.stages;\n }\n}\n","export function generateArray(length: number): number[] {\n if (length <= 0) {\n return [];\n }\n return Array.apply(null, Array(length)).map((_, i) => i + 1);\n}\n\nexport function getArrayChunks(array: any[], length: number): any[][] {\n const chunks = [];\n const chunkLength = Math.ceil(array.length / length);\n if (chunkLength === 0) {\n return [array];\n }\n for (let i = 0; i < chunkLength; i++) {\n chunks.push(array.slice(i * length, (i + 1) * length));\n }\n return chunks;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField, enumField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\n\nexport enum LeagueNewsType {\n text = 1,\n video\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n datetime: 'datetime',\n preview_text: 'previewText',\n detail_text: 'detailText',\n picture: 'picture',\n cover: 'cover',\n mobile_picture: 'mobilePicture',\n is_main: 'isMain',\n tournaments: 'tournaments',\n type: 'type',\n video_link: 'videoLink',\n tag: 'tag',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n mobilePicture: File,\n tournaments: listField(Tournament),\n type: enumField(LeagueNewsType),\n }\n})\nexport class LeagueNews extends BaseModel {\n id: number;\n title: string;\n datetime: Date;\n previewText: string;\n detailText: string;\n picture: File;\n cover: File;\n mobilePicture: File;\n isMain: boolean;\n tournaments: Tournament[];\n type: LeagueNewsType;\n videoLink: string;\n tag: string;\n\n @ToFrontHook\n static toFront(data: any): any {\n return undefined;\n }\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { Team } from './team';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { TeamUser } from './team-user';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n tournament_team: 'tournamentTeam',\n user: 'user',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n serve_percent: 'servePercent',\n ace_percent: 'acePercent',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n block_percent: 'blockPercent',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n attack_percent: 'attackPercent',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n receive_percent: 'receivePercent',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n serve_receive_percent: 'serveReceivePercent',\n points: 'points',\n faults: 'faults',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n team: Team,\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n tournamentTeam: TournamentTeam,\n user: User,\n month: DateField,\n }\n})\nexport class VolleyballStatistic extends BaseModel implements BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n newbie: boolean;\n rank: number;\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n servePercent: number;\n acePercent: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n blockPercent: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n attackPercent: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n receivePercent: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n serveReceivePercent: number;\n points: number;\n faults: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TournamentGroup } from './tournament-group';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n group: 'group',\n tournament_stage_id: 'tournamentStageId',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n points: 'points',\n final_standing: 'finalStanding',\n received_points: 'receivedPoints',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n group: TournamentGroup\n }\n})\nexport class TournamentStageTeam extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n group: TournamentGroup;\n tournamentStageId: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n missedSum: number;\n lastGamesCount: number;\n lastGamesWon: number;\n points: number;\n finalStanding: number;\n receivedPoints: number;\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField, enumField, listField } from './util';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\nimport { League } from './league';\nimport { LeagueNews } from './league-news';\n\nexport enum TournamentEventTypes {\n game_closed = 1,\n media_added,\n news\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game: 'game',\n news: 'news',\n league: 'league',\n tournaments: 'tournaments',\n event: 'event',\n datetime: 'datetime'\n },\n relation: {\n game: Game,\n news: LeagueNews,\n league: League,\n tournaments: listField(Tournament),\n datetime: DateField,\n event: enumField(TournamentEventTypes)\n }\n})\nexport class TournamentEvent extends BaseModel {\n id: number;\n game: Game;\n news: LeagueNews;\n tournaments: Tournament[];\n event: TournamentEventTypes;\n datetime: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { User } from './user';\nimport { BaseModel, enumField, listField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n\nexport enum LeagueUserRoles {\n admin = 1,\n moderator,\n game_manager\n}\n\nexport enum LeagueUserPermissions {\n settings = 1,\n users,\n teams,\n media,\n news,\n game_export,\n schedule,\n game_management\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user: 'user',\n role: 'role',\n permissions: 'permissions'\n },\n relation: {\n user: User,\n permissions: listField(enumField(LeagueUserPermissions))\n }\n})\nexport class LeagueUser extends BaseModel {\n id: number;\n user: User;\n _role: LeagueUserRoles;\n permissions: LeagueUserPermissions[];\n\n set role(value: LeagueUserRoles|string) {\n this._role = LeagueUserRoles[value];\n }\n\n get role(): LeagueUserRoles|string {\n return this._role;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Tournament } from '../models/tournament';\nimport { map } from 'rxjs/operators';\nimport { TournamentNews } from '../models/tournament-news';\nimport { Game, GameStatuses } from '../models/game';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { Playoff } from '../models/playoff';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyStatistic } from '../models/hockey-statistic';\nimport { FootballStatistic } from '../models/football-statistic';\nimport { LeagueUserPermissions } from '../models/league-user';\nimport { HandballStatistic } from '../models/handball-statistic';\n\nexport interface TournamentGamesFilters {\n tournamentIds?: number[];\n tournamentSeasonId?: number;\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\n statuses?: GameStatuses[];\n tournamentCourtId?: number;\n userId?: number;\n query?: string;\n}\n\nexport type StatisticGroupByTypes = 'team' | 'user' | 'team_user' | 'tournament_team' | 'tournament_team_user' | 'month' | 'win_loses';\n\nexport interface StatisticFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n tournament_team_user_id?: number;\n team_id?: number;\n team_user_id?: number;\n user_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n date_from?: string;\n date_to?: string;\n query?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n order_by?: string;\n page?: number;\n size?: number;\n}\n\nexport interface StatisticLeadersFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n team_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n date_from?: string;\n date_to?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n size?: number;\n fields: string[];\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n tournamentTour?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(tournamentId: number): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/${alias}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getNews(tournamentId: number): Promise<TournamentNews[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)\n .pipe(map(result => TournamentNews.toFront(result)))\n .toPromise();\n }\n\n async getEvents(tournamentId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getTournamentStages(tournamentId: number): Promise<TournamentStage[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(\n map(data => TournamentStage.toFront(data))\n ).toPromise();\n }\n\n async getPlayoff(tournamentId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffGames(playoffId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(tournamentId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n\n async getGames(tournamentId: number, page: number, size: number, filters: TournamentGamesFilters = {}): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))).toPromise();\n }\n\n async getTeams(tournamentId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getStageTeams(tournamentId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n\n async getTeamById(tournamentTeamId: number): Promise<TournamentTeam> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<TournamentTeamUser> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)\n .pipe(map(result => TournamentTeamUser.toFront(result)))\n .toPromise();\n }\n\n async getUserGames(tournamentUserId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)\n .pipe(map(result => Game.toFront(result)))\n .toPromise();\n }\n\n async getBasketballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: BasketballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = BasketballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getVolleyballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: VolleyballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = VolleyballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHockeyStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HockeyStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HockeyStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getFootballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: FootballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = FootballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHandballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HandballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HandballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getBasketballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<BasketballStatistic[]>> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: BasketballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<VolleyballStatistic[]>> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: VolleyballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHockeyStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HockeyStatistic[]>> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HockeyStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getFootballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<FootballStatistic[]>> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: FootballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHandballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HandballStatistic[]>> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HandballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getTournamentTeamUsers(tournamentTeamId: number): Promise<TournamentTeamUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n\n async myPermission(tournamentId: number): Promise<LeagueUserPermissions[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/permission/`).pipe(\n map((data: any) => (data.permissions || []).map(item => LeagueUserPermissions[item]))\n ).toPromise();\n }\n\n async getTournamentTeamTournaments(tournamentTeamId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getTournamentUserTournaments(tournamentTeamUserId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentTeamUserId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n}\n\nexport function applyGamesFilters(filters: TournamentGamesFilters, params: HttpParams): HttpParams {\n if (filters.tournamentIds) {\n params = params.set('tournament_ids', filters.tournamentIds.join(','));\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.statuses) {\n const statuses = filters.statuses.map(i => GameStatuses[i]);\n params = params.set('statuses', statuses.join(','));\n }\n if (filters.tournamentCourtId) {\n params = params.set('tournament_court_id', filters.tournamentCourtId.toString());\n }\n if (filters.userId) {\n params = params.set('user_id', filters.userId.toString());\n }\n if (filters.query) {\n params = params.set('query', filters.query);\n }\n return params;\n}\n\nexport function applyStatisticFilters(filters: StatisticFilters, params: HttpParams): HttpParams {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n return params;\n}\n\nexport function applyStatisticLeadersFilters(filters: StatisticLeadersFilters, params: HttpParams): HttpParams {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n if (filters.fields) {\n params = params.set('fields', filters.fields.join(','));\n }\n return params;\n}\n","import {ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField} from './util';\nimport {File} from './file';\n\nexport enum BannerLocation {\n slider = 'slider',\n central = 'central',\n media = 'media',\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n location: 'location',\n },\n relation: {\n picture: File,\n location: enumField(BannerLocation),\n }\n})\nexport class LeagueBanner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n location: BannerLocation;\n\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n },\n relation: {\n picture: File\n }\n})\nexport class LeaguePartner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { User } from './user';\n\nexport enum PollStatuses {\n open = 1,\n closed,\n archived,\n}\n\n@ModelInstance({\n mappingFields: {\n uuid: 'uuid',\n name: 'name'\n }\n})\nexport class PollVariant extends BaseModel {\n uuid: string;\n name: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n answer_uuid: 'answerUuid',\n user: 'user',\n poll_id: 'pollId',\n },\n relation: {\n user: User\n }\n})\nexport class PollAnswer extends BaseModel {\n id: number;\n answerUuid: string;\n user: User;\n pollId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n active: 'active',\n status: 'status',\n team_id: 'teamId',\n name: 'name',\n description: 'description',\n variants: 'variants',\n author: 'author',\n answers: 'answers',\n multiple_answer: 'multipleAnswer',\n anonymous: 'anonymous',\n created_at: 'createdAt'\n },\n relation: {\n status: enumField(PollStatuses),\n variants: PollVariant,\n author: User,\n answers: PollAnswer,\n createdAt: DateTimeField,\n }\n})\nexport class Poll extends BaseModel {\n id: number;\n active: boolean;\n teamId: number;\n status: PollStatuses;\n name: string;\n description: string;\n _variants: PollVariant[];\n author: User;\n _answers: PollAnswer[];\n multipleAnswer: boolean;\n anonymous: boolean;\n createdAt: Date;\n variantsWithAnswers: {variant: PollVariant, percent: number}[] = [];\n\n set variants(value: PollVariant[]) {\n this._variants = value || [];\n if (this._answers) {\n this.calculateAnswersPercentage();\n }\n }\n get variants(): PollVariant[] {\n return this._variants;\n }\n\n set answers(value: PollAnswer[]) {\n this._answers = value || [];\n if (this._variants) {\n this.calculateAnswersPercentage();\n }\n }\n get answers(): PollAnswer[] {\n return this._answers;\n }\n\n calculateAnswersPercentage() {\n if (!this._answers.length) {\n return;\n }\n\n const variants = this._variants.map(v => v.uuid);\n const answersByVariant = this._answers.reduce((acc, item) => {\n if (variants.indexOf(item.answerUuid) < 0) {\n return acc;\n }\n if (!acc[item.answerUuid]) {\n acc[item.answerUuid] = 0;\n }\n acc[item.answerUuid]++;\n return acc;\n }, {});\n this.variantsWithAnswers = this._variants.map(item => ({\n variant: item,\n percent: answersByVariant[item.uuid] ? Math.round(100 * answersByVariant[item.uuid] / this._answers.length) : 0\n }))\n .sort((a, b) => a.percent > b.percent ? -1 : 1);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { League } from '../models/league';\nimport { map } from 'rxjs/operators';\nimport { Tournament, TournamentStatuses } from '../models/tournament';\nimport { ConfigService } from '../services/config.service';\nimport { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { Game, GameStatuses } from '../models/game';\nimport { LeaguePartner } from '../models/league-partner';\nimport { LeagueCourt } from '../models/league-court';\nimport { BannerLocation, LeagueBanner } from '../models/league-banner';\n\nexport interface TournamentListFilters {\n statuses: TournamentStatuses[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class LeagueApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getByAlias(alias: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${alias}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getByDomain(domain: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/by_domain/${domain}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getTournaments(leagueId: number, filters?: TournamentListFilters): Promise<Tournament[]> {\n let params = new HttpParams();\n if (filters) {\n if (filters.statuses) {\n params = params.set('statuses', filters.statuses.map(s => TournamentStatuses[s]).join(','));\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getEvents(leagueId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/events/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getTournamentSeasons(leagueId: number): Promise<TournamentSeason[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/`).pipe(\n map(result => TournamentSeason.toFront(result))\n ).toPromise();\n }\n\n async getGames(leagueId: number, page: number, size: number, filters: TournamentGamesFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/games/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getSeasons(leagueId: number, page = 1, size = 20, notClosed?: boolean, include?: string[]): Promise<PaginatedResponse<TournamentSeason[]>> {\n const params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString())\n .set('not_closed', notClosed ? '1' : '')\n .set('include', include ? include.join(',') : '');\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentSeason.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getPartners(leagueId: number): Promise<LeaguePartner[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/partners/`).pipe(\n map(result => LeaguePartner.toFront(result))\n ).toPromise();\n }\n\n async getBanners(leagueId: number, location?: BannerLocation): Promise<LeagueBanner[]> {\n const params = location ? new HttpParams().set('location', location) : new HttpParams();\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/banners/`, {params}).pipe(\n map(result => LeagueBanner.toFront(result))\n ).toPromise();\n }\n\n async getCourts(leagueId: number): Promise<LeagueCourt[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/courts/`).pipe(\n map(result => LeagueCourt.toFront(result))\n ).toPromise();\n }\n\n async getGraphicSettings(leagueId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/graphic_settings/`)\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews, LeagueNewsType } from '../models/league-news';\nimport { map } from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class LeagueNewsApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getLeagueNewsList(leagueId: number, page: number, size: number, type: LeagueNewsType = LeagueNewsType.text): Promise<PaginatedResponse<LeagueNews[]>> {\n const params = new HttpParams().set('page', page.toString())\n .set('size', size.toString())\n .set('type', LeagueNewsType[type]);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n\n async getMainLeagueNews(leagueId: number): Promise<LeagueNews> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => response && response.length > 0 ? LeagueNews.toFront(response[0]) : null))\n .toPromise();\n }\n\n async getMainLeagueNewsList(leagueId: number): Promise<LeagueNews[]> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getNewsById(newsId: number): Promise<LeagueNews> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_news/${newsId}/`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getTournamentNewsList(tournamentId: number): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`, {observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { MediaItem } from '../models/media-item';\nimport { Game, GameStatuses } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\nimport { applyGamesFilters, TournamentGamesFilters } from './tournament-api';\n\nexport interface GameMediaFilters extends TournamentGamesFilters {\n mediaCount?: number;\n}\n\nexport interface MediaFilters {\n mediaType?: 'photo' | 'video' | 'live_video';\n sort?: string;\n teamId?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MediaApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getMedia(mediaId: number): Promise<MediaItem> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async getTournamentGameMedia(tournamentId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueGameMedia(leagueId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueMedia(leagueId: number, page: number, size: number, filters: MediaFilters = {}): Promise<PaginatedResponse<MediaItem[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n if (filters.mediaType) {\n params = params.set('media_type', filters.mediaType);\n }\n if (filters.sort) {\n params = params.set('sort', filters.sort);\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/media/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: MediaItem.toFront(response.body)\n }))).toPromise();\n }\n\n async getGameMediaById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/game_media/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGameMedia(gameId: number): Promise<MediaItem[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/media/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async createZip(mediaIds: number[]): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/media/zip/`, mediaIds, { responseType: 'blob' })\n .toPromise();\n }\n\n async downloadMedia(mediaId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/download/`,{responseType: 'blob'})\n .toPromise();\n }\n}\n\nexport function applyGameMediaFilters(filters: GameMediaFilters, params: HttpParams, ): HttpParams {\n if (filters) {\n params = applyGamesFilters(filters, params);\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.playoffId) {\n params = params.set('playoff_id', filters.playoffId.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.mediaCount) {\n params = params.set('media_count', filters.mediaCount.toString());\n }\n }\n return params;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUser } from './team-user';\nimport { Game } from './game';\n\nexport enum GameInviteStatus {\n accepted = 1,\n declined,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_user: 'teamUser',\n game_id: 'gameId',\n game: 'game',\n status: 'status',\n },\n relation: {\n game: Game,\n teamUser: TeamUser,\n status: enumField(GameInviteStatus),\n }\n})\nexport class GameInvite extends BaseModel {\n id: number;\n teamUser: TeamUser;\n gameId: number;\n game: Game;\n status: GameInviteStatus;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n user: 'user',\n team: 'team',\n team_id: 'teamId',\n user_accept: 'userAccept',\n team_accept: 'teamAccept',\n users_count: 'usersCount',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n created_at: 'createdAt',\n updated_at: 'updatedAt',\n },\n relation: {\n user: User,\n team: Team,\n createdAt: DateTimeField,\n updateAt: DateTimeField,\n }\n})\nexport class TeamInvite extends BaseModel {\n id: number;\n userId: number;\n user: User;\n teamId: number;\n team: Team;\n userAccept: boolean;\n teamAccept: boolean;\n usersCount: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n createdAt: Date;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export enum TeamEventTypes {\n training = 1,\n other = 2,\n}\n","import { enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum TeamEventInviteStatuses {\n accepted = 1,\n declined = 2\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_event_id: 'teamEventId',\n team_user_id: 'teamUserId',\n status: 'status',\n },\n relation: {\n status: enumField(TeamEventInviteStatuses)\n }\n})\nexport class TeamEventInvite {\n id: number;\n teamEventId: number;\n teamUserId: number;\n status: TeamEventInviteStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { TeamEventTypes } from '../models/team-event-type';\n\nexport const TeamEventTypeLocalization = {\n [TeamEventTypes.training]: 'ТÑениÑовка',\n [TeamEventTypes.other]: 'ÐÑÑгое'\n};\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { Team } from './team';\nimport { TeamEventTypeLocalization } from '../localization/team-event-type';\nimport { TeamEventTypes } from './team-event-type';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n team: 'team',\n event_type: 'eventType',\n event_custom_name: 'eventCustomName',\n description: 'description',\n datetime: 'datetime',\n location: 'location',\n },\n relation: {\n eventType: enumField(TeamEventTypes),\n team: Team,\n datetime: DateTimeField,\n }\n})\nexport class TeamEvent extends BaseModel {\n id: number;\n teamId: number;\n team: Team;\n eventType: TeamEventTypes;\n eventCustomName: string;\n description: string;\n datetime: Date;\n location: string;\n\n get name(): string {\n if (this.eventType === TeamEventTypes.other) {\n return this.eventCustomName;\n }\n return TeamEventTypeLocalization[this.eventType];\n }\n\n get isClosed(): boolean {\n return this.datetime.getTime() < new Date().getTime();\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { Team } from './team';\nimport { Poll } from './poll';\nimport { Game } from './game';\nimport { TeamInvite } from './team-invite';\nimport { TeamUser } from './team-user';\nimport { GameInvite } from './game-invite';\nimport { TeamEvent } from './team-event';\nimport { TeamEventInvite } from './team-event-invite';\nimport { Tournament } from './tournament';\nimport { TournamentInvite } from './tournament-invite';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\n\nexport enum NotificationType {\n team_updated = 1,\n team_invited,\n team_join_request,\n team_join_declined_by_team,\n team_join_declined_by_user,\n team_join_canceled_by_team,\n team_join_canceled_by_user,\n team_joined_for_user,\n team_joined_for_team,\n team_user_role_changed_for_user,\n team_user_role_changed_for_team,\n team_user_number_changed,\n team_user_deleted_for_user,\n team_user_deleted_for_team,\n team_user_left,\n\n game_updated,\n game_invited,\n game_invite_accepted,\n game_invite_declined,\n game_remind,\n game_won,\n game_losing,\n game_tech_defeat,\n game_tech_victory,\n\n poll_created,\n poll_closed,\n\n team_event_invited,\n team_event_accepted,\n team_event_declined,\n team_event_remind,\n\n tournament_invited,\n tournament_joined,\n tournament_join_declined,\n tournament_join_canceled,\n tournament_user_invited,\n tournament_user_accepted_for_team,\n tournament_user_accepted_for_user,\n tournament_user_added,\n tournament_user_declined_for_team,\n tournament_user_declined_for_user,\n tournament_user_invite_deleted,\n tournament_user_deleted,\n tournament_user_disqualified_for_team,\n tournament_user_disqualified_for_user,\n tournament_user_disqualification_updated_for_team,\n tournament_user_disqualification_updated_for_user,\n tournament_team_deleted,\n\n org_tournament_invite_created,\n org_tournament_invite_declined,\n org_tournament_invite_deleted,\n org_tournament_invite_changed,\n org_tournament_user_deleted,\n org_tournament_user_invited,\n org_tournament_user_has_changes,\n org_tournament_team_leave,\n}\n\nexport enum NotificationServiceEnum {\n public = 1,\n org\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n event_type: 'event',\n data: 'data',\n initiator: 'initiator',\n team: 'team',\n team_invite: 'teamInvite',\n team_user: 'teamUser',\n poll: 'poll',\n game: 'game',\n game_invite: 'gameInvite',\n team_event: 'teamEvent',\n team_event_invite: 'teamEventInvite',\n tournament: 'tournament',\n tournament_invite: 'tournamentInvite',\n tournament_team: 'tournamentTeam',\n viewed: 'viewed',\n protected: 'protected',\n service: 'service',\n created_at: 'createdAt',\n },\n relation: {\n event: enumField(NotificationType),\n initiator: User,\n team: Team,\n teamInvite: TeamInvite,\n teamUser: TeamUser,\n poll: Poll,\n game: Game,\n gameInvite: GameInvite,\n teamEvent: TeamEvent,\n teamEventInvite: TeamEventInvite,\n tournament: Tournament,\n tournamentInvite: TournamentInvite,\n tournamentTeam: TournamentTeam,\n service: enumField(NotificationServiceEnum),\n createdAt: DateTimeField,\n }\n})\nexport class Notification extends BaseModel {\n id: number;\n event: NotificationType;\n data: any;\n initiator: User;\n team: Team;\n teamInvite: TeamInvite;\n teamUser: TeamUser;\n poll: Poll;\n game: Game;\n gameInvite: GameInvite;\n teamEvent: TeamEvent;\n teamEventInvite: TeamEventInvite;\n tournament: Tournament;\n tournamentInvite: TournamentInvite;\n tournamentTeam: TournamentTeam;\n viewed: boolean;\n protected: boolean;\n service: NotificationServiceEnum;\n createdAt: Date;\n\n get important(): boolean {\n return true;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { TeamUser } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_invite_id: 'tournamentTeamInviteId',\n tournament_team_id: 'tournamentTeamId',\n team_user: 'teamUser',\n accepted: 'accepted'\n },\n relation: {\n teamUser: TeamUser\n }\n})\nexport class TournamentTeamUserInvite extends BaseModel {\n id: number;\n tournamentTeamInviteId: number;\n tournamentTeamId: number;\n teamUser: TeamUser;\n accepted: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { Tournament } from './tournament';\nimport { TournamentTeamUserInvite } from './tournament-team-user-invite';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team: 'team',\n tournament: 'tournament',\n team_accept: 'teamAccept',\n organization_accept: 'organizationAccept',\n user_invites_count: 'userInvitesCount',\n user_invites: 'userInvites',\n notifications_count: 'notificationsCount',\n },\n relation: {\n team: Team,\n tournament: Tournament,\n userInvites: TournamentTeamUserInvite,\n }\n})\nexport class TournamentInvite extends BaseModel {\n id: number;\n team: Team;\n tournament: Tournament;\n teamAccept: boolean;\n organizationAccept: boolean;\n userInvitesCount: number;\n userInvites: TournamentTeamUserInvite[];\n notificationsCount: number;\n\n get isOpen(): boolean {\n return (this.teamAccept === null || this.organizationAccept === null) && this.teamAccept !== false && this.organizationAccept !== false;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum NotificationAllowTypes {\n all = 1,\n important,\n none\n}\n\n@ModelInstance({\n mappingFields: {\n user_id: 'userId',\n popup: 'popup',\n sound: 'sound',\n browser: 'browser',\n email: 'email'\n },\n relation: {\n sound: enumField(NotificationAllowTypes),\n browser: enumField(NotificationAllowTypes),\n }\n})\nexport class NotificationSettings extends BaseModel {\n userId: number;\n popup: boolean;\n sound: NotificationAllowTypes;\n browser: NotificationAllowTypes;\n email: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook, enumField } from './util';\n\nexport enum TeamPermissionTypes {\n for_all = 1,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n players: 'players',\n games: 'games',\n statistic: 'statistic',\n polls: 'polls',\n events: 'events'\n },\n relation: {\n players: enumField(TeamPermissionTypes),\n games: enumField(TeamPermissionTypes),\n statistic: enumField(TeamPermissionTypes),\n polls: enumField(TeamPermissionTypes),\n events: enumField(TeamPermissionTypes)\n }\n})\nexport class TeamPermission extends BaseModel {\n players: TeamPermissionTypes;\n games: TeamPermissionTypes;\n statistic: TeamPermissionTypes;\n polls: TeamPermissionTypes;\n events: TeamPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Notification } from '../models/notification';\nimport { NotificationSettings } from '../models/notification-settings';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\n\nexport interface NotificationFilters {\n protected?: boolean;\n not_viewed?: boolean;\n important?: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class NotificationBaseApi {\n protected apiUrl: string;\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCount(): Promise<number> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/count/`)\n .pipe(map(data => +data))\n .toPromise();\n }\n\n async getList(page: number, size: number, filters: NotificationFilters = {}): Promise<PaginatedResponse<Notification[]>> {\n let params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString());\n for (const key of Object.keys(filters)) {\n params = params.set(key, filters[key]);\n }\n\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/`, {params, observe: 'response'})\n .pipe(\n map(response => {\n const data: Notification[] = Notification.toFront(response.body);\n return {\n total: +response.headers.get('x-page-count'),\n data\n };\n }),\n ).toPromise();\n }\n\n async markViewed(notificationId: number, viewed: boolean): Promise<Notification> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/${notificationId}/viewed/`, {viewed})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async markAllViewed(): Promise<Notification[]> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/viewed/`, {})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async getNotificationSettings(): Promise<NotificationSettings> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`)\n .pipe(map(data => NotificationSettings.toFront(data)))\n .toPromise();\n }\n\n async updateNotificationSettings(data: NotificationSettings): Promise<NotificationSettings> {\n return this.httpClient.post(\n `${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`,\n NotificationSettings.toBack(data)\n )\n .pipe(map(result => NotificationSettings.toFront(result)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class NotificationApi extends NotificationBaseApi {\n protected apiUrl = '/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class OrgNotificationApi extends NotificationBaseApi {\n protected apiUrl = '/org/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\nimport { City } from '../models/city';\nimport { Sport } from '../models/sport';\n\n@Injectable({providedIn: 'root'})\nexport class ReferenceApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCities(): Promise<City[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/reference/cities/`)\n .pipe(\n map(data => City.toFront(data))\n ).toPromise();\n }\n\n async getSports(): Promise<Sport[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/sport/`)\n .pipe(\n map(data => Sport.toFront(data))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n email: 'email',\n first_name: 'firstName',\n last_name: 'lastName',\n },\n})\nexport class TeamInviteExternal extends BaseModel {\n id: number;\n teamId: number;\n email: string;\n firstName: string;\n lastName: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum UserPermissionTypes {\n denied = 1,\n for_all,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n personal_data: 'personalData',\n games: 'games',\n teams: 'teams',\n statistic: 'statistic'\n },\n relation: {\n personalData: enumField(UserPermissionTypes),\n games: enumField(UserPermissionTypes),\n teams: enumField(UserPermissionTypes),\n statistic: enumField(UserPermissionTypes)\n }\n})\nexport class UserPermission extends BaseModel {\n id: number;\n personalData: UserPermissionTypes;\n games: UserPermissionTypes;\n teams: UserPermissionTypes;\n statistic: UserPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUserRole } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n can_edit: 'canEdit',\n can_view_users: 'canViewUsers',\n can_manage_permission: 'canManagePermission',\n can_change_owner: 'canChangeOwner',\n can_delete: 'canDelete',\n can_manage_invites: 'canManageInvites',\n can_view_invites: 'canViewInvites',\n can_manage_polls: 'canManagePolls',\n can_view_polls: 'canViewPolls',\n can_answer_poll: 'canAnswerPoll',\n can_manage_games: 'canManageGames',\n can_view_games: 'canViewGames',\n can_view_statistic: 'canViewStatistic',\n can_promote_users: 'canPromoteUsers',\n can_edit_users: 'canEditUsers',\n can_delete_users: 'canDeleteUsers',\n can_view_events: 'canViewEvents',\n can_manage_events: 'canManageEvents',\n can_view_tournaments: 'canViewTournaments',\n can_manage_tournaments: 'canManageTournaments',\n role: 'role'\n },\n relation: {\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamAccess extends BaseModel {\n canEdit: boolean;\n canViewUsers: boolean;\n canManagePermission: boolean;\n canChangeOwner: boolean;\n canDelete: boolean;\n canManageInvites: boolean;\n canViewInvites: boolean;\n canManagePolls: boolean;\n canViewPolls: boolean;\n canAnswerPoll: boolean;\n canManageGames: boolean;\n canViewGames: boolean;\n canViewStatistic: boolean;\n canPromoteUsers: boolean;\n canEditUsers: boolean;\n canDeleteUsers: boolean;\n canViewEvents: boolean;\n canManageEvents: boolean;\n canViewTournaments: boolean;\n canManageTournaments: boolean;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser, TeamUserRole } from '../models/team-user';\nimport { User } from '../models/user';\nimport { TeamInvite } from '../models/team-invite';\nimport { TeamInviteExternal } from '../models/team-invite-external';\nimport { Poll } from '../models/poll';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { TeamEvent } from '../models/team-event';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { TeamPermission } from '../models/team-permission';\nimport { TeamAccess } from '../models/team-access';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async search(query: string, sportId?: number): Promise<Team[]> {\n let params = (new HttpParams()).set('search', query);\n if (sportId) {\n params = params.set('sport', sportId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/`, {params})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async create(team: Team): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/`, Team.toBack(team))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getById(teamId: number): Promise<Team> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getTeamAccess(teamId: number): Promise<TeamAccess> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/access/`)\n .pipe(map(data => TeamAccess.toFront(data)))\n .toPromise();\n }\n\n async update(teamId: number, values: any): Promise<Team> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`, Team.toBack(values))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async delete(team: Team): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${team.id}/`)\n .toPromise();\n }\n\n async getPermission(teamId: number): Promise<TeamPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`)\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async updatePermission(teamId: number, permission: TeamPermission): Promise<TeamPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`, TeamPermission.toBack(permission))\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async getUsers(teamId: number, tournamentId?: number): Promise<TeamUser[]> {\n let params = new HttpParams();\n if (tournamentId) {\n params = params.set('tournament_id', tournamentId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`, {params})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserRole(teamId: number, teamUserId: number, role: TeamUserRole): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/role/`, {role: TeamUserRole[role]})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserNumber(teamId: number, teamUserId: number, gameNumber: number): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/number/`, {number: gameNumber.toString()})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteUser(teamUser: TeamUser): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${teamUser.teamId}/users/${teamUser.id}/`)\n .toPromise();\n }\n\n async changeOwner(teamId: number, user: User): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/owner/`, {id: user.id})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(teamId: number): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async sendInvite(teamId: number, user: User): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`, {user})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async resendInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getInvitesExternal(teamId: number): Promise<TeamInviteExternal[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`)\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async sendInviteExternal(teamId: number, invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`, TeamInviteExternal.toBack(invite))\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async deleteInviteExternal(invite: TeamInviteExternal): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/`)\n .toPromise();\n }\n\n async resendInviteExternal(invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async getPolls(teamId: number, archive: boolean = false): Promise<Poll[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async createPoll(teamId: number, poll: Poll): Promise<Poll> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/`, Poll.toBack(poll))\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async getUsersStatistic(teamId: number): Promise<BasketballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(teamId: number): Promise<VolleyballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async joinTeam(teamId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/join/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async leaveTeam(teamId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/leave/`, {})\n .toPromise();\n }\n\n async getGames(teamId: number, archive = false): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async createGame(teamId: number, game: Game): Promise<Game> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/`, Game.toBack(game))\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(teamId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async createTeamEvent(teamId: number, teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async getTournaments(teamId: number): Promise<Tournament[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/`)\n .pipe(map(data => Tournament.toFront(data)))\n .toPromise();\n }\n\n async getTournamentTeams(teamId: number): Promise<TournamentTeam[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_teams/`)\n .pipe(map(data => TournamentTeam.toFront(data)))\n .toPromise();\n }\n\n async getTournamentInvites(teamId: number): Promise<TournamentInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_invites/`)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async getTournamentGames(teamId: number, tournamentId: number, page: number, size?: number): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map((response: HttpResponse<any>) => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n }))\n .toPromise();\n }\n\n async acceptTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/accept/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/decline/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async registerLazyUser(teamId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/lazy_user/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async getLazyUser(teamUserId: number): Promise<TeamUser> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateLazyUser(teamUserId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteLazyUser(teamUserId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .toPromise();\n }\n\n async resendLazyUserEmail(teamUserId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/resend_email/`, {})\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { TeamEvent } from '../models/team-event';\nimport { TeamEventInvite } from '../models/team-event-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamEventApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getTeamEvent(teamEventId: number): Promise<TeamEvent> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async updateTeamEvent(teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEvent.id}/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async deleteTeamEvent(teamEventId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .toPromise();\n }\n\n async getTeamEventInvites(teamEventId: number): Promise<TeamEventInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`)\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async createTeamEventInvite(teamEventId: number, teamUserId: number): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`, {team_user_id: teamUserId})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/accept/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/decline/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n valid_users_count: 'validUsersCount',\n invalid_users_count: 'invalidUsersCount',\n has_access: 'hasAccess',\n invite_sent: 'inviteSent',\n already_in_tournament: 'alreadyInTournament'\n }\n})\nexport class TournamentJoinData extends BaseModel {\n validUsersCount: number;\n invalidUsersCount: number;\n hasAccess: boolean;\n inviteSent: boolean;\n alreadyInTournament: boolean;\n\n get usersCount(): number {\n return this.validUsersCount + this.invalidUsersCount;\n }\n\n get valid() {\n return this.hasAccess && !this.inviteSent && !this.alreadyInTournament;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n join_data: 'joinData'\n },\n relation: {\n team: Team,\n joinData: TournamentJoinData\n }\n})\nexport class TournamentJoinTeam extends BaseModel {\n team: Team;\n joinData: TournamentJoinData;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentJoinTeam } from '../models/tournament-join-team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser } from '../models/team-user';\nimport { TournamentTeamUserInvite } from '../models/tournament-team-user-invite';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentJoinApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getTeamsForJoin(tournamentId: number): Promise<TournamentJoinTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams_for_join/`).pipe(\n map(response => TournamentJoinTeam.toFront(response))\n ).toPromise();\n }\n\n async getTeamUsers(teamId: number): Promise<TeamUser[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`)\n .pipe(\n map(data => TeamUser.toFront(data))\n ).toPromise();\n }\n\n async joinTournament(tournamentId: number, teamId: number, invites: TournamentTeamUserInvite[]): Promise<TournamentInvite> {\n const body = {\n team: {id: teamId},\n user_invites: TournamentTeamUserInvite.toBack(invites)\n };\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join/`, body)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { Game, GameStatuses } from '../models/game';\nimport { Tournament } from '../models/tournament';\nimport { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { applyGameMediaFilters, GameMediaFilters } from './media-api';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentSeasonApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<TournamentSeason> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/${alias}/`).pipe(\n map(result => TournamentSeason.toFront(result))\n ).toPromise();\n }\n\n async getTournaments(seasonId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getGames(seasonId: number, page: number, size: number, filters: TournamentGamesFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games/`,\n {params, observe: 'response'}\n ).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getEvents(seasonId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/events/`,\n {params, observe: 'response'}\n )\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getGameMedia(seasonId: number, page: number, size: number, filters: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/game_media/`,\n {observe: 'response', params})\n .pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getTeams(seasonId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/teams/`).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(seasonId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { map } from 'rxjs/operators';\nimport { TournamentGroup } from '../models/tournament-group';\nimport { Playoff } from '../models/playoff';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentStageApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(id: number): Promise<TournamentStage> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${id}/`)\n .pipe(map(result => TournamentStage.toFront(result)))\n .toPromise();\n }\n\n async getGroups(stageId: number): Promise<TournamentGroup[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/groups/`)\n .pipe(map(result => TournamentGroup.toFront(result)))\n .toPromise();\n }\n\n async getPlayoffs(stageId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/playoff/`)\n .pipe(map(result => Playoff.toFront(result)))\n .toPromise();\n }\n\n async getTeams(stageId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n edit: 'edit',\n personal_data: 'personalData',\n teams: 'teams',\n statistic: 'statistic',\n games: 'games'\n }\n})\nexport class UserAccess extends BaseModel {\n edit: boolean;\n personalData: boolean;\n teams: boolean;\n statistic: boolean;\n games: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum VolleyballGameLogType {\n enter_game = 1,\n exit_game,\n remove_game,\n serve_hit,\n serve_fault,\n serve_ace,\n stuff_block,\n block_fault,\n block_rebound,\n attack_spike,\n attack_fault,\n attack_shot,\n receive,\n receive_fault,\n excellent_receive,\n point,\n fault,\n serve_receive,\n serve_receive_fault,\n excellent_serve_receive,\n timeout,\n yellow_card,\n}\n\nexport const SCORE_LOG_TYPES = [\n VolleyballGameLogType.serve_ace, VolleyballGameLogType.stuff_block,\n VolleyballGameLogType.attack_spike, VolleyballGameLogType.point\n];\nexport const FAULT_LOG_TYPES = [\n VolleyballGameLogType.serve_fault, VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.block_fault, VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.fault, VolleyballGameLogType.serve_receive_fault\n];\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n log_type: 'logType',\n set: 'set',\n rally: 'rally',\n position: 'position',\n team_id: 'teamId',\n datetime: 'datetime',\n },\n relation: {\n logType: enumField(VolleyballGameLogType),\n datetime: DateTimeField\n }\n})\nexport class VolleyballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n active = true;\n gameId: number;\n gameUserId: number;\n logType: VolleyballGameLogType;\n set: number;\n rally: number;\n position: number;\n teamId: number;\n datetime: Date;\n gameUser: GameUser;\n\n compare(model: VolleyballGameLog): number {\n if (this.rally === model.rally && this.set === model.set) {\n if (this.datetime && model.datetime) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n } else {\n return this.id < model.id ? 1 : -1;\n }\n }\n if (this.set === model.set) {\n return this.rally < model.rally ? 1 : -1;\n }\n return this.set < model.set ? 1 : -1;\n }\n\n isScoreType() {\n return SCORE_LOG_TYPES.includes(this.logType);\n }\n\n isFaultType() {\n return FAULT_LOG_TYPES.includes(this.logType);\n }\n\n isServe() {\n return [\n VolleyballGameLogType.serve_hit,\n VolleyballGameLogType.serve_ace,\n VolleyballGameLogType.serve_fault\n ].includes(this.logType);\n }\n\n isAttack() {\n return [\n VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.attack_spike,\n VolleyballGameLogType.attack_shot\n ].includes(this.logType);\n }\n\n isReceive() {\n return [\n VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.receive,\n VolleyballGameLogType.excellent_receive\n ].includes(this.logType);\n }\n\n isServeReceive() {\n return [\n VolleyballGameLogType.serve_receive_fault,\n VolleyballGameLogType.serve_receive,\n VolleyballGameLogType.excellent_serve_receive\n ].includes(this.logType);\n }\n\n isBlock() {\n return [\n VolleyballGameLogType.block_fault,\n VolleyballGameLogType.block_rebound,\n VolleyballGameLogType.stuff_block\n ].includes(this.logType);\n }\n\n isEnterExit() {\n return [\n VolleyballGameLogType.enter_game,\n VolleyballGameLogType.exit_game,\n VolleyballGameLogType.timeout\n ].includes(this.logType);\n }\n\n isComboType() {\n return ![\n VolleyballGameLogType.receive,\n VolleyballGameLogType.serve_receive\n ].includes(this.logType);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { User } from '../models/user';\nimport { File } from '../models/file';\nimport { map } from 'rxjs/operators';\nimport { UserProfile } from '../models/user-profile';\nimport { BasketballProfile } from '../models/basketball-profile';\nimport { VolleyballProfile } from '../models/volleyball-profile';\nimport { Team } from '../models/team';\nimport { TeamInvite } from '../models/team-invite';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { GameInvite } from '../models/game-invite';\nimport { TeamEvent } from '../models/team-event';\nimport { UserAccess } from '../models/user-access';\nimport { UserPermission } from '../models/user-permission';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class UserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCurrentUser(): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getAccess(userId?: number): Promise<UserAccess> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/access/`)\n .pipe(map(data => UserAccess.toFront(data)))\n .toPromise();\n }\n\n async updateUser(userId: number, data: any): Promise<User> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`, User.toBack(data))\n .pipe(map(result => User.toFront(result)))\n .toPromise();\n }\n\n async updateUserPhoto(file: any, filename?: string): Promise<File> {\n const formData = new FormData();\n formData.append('file', file, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/photo/`, formData)\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async changePassword(userId: number, oldPassword: string, password: string, passwordConfirm: string): Promise<any> {\n const payload = {\n old_password: oldPassword,\n password,\n password_confirm: passwordConfirm\n };\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_password/`, payload)\n .toPromise();\n }\n\n async changeEmail(userId: number, email: string, password: string): Promise<any> {\n const payload = {email, password};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email/`, payload)\n .toPromise();\n }\n\n async changeEmailConfirm(userId, email: string, password: string, token: number): Promise<any> {\n const payload = {email, password, token};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email_confirm/`, payload)\n .toPromise();\n }\n\n async getUserProfile(userId: number): Promise<UserProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/profile/`)\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async getBasketballProfile(userId: number): Promise<BasketballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/basketball_profile/`)\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballProfile(userId: number): Promise<VolleyballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_profile/`)\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserProfile(userProfile: UserProfile): Promise<UserProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userProfile.userId}/profile/`, UserProfile.toBack(userProfile))\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserBasketballProfile(basketballProfile: BasketballProfile): Promise<BasketballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${basketballProfile.userId}/basketball_profile/`, BasketballProfile.toBack(basketballProfile))\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserVolleyballProfile(volleyballProfile: VolleyballProfile): Promise<VolleyballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${volleyballProfile.userId}/volleyball_profile/`, VolleyballProfile.toBack(volleyballProfile))\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async getUserPermissions(userId?: number): Promise<UserPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/permission/`)\n .pipe(map(data => UserPermission.toFront(data)))\n .toPromise();\n }\n\n async updateUserPermission(data: any): Promise<UserPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/current/permission/`, UserPermission.toBack(data))\n .pipe(map(result => UserPermission.toFront(result)))\n .toPromise();\n }\n\n async getTeams(userId: number): Promise<Team[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/teams/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getStreetballStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/streetball_statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(userId: number): Promise<VolleyballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getGames(userId: number): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/games/`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getGameInvites(): Promise<GameInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/`)\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/accept/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async declineGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/decline/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async searchUsers(query: string): Promise<User[]> {\n const params = (new HttpParams()).set('search', query);\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/`, {params})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async setWizardShowed(wizard: string): Promise<User> {\n return this.httpClient\n .put(`${this.configService.get('apiUrl')}/api/v1/user/current/wizards/`, {wizard})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(userId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/team_events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook, BaseModel } from './util';\nimport { VolleyballStatistic } from './volleyball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam',\n },\n relation: {\n team: VolleyballStatistic,\n competitorTeam: VolleyballStatistic,\n }\n})\nexport class VolleyballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: VolleyballStatistic;\n competitorTeam: VolleyballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n points: 'points',\n faults: 'faults',\n yellow_cards: 'yellowCards',\n }\n})\nexport class VolleyballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n points: number;\n faults: number;\n yellowCards: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get attacks(): number {\n return this.attackSpikes + this.attackShots;\n }\n\n get blocks(): number {\n return this.stuffBlocks + this.blockRebounds;\n }\n\n get totalReceives(): number {\n return this.receives + this.excellentReceives;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { VolleyballGameTeamStatistic } from '../models/volleyball-game-team-statistic';\nimport { VolleyballGameStatistic } from '../models/volleyball-game-statistic';\nimport { VolleyballGameLog } from '../models/volleyball-game-log';\nimport { ConfigService } from '../services/config.service';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<VolleyballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/team_statistic/`).pipe(\n map(result => VolleyballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<VolleyballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/user_statistic/`).pipe(\n map(result => VolleyballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<VolleyballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/logs/`).pipe(\n map(result => VolleyballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TournamentTeam } from '../models/tournament-team';\n\n@Injectable({providedIn: 'root'})\nexport class PublicTeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(teamId: number): Promise<Team> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/`).pipe(\n map(result => Team.toFront(result))\n ).toPromise();\n }\n\n getTournamentTeams(teamId: number, leagueId: number): Promise<TournamentTeam[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/tournament_teams/`, {params}).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { User } from '../models/user';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\n\n@Injectable({providedIn: 'root'})\nexport class PublicUserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(userId: number): Promise<User> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/`).pipe(\n map(result => User.toFront(result))\n ).toPromise();\n }\n\n getTournaments(userId: number, leagueId: number): Promise<Tournament[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n getTournamentUser(userId: number, seasonId: number): Promise<TournamentTeamUser> {\n const params = new HttpParams().set('season_id', seasonId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournament_user/`, {params}).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n}\n","import { BasketballGameLogTypes } from '../models/basketball-game-log';\n\nexport const BasketballGameLogTypeLocalization = {\n [BasketballGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [BasketballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.remove_game]: 'Удаление Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.two_point_attempt]: 'ÐÑоÑок 2 оÑка',\n [BasketballGameLogTypes.three_point_attempt]: 'ÐÑоÑок 3 оÑка',\n [BasketballGameLogTypes.free_throw_attempt]: 'ШÑÑаÑной бÑоÑок',\n [BasketballGameLogTypes.one_point_attempt]: 'ÐÑоÑок 1 оÑко',\n [BasketballGameLogTypes.two_point_made]: '2 оÑка',\n [BasketballGameLogTypes.three_point_made]: '3 оÑка',\n [BasketballGameLogTypes.free_throw_made]: '1 оÑко, ÑÑÑаÑной',\n [BasketballGameLogTypes.one_point_made]: '1 оÑко',\n [BasketballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [BasketballGameLogTypes.block]: 'ÐлокÑоÑ',\n [BasketballGameLogTypes.rebound]: 'ÐодбоÑ',\n [BasketballGameLogTypes.offensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² нападении',\n [BasketballGameLogTypes.defensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² заÑиÑе',\n [BasketballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [BasketballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [BasketballGameLogTypes.personal_foul]: 'Фол',\n [BasketballGameLogTypes.technical_foul]: 'ТеÑ
ниÑеÑкий Ñол',\n [BasketballGameLogTypes.unsportsmanlike_foul]: 'ÐеÑпоÑÑинÑй Ñол',\n [BasketballGameLogTypes.timeout]: 'ТаймаÑÑ',\n [BasketballGameLogTypes.team_rebound]: 'ÐоманднÑй подбоÑ',\n};\n","import { HockeyGameLogTypes } from '../models/hockey-game-log';\n\nexport const HockeyGameLogTypeLocalization = {\n [HockeyGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [HockeyGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [HockeyGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HockeyGameLogTypes.shot_on_goal]: 'ÐÑоÑок по воÑоÑам',\n [HockeyGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HockeyGameLogTypes.goal]: 'Ðол',\n [HockeyGameLogTypes.shootout_attempt]: 'ÐÑÐ»Ð¸Ñ Ð¿ÑомаÑ
',\n [HockeyGameLogTypes.shootout_goal]: 'ÐÑÐ»Ð¸Ñ Ð³Ð¾Ð»',\n [HockeyGameLogTypes.assist]: 'ÐеÑедаÑа',\n [HockeyGameLogTypes.block_shot]: 'ÐлокиÑовка бÑоÑка',\n [HockeyGameLogTypes.minor_penalty]: 'ÐалÑй ÑÑÑаÑ',\n [HockeyGameLogTypes.major_penalty]: 'ÐолÑÑой ÑÑÑаÑ',\n [HockeyGameLogTypes.misconduct_penalty]: 'ÐиÑÑиплинаÑнÑй ÑÑÑаÑ',\n [HockeyGameLogTypes.game_misconduct_penalty]: 'ÐиÑÑиплинаÑнÑй ÑÑÑÐ°Ñ Ð´Ð¾ конÑа игÑÑ',\n [HockeyGameLogTypes.match_penalty]: 'ÐаÑÑ-ÑÑÑаÑ',\n [HockeyGameLogTypes.penalty_shot]: 'ШÑÑаÑной бÑоÑок',\n [HockeyGameLogTypes.face_off_lose]: 'ÐÑоигÑÑÑ Ð² вбÑаÑÑвании',\n [HockeyGameLogTypes.face_off_win]: 'Ðобеда в вбÑаÑÑвании',\n [HockeyGameLogTypes.save]: 'ÐÑÑажен бÑоÑок',\n [HockeyGameLogTypes.timeout]: 'ТаймаÑÑ',\n [HockeyGameLogTypes.penalty_start]: 'ÐаÑало ÑÑÑаÑного вÑемени',\n [HockeyGameLogTypes.penalty_end]: 'ÐÐ¾Ð½ÐµÑ ÑÑÑаÑного вÑемени'\n};\n","import { FootballGameLogTypes } from '../models/football-game-log';\n\nexport const FootballGameLogTypeLocalization = {\n [FootballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [FootballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [FootballGameLogTypes.shot_miss]: 'Ð£Ð´Ð°Ñ Ð¼Ð¸Ð¼Ð¾',\n [FootballGameLogTypes.shot_on_goal]: 'Ð£Ð´Ð°Ñ Ð² ÑÑвоÑ',\n [FootballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй ÑдаÑ',\n [FootballGameLogTypes.goal]: 'Ðол',\n [FootballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [FootballGameLogTypes.penalty_attempt]: 'ÐеналÑÑи пÑомаÑ
',\n [FootballGameLogTypes.penalty_goal]: 'ÐеналÑÑи гол',\n [FootballGameLogTypes.small_penalty_attempt]: '10-меÑÑовÑй пÑомаÑ
',\n [FootballGameLogTypes.small_penalty_goal]: '10-меÑÑовÑй гол',\n [FootballGameLogTypes.block_shot]: 'ÐлокиÑовка ÑдаÑа',\n [FootballGameLogTypes.corner]: 'Угловой',\n [FootballGameLogTypes.free_kick]: 'ШÑÑаÑной ÑдаÑ',\n [FootballGameLogTypes.save]: 'ÐÑÑажен ÑдаÑ',\n [FootballGameLogTypes.penalty_save]: 'ÐÑÑажен пеналÑÑи',\n [FootballGameLogTypes.small_penalty_save]: 'ÐÑÑажен 10 меÑÑовÑй',\n [FootballGameLogTypes.foul]: 'Фол',\n [FootballGameLogTypes.yellow_card]: 'ÐелÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.perfect_pass]: 'ÐаÑ',\n [FootballGameLogTypes.loss]: 'ÐоÑеÑÑ',\n [FootballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [FootballGameLogTypes.out]: 'ÐÑÑ',\n [FootballGameLogTypes.timeout]: 'ТаймаÑÑ'\n};\n","import { HandballGameLogTypes } from '../models/handball-game-log';\n\nexport const HandballGameLogTypeLocalization = {\n [HandballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [HandballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [HandballGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HandballGameLogTypes.shot_on_goal]: 'ÐÑоÑок в ÑÑвоÑ',\n [HandballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HandballGameLogTypes.goal]: 'Ðол',\n [HandballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [HandballGameLogTypes.penalty_miss]: '7м пÑомаÑ
',\n [HandballGameLogTypes.penalty_shot_on_goal]: '7м в ÑÑвоÑ',\n [HandballGameLogTypes.penalty_goal]: '7м гол',\n [HandballGameLogTypes.save]: 'СÑйв',\n [HandballGameLogTypes.penalty_save]: 'СÑйв 7м',\n [HandballGameLogTypes.foul]: 'Фол',\n [HandballGameLogTypes.yellow_card]: 'ÐеллÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.two_minute_foul]: '2Ñ
минÑÑнÑй ÑÑÑаÑ',\n [HandballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [HandballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [HandballGameLogTypes.block_shot]: 'Ðлок бÑоÑка',\n [HandballGameLogTypes.timeout]: 'ТаймаÑÑ'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'Ðо ÑазниÑÑ Ð² N мÑÑей',\n [OvertimeTypes.to_score_total]: 'Ðо N оÑков',\n [OvertimeTypes.time]: 'Ðо вÑемени',\n [OvertimeTypes.without_overtime]: 'Ðез овеÑÑайма',\n [OvertimeTypes.to_first_goal]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑайбÑ',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑÐ°Ð¹Ð±Ñ + бÑллиÑÑ',\n [OvertimeTypes.bullitts]: 'ÐÑллиÑÑ',\n [OvertimeTypes.penalties]: 'ÐеналÑÑи',\n [OvertimeTypes.time_and_penalties]: 'ÐополниÑелÑное вÑÐµÐ¼Ñ + пеналÑÑи'\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.member]: 'ÐолÑзоваÑелÑ',\n [TeamUserRole.moderator]: 'ÐодеÑаÑоÑ',\n [TeamUserRole.admin]: 'ÐладелеÑ',\n [TeamUserRole.coach]: 'ТÑенеÑ',\n [TeamUserRole.head_coach]: 'ÐлавнÑй ÑÑенеÑ',\n [TeamUserRole.playing_coach]: 'ÐгÑаÑÑий ÑÑенеÑ',\n [TeamUserRole.manager]: 'ÐенеджеÑ',\n [TeamUserRole.head_manager]: 'ÐенеÑалÑнÑй менеджеÑ',\n [TeamUserRole.captain]: 'ÐапиÑан',\n [TeamUserRole.assistant]: 'ÐÑÑиÑÑенÑ',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-profile';\nimport { GameHockeyPosition } from '../models/hockey-profile';\nimport { FootballWorkFoot, GameFootballPosition } from '../models/football-profile';\nimport { GameHandballPosition } from '../models/handball-profile';\n\nexport const GameBasketballPositionLocalization = {\n [GameBasketballPosition.point_guard]: 'РазÑгÑÑваÑÑий заÑиÑник',\n [GameBasketballPosition.shooting_guard]: 'ÐÑакÑÑÑий заÑиÑник',\n [GameBasketballPosition.small_forward]: 'Ðегкий ÑоÑваÑд',\n [GameBasketballPosition.power_forward]: 'ÐоÑнÑй ÑоÑваÑд',\n [GameBasketballPosition.center]: 'ЦенÑÑовой',\n};\n\nexport const GameBasketballPositionShortLocalization = {\n [GameBasketballPosition.point_guard]: 'PG',\n [GameBasketballPosition.shooting_guard]: 'SG',\n [GameBasketballPosition.small_forward]: 'SF',\n [GameBasketballPosition.power_forward]: 'PF',\n [GameBasketballPosition.center]: 'C',\n};\n\nexport const WorkHandLocalization = {\n [WorkHand.left]: 'ÐеваÑ',\n [WorkHand.right]: 'ÐÑаваÑ'\n};\n\nexport const GameVolleyballPositionLocalization = {\n [GameVolleyballPosition.setter]: 'СвÑзÑÑÑий',\n [GameVolleyballPosition.libero]: 'ÐибеÑо',\n [GameVolleyballPosition.middle_player]: 'ЦенÑÑалÑнÑй блокиÑÑÑÑий',\n [GameVolleyballPosition.receiver_attacker]: 'ÐоигÑовÑик',\n [GameVolleyballPosition.dioganal]: 'ÐиагоналÑнÑй',\n};\n\nexport const GameVolleyballPositionShortLocalization = {\n [GameVolleyballPosition.setter]: 'S',\n [GameVolleyballPosition.libero]: 'L',\n [GameVolleyballPosition.middle_player]: 'MP',\n [GameVolleyballPosition.receiver_attacker]: 'RA',\n [GameVolleyballPosition.dioganal]: 'D',\n};\n\nexport const GameVolleyballPositionShortRuLocalization = {\n [GameVolleyballPosition.setter]: 'ÑвÑз.',\n [GameVolleyballPosition.libero]: 'либеÑо',\n [GameVolleyballPosition.middle_player]: 'блок.',\n [GameVolleyballPosition.receiver_attacker]: 'доигÑ.',\n [GameVolleyballPosition.dioganal]: 'диаг.',\n};\n\nexport const VolleyballWorkHandLocalization = {\n [VolleyballWorkHand.left]: 'ÐеваÑ',\n [VolleyballWorkHand.right]: 'ÐÑаваÑ'\n};\n\nexport const GameHockeyPositionLocalization = {\n [GameHockeyPosition.goaltender]: 'ÐÑаÑаÑÑ',\n [GameHockeyPosition.defensemen]: 'ÐаÑиÑник',\n [GameHockeyPosition.forward]: 'ÐападаÑÑий'\n};\n\nexport const GameFootballPositionLocalization = {\n [GameFootballPosition.goalkeeper]: 'ÐÑаÑаÑÑ',\n [GameFootballPosition.defensemen]: 'ÐаÑиÑник',\n [GameFootballPosition.midfielder]: 'ÐолÑзаÑиÑник',\n [GameFootballPosition.forward]: 'ÐападаÑÑий'\n};\n\nexport const FootballWorkFootLocalization = {\n [FootballWorkFoot.left]: 'ÐеваÑ',\n [FootballWorkFoot.right]: 'ÐÑаваÑ',\n [FootballWorkFoot.both]: 'Ðбе'\n};\n\nexport const GameHandballPositionLocalization = {\n [GameHandballPosition.goalkeeper]: 'ÐÑаÑаÑÑ',\n [GameHandballPosition.winger]: 'ÐÑайний',\n [GameHandballPosition.pivot]: 'ÐинейнÑй',\n [GameHandballPosition.centre_back]: 'ЦенÑÑалÑнÑй',\n [GameHandballPosition.fullback]: 'ÐолÑÑÑедний',\n};\n","import { VolleyballGameLogType } from '../models/volleyball-game-log';\n\nexport const VolleyballGameLogTypeLocalization = {\n [VolleyballGameLogType.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [VolleyballGameLogType.exit_game]: 'УÑ
од Ñ Ð¿Ð»Ð¾Ñадки',\n [VolleyballGameLogType.remove_game]: 'Удаление Ñ Ð¿Ð»Ð¾Ñадки',\n [VolleyballGameLogType.serve_ace]: 'ÐйÑ',\n [VolleyballGameLogType.serve_hit]: 'ÐодаÑа',\n [VolleyballGameLogType.serve_fault]: 'ÐÑибка на подаÑе',\n [VolleyballGameLogType.attack_spike]: 'РезÑлÑÑаÑÐ¸Ð²Ð½Ð°Ñ Ð°Ñака',\n [VolleyballGameLogType.attack_shot]: 'ÐÑака',\n [VolleyballGameLogType.attack_fault]: 'ÐÑибка аÑаки',\n [VolleyballGameLogType.stuff_block]: 'РезÑлÑÑаÑивнÑй блок',\n [VolleyballGameLogType.block_rebound]: 'Ðлок',\n [VolleyballGameLogType.block_fault]: 'ÐÑибка на блоке',\n [VolleyballGameLogType.excellent_receive]: 'ÐÑлиÑнÑй пÑием',\n [VolleyballGameLogType.receive]: 'ÐÑием',\n [VolleyballGameLogType.receive_fault]: 'ÐÑибка на пÑиеме',\n [VolleyballGameLogType.serve_receive]: 'ÐÑием подаÑи',\n [VolleyballGameLogType.excellent_serve_receive]: 'ÐÑлиÑнÑй пÑием подаÑи',\n [VolleyballGameLogType.serve_receive_fault]: 'ÐÑибка пÑиема подаÑи',\n [VolleyballGameLogType.point]: 'ÐÑко',\n [VolleyballGameLogType.fault]: 'ÐÑибка',\n [VolleyballGameLogType.timeout]: 'ТаймаÑÑ',\n [VolleyballGameLogType.yellow_card]: 'ÐÑедÑпÑеждение',\n};\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n files: 'files',\n key_code: 'keyCode',\n },\n relation: {\n files: listField(File)\n }\n})\nexport class LeaguePlaylist extends BaseModel {\n id: number;\n name: string;\n files: File[];\n keyCode: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Subject } from 'rxjs/internal/Subject';\nimport { ReplaySubject } from 'rxjs/internal/ReplaySubject';\n\nimport * as Centrifuge from 'centrifuge';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\n\ninterface CentrifugoConfig {\n user: string;\n timestamp: string;\n token: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CentrifugoService {\n private channels$: { [key: string]: Subject<any> } = {};\n private subscriptions: { [key: string]: any } = {};\n private centrifuge;\n private initializeEngineSubject: ReplaySubject<boolean>;\n private connectedSubject = new BehaviorSubject<boolean>(false);\n\n get connected$(): Observable<boolean> {\n return this.connectedSubject;\n }\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) { }\n\n listen(channel): Observable<any> {\n if (channel in this.channels$) {\n return this.channels$[channel];\n }\n\n this.channels$[channel] = new Subject<any>();\n const subscription = this.connect().subscribe(connected => {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n setTimeout(() => {\n subscription.unsubscribe();\n });\n });\n\n return this.channels$[channel];\n }\n\n unsubscribe(channel): void {\n if (this.subscriptions[channel]) {\n this.subscriptions[channel].unsubscribe();\n delete this.subscriptions[channel];\n }\n if (this.channels$[channel]) {\n this.channels$[channel].complete();\n delete this.channels$[channel];\n }\n }\n\n connect(): Observable<boolean> {\n if (!this.initializeEngineSubject) {\n this.initializeEngineSubject = new ReplaySubject(1);\n\n this.httpClient.get<CentrifugoConfig>(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)\n .subscribe(config => {\n this.initializeEngine({\n url: this.configService.get('centrifugoUrl'),\n user: config.user,\n timestamp: config.timestamp,\n token: config.token,\n transports: ['websocket']\n });\n this.centrifuge.connect();\n this.centrifuge.on('connect', () => {\n this.initializeEngineSubject.next(true);\n this.connectedSubject.next(true);\n });\n this.centrifuge.on('disconnect', () => {\n this.connectedSubject.next(false);\n });\n });\n }\n\n return this.initializeEngineSubject;\n }\n\n publish(channel: string, message: any): Observable<any> {\n return new Observable<any>(observer => {\n this.connect().subscribe(() => {\n if (!this.subscriptions[channel]) {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n }\n this.subscriptions[channel].publish(message).then(res => {\n observer.next(res);\n observer.complete();\n }, error => {\n throw error;\n });\n });\n });\n }\n\n disconnect(): void {\n this.centrifuge.disconnect();\n this.initializeEngineSubject = undefined;\n this.channels$ = {};\n this.subscriptions = {};\n }\n\n private initializeEngine(config: {\n url: string,\n user: string,\n timestamp: string,\n token: string,\n transports: string[]\n }): void {\n this.centrifuge = new Centrifuge(config);\n }\n\n private addEngineSubscription(channel: string): Observable<any> {\n return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));\n }\n\n private resolveMessage(response: any): void {\n const channel = response.channel;\n if (!this.channels$[channel]) {\n return;\n }\n\n this.channels$[channel].next(response.data);\n }\n}\n","import { ModelInterface } from '../models/util';\n\nexport class StorageEngineField {\n defaultValue: any;\n\n constructor(defaultValue?: any, protected modelClass?: ModelInterface) {\n this.defaultValue = defaultValue;\n }\n\n toFront(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toFront(value);\n }\n return value;\n }\n\n toBack(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toBack(value);\n }\n return value;\n }\n}\n\nexport abstract class StorageEngine {\n constructor(protected name: string, protected fields: {[key: string]: StorageEngineField}) {\n }\n\n addField(key: string, field: StorageEngineField): void {\n this.fields[key] = field;\n }\n\n save(key: string, value: any): void {\n if (!this.fields[key]) {\n return;\n }\n this.setItem(`${this.name}_${key}`, this.fields[key].toBack(value));\n }\n\n get(key: string): any {\n if (!this.fields[key]) {\n return;\n }\n let value = this.getItem(`${this.name}_${key}`);\n if (value === null) {\n value = this.fields[key].defaultValue;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return this.fields[key].toFront(value);\n }\n\n clear(): void {\n for (const field of Object.keys(this.fields)) {\n this.removeItem(field);\n }\n }\n\n protected getItem(key: string): any {\n throw new Error(`Function getItem for store engine ${typeof this} not implemented`);\n }\n\n protected setItem(key: string, value: any): any {\n throw new Error(`Function setItem for store engine ${typeof this} not implemented`);\n }\n\n protected removeItem(key: string): void {\n throw new Error(`Function deleteItem for store engine ${typeof this} not implemented`);\n }\n}\n","import { StorageEngine } from './storage-engine';\n\nexport class LocalStorageEngine extends StorageEngine {\n protected setItem(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n protected getItem(key: string): any {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch (e) {\n return;\n }\n }\n\n protected removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","export function getCookie(name: string): string {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop().split(';').shift();\n }\n return null;\n}\n","export interface LinkFavicon {\n rel: string;\n sizes?: string;\n href: string;\n type?: string;\n color?: string;\n}\n\nexport function getIconsData(folder: string): LinkFavicon[] {\n return [\n {rel: 'apple-touch-icon', sizes: '180x180', href: `/assets/favicon/${folder}apple-touch-icon.png`},\n {rel: 'icon', type: 'image/png', sizes: '32x32', href: `/assets/favicon/${folder}favicon-32x32.png`},\n {rel: 'icon', type: 'image/png', sizes: '16x16', href: `/assets/favicon/${folder}favicon-16x16.png`},\n {rel: 'shortcut icon', href: `/assets/favicon/${folder}favicon.ico`},\n {rel: 'manifest', href: `/assets/favicon/${folder}site.webmanifest`},\n {rel: 'mask-icon', href: `/assets/favicon/${folder}safari-pinned-tab.svg`, color: '#ff0000'}\n ];\n}\n\nexport function changeFavicons(document: Document, leagueAlias: string): void {\n let folder = '';\n if (leagueAlias === 'ablmoscow') {\n folder = 'abl/';\n }\n const data = getIconsData(folder);\n for (const item of data) {\n const link = document.createElement('link');\n for (const key of Object.keys(item)) {\n link.setAttribute(key, item[key]);\n }\n document.head.appendChild(link);\n }\n}\n","import { Inject, Injectable, Injector, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { getCookie } from './utils/cookie';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ConfigService } from './services/config.service';\n\n@Injectable()\nexport class HttpCookieInterceptor implements HttpInterceptor {\n private isBrowser = isPlatformBrowser(this.platformId);\n\n constructor(\n private injector: Injector,\n private configService: ConfigService,\n @Inject(PLATFORM_ID) private platformId: string,\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!this.isBrowser) {\n return next.handle(req);\n }\n const apiUrl = this.configService.get('apiUrl');\n if (apiUrl === req.url.substr(0, apiUrl.length)) {\n req = req.clone({withCredentials: true});\n }\n const csrf = getCookie('csrftoken');\n if (csrf) {\n req = req.clone({\n setHeaders: {'X-CSRFToken': csrf}\n });\n }\n return next.handle(req);\n }\n}\n","import {\n ɵComponentType as ComponentType,\n ɵDirectiveType as DirectiveType,\n ɵComponentDef as ComponentDef,\n ɵDirectiveDef as DirectiveDef\n} from '@angular/core';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Subject } from 'rxjs/internal/Subject';\n\nexport interface OnDestroyLike {\n ngOnDestroy(): void;\n [key: string]: any;\n}\n\nexport function componentDestroyed(component: OnDestroyLike): Observable<void> {\n if ((component.constructor as any).__componentDestroyed$) {\n return (component.constructor as any).__componentDestroyed$;\n }\n throw new Error('Use @UntilDestroy decorator in class');\n}\n\nexport function UntilDestroy(cmpType: any) {\n const def = getDef(cmpType as any);\n const original = (def as any).onDestroy;\n cmpType.__componentDestroyed$ = new Subject<void>();\n (def as any).onDestroy = function() {\n cmpType.__componentDestroyed$.next();\n cmpType.__componentDestroyed$.complete();\n original.apply(this);\n };\n}\n\nfunction getDef<T>(\n type: DirectiveType<T> | ComponentType<T>\n): DirectiveDef<T> | ComponentDef<T> {\n return (type as ComponentType<T>).ɵcmp || (type as DirectiveType<T>).ɵdir;\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { debounceTime, delay, map, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nexport interface CheckEmailServiceInterface {\n checkEmail(value: string, selfCheck: boolean): Observable<boolean>;\n}\n\nexport const minLengthArrayValidator = (minLength: number) => {\n return (c: AbstractControl) => {\n return c.value.length < minLength\n ? {minLengthArray: {valid: false}}\n : null;\n };\n};\n\nexport const validatePhone = (control: AbstractControl) => {\n if (!control.value) {\n return null;\n }\n const value = `${control.value}`.replace(/\\D/gi, '');\n return value.length === 11 ? null : {invalidPhone: {valid: false}};\n};\n\nexport const validateDate = (control: AbstractControl) => {\n const re = /\\d{2}\\.\\d{2}\\.\\d{4}/gi;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidDate: {valid: false}};\n};\n\nexport const validateEmail = (authService: CheckEmailServiceInterface, selfCheck = true, ignore = []) => {\n const subject = of(null).pipe(\n delay(500)\n );\n return (control: AbstractControl) => {\n if (ignore.indexOf(control.value) > -1) {\n return of(null);\n }\n return subject.pipe(\n switchMap(() => authService.checkEmail(control.value, selfCheck).pipe(\n map(valid => valid ? null : {emailTaken: true})\n ))\n );\n };\n};\n\nexport const validateUrl = (control: AbstractControl) => {\n const re = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidUrl: true};\n};\n\nexport function fileSizeValidator(maxFileSize: number): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value) {\n return null;\n }\n };\n}\n","export function getEnumOptions(enumClass): number[] {\n return Object.keys(enumClass)\n .map(v => enumClass[v])\n .filter(v => isNaN(+v) === false)\n .map(v => +v);\n}\n\n","import { captureException } from '@sentry/browser';\n\nexport function handleError(error, force = false, production = true) {\n if (!(error && (error.status === 0 || error.status === 404)) || (force && error.status !== 0)) {\n captureException(error);\n }\n\n if (!production) {\n console.error(error);\n }\n}\n","export function isTouchDevice() {\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n const mq = (q) => {\n return window.matchMedia(q).matches;\n };\n\n if (('ontouchstart' in window) || (window as any).DocumentTouch && document instanceof (window as any).DocumentTouch) {\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 query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n}\n","import { FormGroup } from '@angular/forms';\n\nexport function markFormGroupTouched(formGroup: FormGroup) {\n (Object as any).values(formGroup.controls).forEach(control => {\n control.markAsTouched();\n control.markAsDirty();\n\n if (control instanceof FormGroup) {\n markFormGroupTouched(control);\n } else if (control.controls) {\n control.controls.forEach(c => {\n if (c instanceof FormGroup) {\n markFormGroupTouched(c);\n } else {\n c.markAsTouched();\n c.markAsDirty();\n }\n });\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@mtgame/core/localization/hockey-penalty-types.ts","ng://@mtgame/core/models/util.ts","ng://@mtgame/core/models/file.ts","ng://@mtgame/core/models/sport.ts","ng://@mtgame/core/models/basketball-profile.ts","ng://@mtgame/core/models/user-profile.ts","ng://@mtgame/core/models/city.ts","ng://@mtgame/core/models/volleyball-profile.ts","ng://@mtgame/core/models/hockey-profile.ts","ng://@mtgame/core/models/football-profile.ts","ng://@mtgame/core/models/handball-profile.ts","ng://@mtgame/core/models/user.ts","ng://@mtgame/core/models/tournament-season.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/volleyball-game-config.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/game.ts","ng://@mtgame/core/models/league-court.ts","ng://@mtgame/core/models/media-item.ts","ng://@mtgame/core/models/hockey-game-config.ts","ng://@mtgame/core/models/football-game-config.ts","ng://@mtgame/core/models/handball-game-config.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/team-user.ts","ng://@mtgame/core/storage/store.ts","ng://@mtgame/core/services/base.service.ts","ng://@mtgame/core/services/config.service.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/basketball-game-log.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/league-player.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/basketball-statistic.ts","ng://@mtgame/core/models/basketball-game-team-statistic.ts","ng://@mtgame/core/models/basketball-game-statistic.ts","ng://@mtgame/core/models/hockey-game-log.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/api/game-base-api.ts","ng://@mtgame/core/api/basketball-game-api.ts","ng://@mtgame/core/models/feedback.ts","ng://@mtgame/core/api/feedback-api.ts","ng://@mtgame/core/api/file-api.ts","ng://@mtgame/core/models/football-game-log.ts","ng://@mtgame/core/models/hockey-game-statistic.ts","ng://@mtgame/core/models/hockey-statistic.ts","ng://@mtgame/core/models/hockey-game-team-statistic.ts","ng://@mtgame/core/api/hockey-game-api.ts","ng://@mtgame/core/models/handball-game-log.ts","ng://@mtgame/core/models/football-game-statistic.ts","ng://@mtgame/core/models/football-statistic.ts","ng://@mtgame/core/models/football-game-team-statistic.ts","ng://@mtgame/core/api/football-game-api.ts","ng://@mtgame/core/models/tournament-stage.ts","ng://@mtgame/core/models/handball-game-statistic.ts","ng://@mtgame/core/models/handball-statistic.ts","ng://@mtgame/core/models/handball-game-team-statistic.ts","ng://@mtgame/core/api/handball-game-api.ts","ng://@mtgame/core/models/tournament-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/league-news.ts","ng://@mtgame/core/models/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/models/tournament-event.ts","ng://@mtgame/core/models/league-user.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/league-banner.ts","ng://@mtgame/core/models/league-partner.ts","ng://@mtgame/core/models/poll.ts","ng://@mtgame/core/models/league-document.ts","ng://@mtgame/core/api/league-api.ts","ng://@mtgame/core/api/league-news-api.ts","ng://@mtgame/core/api/media-api.ts","ng://@mtgame/core/models/game-invite.ts","ng://@mtgame/core/models/team-invite.ts","ng://@mtgame/core/models/team-event-type.ts","ng://@mtgame/core/models/team-event-invite.ts","ng://@mtgame/core/localization/team-event-type.ts","ng://@mtgame/core/models/team-event.ts","ng://@mtgame/core/models/notification.ts","ng://@mtgame/core/models/tournament-team-user-invite.ts","ng://@mtgame/core/models/tournament-invite.ts","ng://@mtgame/core/models/notification-settings.ts","ng://@mtgame/core/models/team-permission.ts","ng://@mtgame/core/api/notification-base-api.ts","ng://@mtgame/core/api/notification-api.ts","ng://@mtgame/core/api/org-notification-api.ts","ng://@mtgame/core/api/reference-api.ts","ng://@mtgame/core/models/team-invite-external.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/models/team-access.ts","ng://@mtgame/core/api/team-api.ts","ng://@mtgame/core/api/team-event-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-api.ts","ng://@mtgame/core/api/tournament-season-api.ts","ng://@mtgame/core/api/tournament-stage-api.ts","ng://@mtgame/core/models/user-access.ts","ng://@mtgame/core/models/volleyball-game-log.ts","ng://@mtgame/core/api/user-api.ts","ng://@mtgame/core/models/volleyball-game-team-statistic.ts","ng://@mtgame/core/models/volleyball-game-statistic.ts","ng://@mtgame/core/api/volleyball-game-api.ts","ng://@mtgame/core/api/public-team-api.ts","ng://@mtgame/core/api/public-user-api.ts","ng://@mtgame/core/localization/basketball-game-log-types.ts","ng://@mtgame/core/localization/hockey-game-log-types.ts","ng://@mtgame/core/localization/football-game-log-types.ts","ng://@mtgame/core/localization/handball-game-log-types.ts","ng://@mtgame/core/localization/overtime-types.ts","ng://@mtgame/core/localization/team-user-role.ts","ng://@mtgame/core/localization/user-profile.ts","ng://@mtgame/core/localization/volleyball-game-log-types.ts","ng://@mtgame/core/models/league-playlist.ts","ng://@mtgame/core/services/centrifugo.service.ts","ng://@mtgame/core/storage/storage-engine.ts","ng://@mtgame/core/storage/local-storage-engine.ts","ng://@mtgame/core/utils/cookie.ts","ng://@mtgame/core/utils/favicon.ts","ng://@mtgame/core/http-cookie.interceptor.ts","ng://@mtgame/core/utils/component-destroyed.ts","ng://@mtgame/core/utils/validators.ts","ng://@mtgame/core/utils/enum.ts","ng://@mtgame/core/utils/errors.ts","ng://@mtgame/core/utils/device.ts","ng://@mtgame/core/utils/form.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","HockeyPenaltyTypes","id","code","title","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","penaltyTypeField","find","item","listField","modelClass","isArray","DateField","_super","date","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","slice","DateTimeField","ModelInstance","config","mappingFields","relation","path","modelType","map","instance","backField","frontField","extractValue","undefined","FileEngine","ToFrontHook","descriptor","args","_i","parseMethod","ToBackHook","keyParts","split","keyParts_1","keyParts_1_1","k","SportTypes","File","_originalName","name","resizedPath","_path","filePath","file","original_name","resized_path","mime_type","size","engine","created_at","createdAt","GameBasketballPosition","WorkHand","Sport","isBasketball","basketball","parentId","isClassicBasketball","classic_basketball","isStreetball","streetball","isVolleyball","volleyball","isClassicVolleyball","classic_volleyball","isBeachVolleyball","beach_volleyball","isHockey","hockey","isIceHockey","ice_hockey","isBallHockey","ball_hockey","isFootball","football","isClassicFootball","classic_football","isMiniFootball","mini_football","isHandball","handball","isHandballClassic","handball_classic","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","GameHockeyPosition","HockeyWorkHand","VolleyballProfile","GameFootballPosition","FootballWorkFoot","HockeyProfile","GameHandballPosition","FootballProfile","work_foot","workFoot","UserGender","HandballProfile","TournamentSeasonStatuses","User","user","lastName","firstName","filter","join","substr","birthDate","diff","getTime","Math","floor","last_name","first_name","middle_name","email","phone","birth_date","photo","profile","basketball_profile","volleyball_profile","hockey_profile","football_profile","handball_profile","wizards","city","gender","is_active","basketballProfile","volleyballProfile","hockeyProfile","footballProfile","handballProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","socialLinks","link","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","cover","about","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","VolleyballStatisticTypes","GameTimeTypes","OvertimeTypes","TournamentSeason","preview_image","status","start_date","closed_date","tournaments","previewImage","startDate","closedDate","VolleyballGameTypes","TournamentSettings","age_from","age_to","max_team_players","max_game_players","type","tours_count","periods_count","period_time","overtime_type","overtime_time","overtime_score","game_type","timeout_count","timeout_time","substitute_count","game_up_to_score","volleyball_score_in_set","volleyball_score_in_last_set","manage_team_application","recruitment_is_open","transfer_is_open","basketball_statistic_type","volleyball_statistic_type","shot_clock_enabled","game_time_type","with_result_table","basketballStatisticType","volleyballStatisticType","gameTimeType","overtimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","location","price","regulation_files","settings","league","teams_count","team_winner","team_second","team_third","season","season_id","regulationFile","teamWinner","teamSecond","teamThird","BasketballGameConfig","overtime_timeout_count","statistic_type","statisticType","GameStatuses","GameResultTypes","VolleyballGameConfig","gameType","best_of_three","getSetMaxScore","set","setsCount","scoreInLastSet","scoreInSet","score_in_set","score_in_last_set","LeagueCourt","address","league_id","MediaItem","Boolean","videoUrl","original_photo","list_photo","detail_photo","game","tournament","game_id","video_url","video_preview","is_live","originalPhoto","listPhoto","detailPhoto","videoPreview","HockeyGameConfig","FootballGameConfig","HandballGameConfig","Game","_this","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","tournament_team_id","competitor_team","competitor_tournament_team_id","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","basketball_game_config","volleyball_game_config","hockey_game_config","football_game_config","handball_game_config","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media_live_count","media","resultType","basketballGameConfig","volleyballGameConfig","hockeyGameConfig","footballGameConfig","handballGameConfig","tournamentCourt","updateItemInArray","force","checkFunction","isFunction","updatedAt","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","TeamUserRole","Store","get","getSubject","pipe","save","appendItem","appendItems","prependItem","prependItems","updateItem","updateItems","deleteItem","dispose","complete","clearStorageData","clear","getEngine","BehaviorSubject","BaseService","store","Injectable","providedIn","ConfigService","configData","initialize","_a","Optional","Inject","TournamentGroup","TournamentTeam","gamesCount","wonGamesCount","group","final_standing","draw_games_count","last_games_count","last_games_won","missed_sum","score_points_sum","missed_points_sum","games","notifications_count","win_normal_time_games_count","lose_normal_time_games_count","win_overtime_games_count","lose_overtime_games_count","last_five_games","lastFiveGames","BasketballGameLogTypes","TeamUser","teamPlayer","role","number","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","LeaguePlayer","middleName","has_changes","rating","TournamentTeamUser","tournament_team","team_user","disqualified","disqualification","league_player","tournamentTeam","teamUser","leaguePlayer","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","gameTime","tournament_team_user","month","win_lose","two_points_made","three_points_made","free_throws_made","one_points_made","two_point_attempts","three_point_attempts","free_throw_attempts","one_point_attempts","two_point_percent","three_point_percent","free_throw_percent","one_point_percent","assists","blocks","rebounds","offensive_rebounds","defensive_rebounds","steals","turnovers","personal_fouls","technical_fouls","unsportsmanlike_fouls","game_time","newbie","rank","tournamentTeamUser","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","updated_at","HockeyGameLogTypes","HockeyAdvantageTypes","BasketballGameLog","active","isPointsType","two_point_made","three_point_made","free_throw_made","one_point_made","indexOf","logType","isReboundType","rebound","offensive_rebound","defensive_rebound","isFoulType","personal_foul","technical_foul","unsportsmanlike_foul","getScore","compare","model","time","minutes","seconds","unique_id","log_type","is_highlight","GameUser","is_mvp","GameBaseApi","httpClient","configService","getUsers","gameId","toPromise","getMvp","HttpClient","BasketballGameApi","getById","getTeamStatistic","getUserStatistic","getLogs","downloadProtocol","fileType","responseType","downloadFibaProtocol","Feedback","theme","message","files","captcha","FeedbackApi","sendFeedback","post","response","sendLeagueFeedback","leagueId","FileApi","upload","fileData","filename","width","params","HttpParams","formData","FormData","append","createZipArchive","files_1","files_1_1","FootballGameLogTypes","HockeyGameLog","_penalizedGameUserId","isScoreType","goal","shootout_goal","isPenaltyType","minor_penalty","major_penalty","misconduct_penalty","game_misconduct_penalty","penalty_shot","match_penalty","isAfter","log","advantage","advantage_num","is_goalie","penalty_type","penalized_game_user_id","mutual_penalty","penaltyType","HockeyGameStatistic","evShotsOnGoal","ppShotsOnGoal","shShotsOnGoal","evShotsBlocked","ppShotsBlocked","shShotsBlocked","evShotMisses","ppShotMisses","shShotMisses","ppShots","evShots","shShots","ppGoals","shGoals","evGoals","ppAssists","evAssists","shAssists","faceOffWins","faceOffLosses","shootoutAttempts","shootoutGoals","saves","goalsAgainst","shotsAgainst","round","pp_shot_misses","pp_shots_on_goal","pp_shots_blocked","ev_shot_misses","ev_shots_on_goal","ev_shots_blocked","sh_shot_misses","sh_shots_on_goal","sh_shots_blocked","pp_goals","ev_goals","sh_goals","pp_assists","ev_assists","sh_assists","shootout_attempts","shootout_goals","block_shots","face_off_losses","face_off_wins","goals_against","safety_rate","penalty_minutes","plus_minus","HockeyStatistic","lose_games_count","pp_shots","ev_shots","sh_shots","pp_goals_percent","ev_goals_percent","sh_goals_percent","goals","shot_misses","shots_on_goal","shots_blocked","shots","goals_percent","shots_against","saves_percent","face_offs","face_off_percent","HockeyGameTeamStatistic","HockeyGameApi","format","downloadApplication","HandballGameLogTypes","FootballGameLog","penalty_goal","small_penalty_goal","FootballGameStatistic","shotMisses","shotsOnGoal","shotsBlocked","penaltyGoals","smallPenaltyGoals","totalGoals","penaltyAttempts","smallPenaltyAttempts","penaltySaves","penaltyGoalsAgainst","smallPenaltySaves","smallPenaltyGoalsAgainst","penaltyShotsAgainst","smallPenaltyShotsAgainst","corners","free_kicks","penalty_goals","penalty_attempts","penalty_goals_against","penalty_saves","small_penalty_goals","small_penalty_attempts","small_penalty_goals_against","small_penalty_saves","fouls","yellow_cards","red_cards","perfect_passes","losses","outs","FootballStatistic","shots_on_goal_percent","total_goals","penalty_goals_percent","penalty_shots_against","penalty_saves_percent","small_penalty_goals_percent","small_penalty_shots_against","small_penalty_saves_percent","total_saves","total_goals_against","FootballGameTeamStatistic","FootballGameApi","TournamentStageStatuses","HandballGameLog","foul","yellow_card","red_card","HandballGameStatistic","penaltyShotsOnGoal","penaltyMisses","penaltyShots","penalty_misses","penalty_shots_on_goal","yellowCards","two_minute_fouls","HandballStatistic","penalty_shots","HandballGameTeamStatistic","HandballGameApi","TournamentNews","picture","text","author","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","stages","PlayoffTypes","TournamentStage","generateArray","LeagueNewsType","PlayoffSettings","rounds","final_rounds","third_place_rounds","Playoff","teamsCount","getPlayoffStages","stagesCount","stage","playoffStage","pow","is_official","VolleyballStatistic","serve_hits","serve_faults","serve_aces","serve_percent","ace_percent","stuff_blocks","block_faults","block_rebounds","block_percent","attack_spikes","attack_faults","attack_shots","attack_percent","receives","receive_faults","excellent_receives","receive_percent","serve_receives","serve_receive_faults","excellent_serve_receives","serve_receive_percent","faults","TournamentStageTeam","received_points","TournamentEventTypes","LeagueNews","preview_text","detail_text","mobile_picture","is_main","video_link","tag","mobilePicture","LeagueUserRoles","LeagueUserPermissions","TournamentEvent","news","event","LeagueUser","_role","permissions","TournamentApi","tournamentId","getByAlias","getNews","getEvents","page","filters","search","tournamentTour","observe","total","headers","getTournamentStages","getPlayoff","getPlayoffGames","playoffId","getGamesStages","getGames","applyGamesFilters","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatisticLeaders","applyStatisticLeadersFilters","getVolleyballStatisticLeaders","getHockeyStatisticLeaders","getFootballStatisticLeaders","getHandballStatisticLeaders","getBasketballStatistic","per_game","tournament_ids","getVolleyballStatistic","getHockeyStatistic","getFootballStatistic","getHandballStatistic","getTournamentTeamUsers","myPermission","getTournamentTeamTournaments","getTournamentUserTournaments","tournamentTeamUserId","tournamentIds","tournamentStageId","statuses","tournamentCourtId","query","fields","BannerLocation","LeaguePartner","sort","PollStatuses","LeagueBanner","LeagueDocument","LeagueApi","getByDomain","domain","getTournaments","getTournamentSeasons","getSeasons","notClosed","include","getPartners","getBanners","getCourts","getGraphicSettings","getDocuments","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getMainLeagueNewsList","getNewsById","newsId","getTournamentNewsList","MediaApi","getMedia","mediaId","getTournamentGameMedia","applyGameMediaFilters","getLeagueGameMedia","getLeagueMedia","mediaType","getGameMediaById","getGameMedia","createZip","mediaIds","downloadMedia","mediaCount","GameInviteStatus","PollVariant","uuid","PollAnswer","answer_uuid","poll_id","Poll","variantsWithAnswers","_variants","_answers","calculateAnswersPercentage","variants","answersByVariant","reduce","acc","answerUuid","variant","percent","a","answers","multiple_answer","anonymous","TeamInvite","user_accept","team_accept","updateAt","TeamEventTypes","GameInvite","TeamEventInviteStatuses","TeamEventTypeLocalization","training","other","TeamEvent","eventType","eventCustomName","event_type","event_custom_name","NotificationType","NotificationServiceEnum","TeamEventInvite","team_event_id","team_user_id","TournamentTeamUserInvite","tournament_team_invite_id","accepted","TournamentInvite","teamAccept","organizationAccept","organization_accept","user_invites_count","user_invites","userInvites","NotificationAllowTypes","Notification","initiator","team_invite","poll","game_invite","team_event","team_event_invite","tournament_invite","viewed","protected","service","teamInvite","gameInvite","teamEvent","teamEventInvite","tournamentInvite","TeamPermissionTypes","NotificationSettings","popup","sound","browser","NotificationBaseApi","getCount","apiUrl","getList","markViewed","notificationId","markAllViewed","getNotificationSettings","updateNotificationSettings","NotificationApi","OrgNotificationApi","ReferenceApi","getCities","getSports","TeamInviteExternal","UserPermissionTypes","TeamPermission","players","statistic","polls","events","TeamAccess","can_edit","can_view_users","can_manage_permission","can_change_owner","can_delete","can_manage_invites","can_view_invites","can_manage_polls","can_view_polls","can_answer_poll","can_manage_games","can_view_games","can_view_statistic","can_promote_users","can_edit_users","can_delete_users","can_view_events","can_manage_events","can_view_tournaments","can_manage_tournaments","TeamApi","sportId","getTeamAccess","update","values","patch","delete","getPermission","updatePermission","permission","updateUserRole","teamUserId","updateUserNumber","gameNumber","deleteUser","changeOwner","getInvites","sendInvite","acceptInvite","invite","declineInvite","resendInvite","getInvitesExternal","sendInviteExternal","deleteInviteExternal","resendInviteExternal","getPolls","archive","createPoll","getUsersStatistic","joinTeam","leaveTeam","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentJoinData","validUsersCount","invalidUsersCount","hasAccess","inviteSent","alreadyInTournament","valid_users_count","invalid_users_count","has_access","invite_sent","already_in_tournament","TournamentJoinTeam","join_data","joinData","TournamentJoinApi","getTeamsForJoin","getTeamUsers","joinTournament","invites","TournamentSeasonApi","seasonId","TournamentStageApi","getGroups","stageId","getPlayoffs","UserAccess","edit","personal_data","teams","VolleyballGameLogType","UserPermission","personalData","UserApi","getCurrentUser","getAccess","updateUser","updateUserPhoto","changePassword","oldPassword","password","passwordConfirm","payload","old_password","password_confirm","changeEmail","changeEmailConfirm","token","getUserProfile","getBasketballProfile","getVolleyballProfile","updateUserProfile","userProfile","updateUserBasketballProfile","updateUserVolleyballProfile","getUserPermissions","updateUserPermission","getStatistics","getStreetballStatistics","getGameInvites","acceptGameInvite","declineGameInvite","searchUsers","setWizardShowed","wizard","put","VolleyballGameTeamStatistic","VolleyballGameStatistic","attackSpikes","attackShots","stuffBlocks","blockRebounds","excellentReceives","SCORE_LOG_TYPES","serve_ace","stuff_block","attack_spike","point","FAULT_LOG_TYPES","serve_fault","attack_fault","block_fault","receive_fault","fault","serve_receive_fault","VolleyballGameLog","rally","includes","isFaultType","isServe","serve_hit","isAttack","attack_shot","isReceive","receive","excellent_receive","isServeReceive","serve_receive","excellent_serve_receive","isBlock","block_rebound","isEnterExit","enter_game","exit_game","timeout","isComboType","VolleyballGameApi","PublicTeamApi","PublicUserApi","getTournamentUser","BasketballGameLogTypeLocalization","_a$1","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","team_rebound","HockeyGameLogTypeLocalization","_a$2","shot_miss","shot_on_goal","shot_blocked","shootout_attempt","block_shot","face_off_lose","face_off_win","penalty_start","penalty_end","FootballGameLogTypeLocalization","_a$3","penalty_attempt","small_penalty_attempt","corner","free_kick","penalty_save","small_penalty_save","perfect_pass","loss","out","HandballGameLogTypeLocalization","_a$4","penalty_miss","penalty_shot_on_goal","two_minute_foul","OvertimeTypeLocalization","_a$5","to_score_diff","to_score_total","without_overtime","to_first_goal","to_first_goal_and_bullitts","bullitts","penalties","time_and_penalties","TeamUserRoleLocalization","_a$6","member","moderator","admin","coach","head_coach","playing_coach","manager","head_manager","captain","assistant","GameBasketballPositionLocalization","_a$7","point_guard","shooting_guard","small_forward","power_forward","center","GameBasketballPositionShortLocalization","WorkHandLocalization","left","right","GameVolleyballPositionLocalization","_d","setter","libero","middle_player","receiver_attacker","dioganal","GameVolleyballPositionShortLocalization","_e","GameVolleyballPositionShortRuLocalization","_f","VolleyballWorkHandLocalization","_g","GameHockeyPositionLocalization","_h","goaltender","defensemen","forward","GameFootballPositionLocalization","_j","goalkeeper","midfielder","FootballWorkFootLocalization","_k","both","GameHandballPositionLocalization","_l","winger","pivot","centre_back","fullback","VolleyballGameLogTypeLocalization","_a$8","LeaguePlaylist","key_code","CentrifugoService","channels$","subscriptions","connectedSubject","listen","channel","Subject","subscription","connect","subscribe","connected","addEngineSubscription","setTimeout","unsubscribe","initializeEngineSubject","ReplaySubject","initializeEngine","url","timestamp","transports","centrifuge","on","publish","Observable","observer","res","disconnect","Centrifuge","resolveMessage","bind","StorageEngineField","defaultValue","StorageEngine","addField","field","setItem","getItem","removeItem","Error","LocalStorageEngine","localStorage","JSON","stringify","parse","getCookie","parts","document","cookie","shift","getIconsData","folder","rel","sizes","href","color","HttpCookieInterceptor","injector","platformId","isBrowser","isPlatformBrowser","intercept","req","handle","clone","withCredentials","csrf","setHeaders","X-CSRFToken","Injector","PLATFORM_ID","cmpType","def","ɵcmp","ɵdir","original","onDestroy","__componentDestroyed$","leagueAlias","data_1","data_1_1","createElement","e_2","setAttribute","head","appendChild","component","maxFileSize","control","array","chunks","chunkLength","ceil","production","captureException","console","prefixes","window","DocumentTouch","q","matchMedia","matches","markFormGroupTouched","formGroup","controls","markAsTouched","markAsDirty","FormGroup","minLength","minLengthArray","valid","test","invalidDate","authService","selfCheck","ignore","subject","of","delay","switchMap","checkEmail","emailTaken","replace","invalidPhone","invalidUrl"],"mappings":";;;;;;;;;;;;;;oFAgBA,IAAIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAGrB,SAASO,EAAUR,EAAGC,GAEzB,SAASQ,IAAOC,KAAKC,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEY,UAAkB,OAANX,EAAaC,OAAOW,OAAOZ,IAAMQ,EAAGG,UAAYX,EAAEW,UAAW,IAAIH,GAG5E,IAAIK,EAAW,WAQlB,OAPAA,EAAWZ,OAAOa,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIZ,KADTW,EAAIG,UAAUF,GACOhB,OAAOU,UAAUL,eAAee,KAAKL,EAAGX,KAAIU,EAAEV,GAAKW,EAAEX,IAE9E,OAAOU,IAEKO,MAAMb,KAAMU,YAezB,SAASI,EAAWC,EAAYC,EAAQC,EAAKC,GAChD,IAA2H5B,EAAvH6B,EAAIT,UAAUC,OAAQS,EAAID,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAO1B,OAAO6B,yBAAyBL,EAAQC,GAAOC,EACrH,GAAuB,iBAAZI,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIV,EAAIO,EAAWJ,OAAS,EAAGH,GAAK,EAAGA,KAASlB,EAAIyB,EAAWP,MAAIY,GAAKD,EAAI,EAAI7B,EAAE8B,GAAKD,EAAI,EAAI7B,EAAE0B,EAAQC,EAAKG,GAAK9B,EAAE0B,EAAQC,KAASG,GAChJ,OAAOD,EAAI,GAAKC,GAAK5B,OAAOgC,eAAeR,EAAQC,EAAKG,GAAIA,EAGzD,SAASK,EAAQC,EAAYC,GAChC,OAAO,SAAUX,EAAQC,GAAOU,EAAUX,EAAQC,EAAKS,IAOpD,SAASE,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUnB,MAAMgB,EAASC,GAAc,KAAKS,WAI/D,SAASM,EAAYhB,EAASiB,GACjC,IAAsGC,EAAGC,EAAG1C,EAAG2C,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP9C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAO+C,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAO3D,OAAUiD,EACvJ,SAASM,EAAK9C,GAAK,OAAO,SAAUmD,GAAK,OACzC,SAAcC,GACV,GAAId,EAAG,MAAM,IAAIe,UAAU,mCAC3B,KAAOZ,GAAG,IACN,GAAIH,EAAI,EAAGC,IAAM1C,EAAY,EAARuD,EAAG,GAASb,EAAU,OAAIa,EAAG,GAAKb,EAAS,SAAO1C,EAAI0C,EAAU,SAAM1C,EAAEM,KAAKoC,GAAI,GAAKA,EAAET,SAAWjC,EAAIA,EAAEM,KAAKoC,EAAGa,EAAG,KAAKlB,KAAM,OAAOrC,EAE3J,OADI0C,EAAI,EAAG1C,IAAGuD,EAAK,CAAS,EAARA,EAAG,GAAQvD,EAAE+B,QACzBwB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGvD,EAAIuD,EAAI,MACxB,KAAK,EAAc,OAAXX,EAAEC,QAAgB,CAAEd,MAAOwB,EAAG,GAAIlB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIa,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKX,EAAEI,IAAIS,MAAOb,EAAEG,KAAKU,MAAO,SACxC,QACI,KAAMzD,EAAI4C,EAAEG,MAAM/C,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,KAAkB,IAAVkD,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEX,EAAI,EAAG,SACjG,GAAc,IAAVW,EAAG,MAAcvD,GAAMuD,EAAG,GAAKvD,EAAE,IAAMuD,EAAG,GAAKvD,EAAE,IAAM,CAAE4C,EAAEC,MAAQU,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYX,EAAEC,MAAQ7C,EAAE,GAAI,CAAE4C,EAAEC,MAAQ7C,EAAE,GAAIA,EAAIuD,EAAI,MAC7D,GAAIvD,GAAK4C,EAAEC,MAAQ7C,EAAE,GAAI,CAAE4C,EAAEC,MAAQ7C,EAAE,GAAI4C,EAAEI,IAAIU,KAAKH,GAAK,MACvDvD,EAAE,IAAI4C,EAAEI,IAAIS,MAChBb,EAAEG,KAAKU,MAAO,SAEtBF,EAAKf,EAAKlC,KAAKiB,EAASqB,GAC1B,MAAOV,GAAKqB,EAAK,CAAC,EAAGrB,GAAIQ,EAAI,EAAI,QAAWD,EAAIzC,EAAI,EACtD,GAAY,EAARuD,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAExB,MAAOwB,EAAG,GAAKA,EAAG,QAAK,EAAQlB,MAAM,GArB9BL,CAAK,CAAC7B,EAAGmD,MAkCtD,SAASK,EAASC,GACrB,IAAI3D,EAAsB,mBAAXmD,QAAyBA,OAAOC,SAAUQ,EAAI5D,GAAK2D,EAAE3D,GAAIC,EAAI,EAC5E,GAAI2D,EAAG,OAAOA,EAAEvD,KAAKsD,GACrB,GAAIA,GAAyB,iBAAbA,EAAEvD,OAAqB,MAAO,CAC1C4B,KAAM,WAEF,OADI2B,GAAK1D,GAAK0D,EAAEvD,SAAQuD,OAAI,GACrB,CAAE7B,MAAO6B,GAAKA,EAAE1D,KAAMmC,MAAOuB,KAG5C,MAAM,IAAIJ,UAAUvD,EAAI,0BAA4B,mCAGjD,SAAS6D,EAAOF,EAAGzD,GACtB,IAAI0D,EAAsB,mBAAXT,QAAyBQ,EAAER,OAAOC,UACjD,IAAKQ,EAAG,OAAOD,EACf,IAAmB9C,EAAYoB,EAA3BhC,EAAI2D,EAAEvD,KAAKsD,GAAOG,EAAK,GAC3B,IACI,WAAc,IAAN5D,GAAgBA,KAAM,MAAQW,EAAIZ,EAAE+B,QAAQI,MAAM0B,EAAGL,KAAK5C,EAAEiB,OAExE,MAAOiC,GAAS9B,EAAI,CAAE8B,MAAOA,GACjC,QACQ,IACQlD,IAAMA,EAAEuB,OAASwB,EAAI3D,EAAU,SAAI2D,EAAEvD,KAAKJ,GAE1D,QAAkB,GAAIgC,EAAG,MAAMA,EAAE8B,OAE7B,OAAOD,EAGJ,SAASE,IACZ,IAAK,IAAIF,EAAK,GAAI7D,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAC3C6D,EAAKA,EAAGG,OAAOJ,EAAO1D,UAAUF,KACpC,OAAO6D,MClJEI,EAAqB,CAChC,CAACC,GAAI,EAAGC,KAAM,QAASC,MAAO,oBAC9B,CAACF,GAAI,EAAGC,KAAM,WAAYC,MAAO,0BACjC,CAACF,GAAI,EAAGC,KAAM,QAASC,MAAO,iBAC9B,CAACF,GAAI,EAAGC,KAAM,QAASC,MAAO,eAC9B,CAACF,GAAI,EAAGC,KAAM,OAAQC,MAAO,cAC7B,CAACF,GAAI,EAAGC,KAAM,QAASC,MAAO,iBAC9B,CAACF,GAAI,EAAGC,KAAM,QAASC,MAAO,gBAC9B,CAACF,GAAI,EAAGC,KAAM,OAAQC,MAAO,YAC7B,CAACF,GAAI,EAAGC,KAAM,OAAQC,MAAO,wBAC7B,CAACF,GAAI,GAAIC,KAAM,SAAUC,MAAO,iCAChC,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,SAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,kBAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,iBAC/B,CAACF,GAAI,GAAIC,KAAM,WAAYC,MAAO,6BAClC,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,oBAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,sBAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,yBAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,6BAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,gCAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,gBAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,0BAC/B,CAACF,GAAI,GAAIC,KAAM,KAAMC,MAAO,cAC5B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,sBAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,gCAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,wBAC/B,CAACF,GAAI,GAAIC,KAAM,SAAUC,MAAO,sBAChC,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,8CAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,qBAC/B,CAACF,GAAI,GAAIC,KAAM,OAAQC,MAAO,aAC9B,CAACF,GAAI,GAAIC,KAAM,SAAUC,MAAO,UAChC,CAACF,GAAI,GAAIC,KAAM,OAAQC,MAAO,YAC9B,CAACF,GAAI,GAAIC,KAAM,OAAQC,MAAO,YAC9B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,2BAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,yCAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,eAC/B,CAACF,GAAI,GAAIC,KAAM,MAAOC,MAAO,aAC7B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,kBAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,kBAC/B,CAACF,GAAI,GAAIC,KAAM,SAAUC,MAAO,gBAChC,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,gBAC/B,CAACF,GAAI,GAAIC,KAAM,UAAWC,MAAO,sBACjC,CAACF,GAAI,GAAIC,KAAM,SAAUC,MAAO,gBAChC,CAACF,GAAI,GAAIC,KAAM,SAAUC,MAAO,eAChC,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,cAC/B,CAACF,GAAI,GAAIC,KAAM,OAAQC,MAAO,QAC9B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,kCAC/B,CAACF,GAAI,GAAIC,KAAM,QAASC,MAAO,+BC5B/B,SAAAC,EAAYC,WACV,GAAIA,MACF,IAAkB,IAAAC,EAAAd,EAAAzE,OAAOwF,KAAKF,IAAKG,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAAhC,IAAMtB,EAAGgE,EAAA5C,MACZrC,KAAKiB,GAAO6D,EAAK7D,sGAYzB,OAPS4D,EAAAK,QAAP,SAAeC,KAIRN,EAAAO,OAAP,SAAcD,KAGhBN,cAMgBQ,EAAUC,GACxB,MAAO,CACLJ,QAAS,SAAC7C,GACR,OAAIkD,OAAOlD,GACFiD,EAAUjD,GAEVA,GAGX+C,OAAQ,SAAC/C,GACP,OAAIkD,OAAOlD,GACFA,EAEAiD,EAAUjD,cAMTmD,IACd,MAAO,CACLN,QAAS,SAACJ,GACR,OAAKA,EAGe,iBAATA,EACFA,EAEFL,EAAmBgB,MAAK,SAAAC,GAAQ,OAAAA,EAAKhB,KAAOI,KAL1C,MAOXM,OAAQ,SAACN,GACP,OAAKA,EAGe,iBAATA,EACFA,EAAKJ,GAEPI,EALE,gBAUCa,EAAUC,GACxB,MAAO,CACLV,QAAS,SAAC7C,GACR,OAAK1C,MAAMkG,QAAQxD,GAGZuD,EAAWV,QAAQ7C,GAFjB,IAIX+C,OAAQ,SAAC/C,GACP,OAAK1C,MAAMkG,QAAQxD,GAGZuD,EAAWR,OAAO/C,GAFhB,uBAOf,SAAAyD,mDAuBA,OAvB+BhG,EAAAgG,EAAAC,GACtBD,EAAAZ,QAAP,SAAec,GACb,OAAIA,EACK,IAAIC,KAAKD,QAEhB,GAGGF,EAAAV,OAAP,SAAcY,GACZ,OAAIA,EACc,IAAIC,KAAKA,KAAKC,IAC5BF,EAAKG,cACLH,EAAKI,WACLJ,EAAKK,UACLL,EAAKM,WACLN,EAAKO,aACLP,EAAKQ,eAEQC,cAAcC,MAAM,EAAG,SAEtC,GAGNZ,GAvB+BjB,iBAyB/B,SAAA8B,mDAuBA,OAvBmC7G,EAAA6G,EAAAZ,GAC1BY,EAAAzB,QAAP,SAAec,GACb,OAAIA,EACK,IAAIC,KAAKD,QAEhB,GAGGW,EAAAvB,OAAP,SAAcY,GACZ,GAAIA,EAAM,CACQ,IAAIC,KAAKA,KAAKC,IAC5BF,EAAKG,cACLH,EAAKI,WACLJ,EAAKK,UACLL,EAAKM,WACLN,EAAKO,aACLP,EAAKQ,eAEP,OAAOR,EAAKS,gBAKlBE,GAvBmC9B,YAyBnB+B,EACdC,GAKA,OAAO,SAAC7F,GACF6F,IACEA,EAAOC,gBACT9F,EAA+B,iBAAI6F,EAAOC,eAExCD,EAAOE,WACT/F,EAAyB,WAAI6F,EAAOE,UAEtC/F,EAAyB,WAAI,SAACmE,EAAU6B,GACtC,OA0DR,SAAS9B,EAAQ+B,EAA+BnC,EAAWkC,WAEzD,GAAIrH,MAAMkG,QAAQf,GAChB,OAAOA,EAAKoC,KAAI,SAAAxB,GACd,OAAOR,EAAQ+B,EAAWvB,MAI9B,IAAMyB,EAAW,IAAIF,EAGfH,EAAgBG,EAAkC,iBAClDF,EAAWE,EAA4B,WAC7C,GAAIH,MACF,IAAwB,IAAA/B,EAAAd,EAAAzE,OAAOwF,KAAK8B,IAAc7B,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAA/C,IAAM6E,EAASnC,EAAA5C,MACZgF,EAAaP,EAAcM,GAC3B/E,EAAQiF,EAAaF,EAAWtC,GAClCiC,GAAYA,EAASlH,eAAewH,GACtCF,EAASE,GAAcN,EAASM,GAAYnC,QAAQ7C,GAEpD8E,EAASE,GAAchF,oGAK7B,OAAO8E,EAnFMjC,CAAQlE,EAAQmE,IAEzBnE,EAAwB,UAAI,SAACmE,EAAU6B,GACrC,OAmFR,SAAS5B,EAAO6B,EAA+BE,EAAeH,WAC5D,IAAKG,EACH,OAAOA,EAIT,GAAIxH,MAAMkG,QAAQsB,GAChB,OAAOA,EAASD,KAAI,SAAAxB,GAClB,OAAON,EAAO6B,EAAWvB,MAI7B,IAAMZ,EAAO,GACPgC,EAAgBG,EAAkC,iBAClDF,EAAWE,EAA4B,WAC7C,GAAIH,MACF,IAAwB,IAAA/B,EAAAd,EAAAzE,OAAOwF,KAAK8B,IAAc7B,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAA/C,IAAM6E,EAASnC,EAAA5C,MACZgF,EAAaP,EAAcM,GAC7BL,GAAYA,EAASlH,eAAewH,SAAwCE,IAAzBJ,EAASE,GAC9DvC,EAAKsC,GAAaL,EAASM,GAAYjC,OAAO+B,EAASE,IAEvDvC,EAAKsC,GAAaD,EAASE,qGAKjC,OAAOvC,EA7GMM,CAAOpE,EAAQmE,UCrKlBqC,ED2KCC,EAAc,SAACzG,EAA4BC,EAAsByG,GAC5E,MAAO,CACLrF,MAAO,eAAC,IAAAsF,EAAA,GAAAC,EAAA,EAAAA,EAAAlH,UAAAC,OAAAiH,IAAAD,EAAAC,GAAAlH,UAAAkH,GACN,IAAMC,EAAc7G,EAAyB,WAC7C,GAAI6G,EACF,OAAOA,EAAYF,EAAK,GAAKA,EAAKhH,OAAS,EAAIgH,EAAK,QAAKJ,MAOpDO,EAAa,SAAC9G,EAA4BC,EAAsByG,GAC3E,MAAO,CACLrF,MAAO,eAAC,IAAAsF,EAAA,GAAAC,EAAA,EAAAA,EAAAlH,UAAAC,OAAAiH,IAAAD,EAAAC,GAAAlH,UAAAkH,GACN,IAAMC,EAAc7G,EAAwB,UAC5C,GAAI6G,EACF,OAAOA,EAAYF,EAAK,OAOhC,SAASL,EAAarG,EAAK6D,WACzB,GAAKA,EAAL,CAIA,IAAMiD,EAAW9G,EAAI+G,MAAM,KAC3B,GAAwB,IAApBD,EAASpH,OACX,OAAIM,KAAO6D,EACFA,EAAK7D,QAEZ,MAIJ,IAAgB,IAAAgH,EAAAhE,EAAA8D,GAAQG,EAAAD,EAAA1F,QAAA2F,EAAAvF,KAAAuF,EAAAD,EAAA1F,OAAE,CAArB,IAAM4F,EAACD,EAAA7F,MACV,IAAIyC,KAAQqD,KAAKrD,GAGf,OAFAA,EAAOA,EAAKqD,qGAMhB,OAAOrD,ICzNG0C,EAAAA,EAAAA,aAAAA,EAAAA,WAAU,KACpBA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,GAAA,GAAA,SCFUY,eDsBZ,SAAAC,KAoCA,OAzBE7I,OAAAgC,eAAI6G,EAAAnI,UAAA,eAAY,KAIhB,WACE,OAAOF,KAAKsI,eAAiBtI,KAAKuI,UALpC,SAAiBA,GACfvI,KAAKsI,cAAgBC,mCAOvB/I,OAAAgC,eAAI6G,EAAAnI,UAAA,OAAI,KAIR,WACE,OAAOF,KAAKwI,aAAexI,KAAKyI,WALlC,SAASC,GACP1I,KAAKyI,MAAQC,mCAQRL,EAAAnD,QAAP,SAAeJ,GACb,OAAO,MAIFuD,EAAAjD,OAAP,SAAcuD,GACZ,OAAO,MANT7H,EAAA,CADC2G,qBAMD3G,EAAA,CADCgH,oBAhCUO,EAAIvH,EAAA,CAjBhB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,OACNK,cAAe,eACf5B,KAAM,OACN6B,aAAc,cACdC,UAAW,WACXC,KAAM,OACNC,OAAQ,SACRC,WAAY,aAEdlC,SAAU,CACRiC,OAAQ3D,EAAUmC,EAAAA,YAClB0B,UAAWvC,MAGF0B,OCtBDD,EAAAA,EAAAA,aAAAA,EAAAA,WAAU,KACpBA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,mBAAA,GAAA,qBACAA,EAAAA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,mBAAA,GAAA,qBACAA,EAAAA,EAAA,iBAAA,GAAA,mBACAA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,SAAA,IAAA,WACAA,EAAAA,EAAA,iBAAA,IAAA,mBACAA,EAAAA,EAAA,cAAA,IAAA,gBACAA,EAAAA,EAAA,SAAA,IAAA,WACAA,EAAAA,EAAA,iBAAA,IAAA,uBCdUe,EAQAC,gBDiBZ,SAAAC,mDAuEA,OAvE2BvJ,EAAAuJ,EAAAtD,GAMzBsD,EAAAnJ,UAAAoJ,aAAA,WACE,OAAOtJ,KAAK0E,KAAO0D,EAAAA,WAAWmB,YAAcvJ,KAAKwJ,WAAapB,EAAAA,WAAWmB,YAG3EF,EAAAnJ,UAAAuJ,oBAAA,WACE,OAAOzJ,KAAK0E,KAAO0D,EAAAA,WAAWsB,oBAGhCL,EAAAnJ,UAAAyJ,aAAA,WACE,OAAO3J,KAAK0E,KAAO0D,EAAAA,WAAWwB,YAGhCP,EAAAnJ,UAAA2J,aAAA,WACE,OAAO7J,KAAK0E,KAAO0D,EAAAA,WAAW0B,YAAc9J,KAAKwJ,WAAapB,EAAAA,WAAW0B,YAG3ET,EAAAnJ,UAAA6J,oBAAA,WACE,OAAO/J,KAAK0E,KAAO0D,EAAAA,WAAW4B,oBAGhCX,EAAAnJ,UAAA+J,kBAAA,WACE,OAAOjK,KAAK0E,KAAO0D,EAAAA,WAAW8B,kBAGhCb,EAAAnJ,UAAAiK,SAAA,WACE,OAAOnK,KAAK0E,KAAO0D,EAAAA,WAAWgC,QAAUpK,KAAKwJ,WAAapB,EAAAA,WAAWgC,QAGvEf,EAAAnJ,UAAAmK,YAAA,WACE,OAAOrK,KAAK0E,KAAO0D,EAAAA,WAAWkC,YAGhCjB,EAAAnJ,UAAAqK,aAAA,WACE,OAAOvK,KAAK0E,KAAO0D,EAAAA,WAAWoC,aAGhCnB,EAAAnJ,UAAAuK,WAAA,WACE,OAAOzK,KAAK0E,KAAO0D,EAAAA,WAAWsC,UAAY1K,KAAKwJ,WAAapB,EAAAA,WAAWsC,UAGzErB,EAAAnJ,UAAAyK,kBAAA,WACE,OAAO3K,KAAK0E,KAAO0D,EAAAA,WAAWwC,kBAGhCvB,EAAAnJ,UAAA2K,eAAA,WACE,OAAO7K,KAAK0E,KAAO0D,EAAAA,WAAW0C,eAGhCzB,EAAAnJ,UAAA6K,WAAA,WACE,OAAO/K,KAAK0E,KAAO0D,EAAAA,WAAW4C,UAAYhL,KAAKwJ,WAAapB,EAAAA,WAAW4C,UAGzE3B,EAAAnJ,UAAA+K,kBAAA,WACE,OAAOjL,KAAK0E,KAAO0D,EAAAA,WAAW8C,kBAIzB7B,EAAAnE,QAAP,SAAeJ,GACb,OAAO,MAIFuE,EAAAjE,OAAP,SAAc+F,GACZ,OAAO,MANTrK,EAAA,CADC2G,qBAMD3G,EAAA,CADCgH,oBAnEUuB,EAAKvI,EAAA,CARjB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,OACN6C,UAAW,WACXC,WAAY,gBAGHhC,IAAcxE,gBEjB3B,SAAAyG,KAWA,OAJSA,EAAApG,QAAP,SAAe7C,KAGRiJ,EAAAlG,OAAP,SAAc/C,KAHdvB,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBATUwD,EAAWxK,EAAA,CARvB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6G,QAAS,SACTC,OAAQ,SACRC,OAAQ,aAGCH,oBCFb,SAAAI,mDASA,OAT0B5L,EAAA4L,EAAA3F,GAKjB2F,EAAAxG,QAAP,SAAe7C,KAGRqJ,EAAAtG,OAAP,SAAc/C,KAHdvB,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAPU4D,EAAI5K,EAAA,CANhB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,WAGGmD,IAAa7G,IFNdsE,EAAAA,EAAAA,yBAAAA,EAAAA,uBAAsB,KAChCA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,eAAA,GAAA,iBACAA,EAAAA,EAAA,cAAA,GAAA,gBACAA,EAAAA,EAAA,cAAA,GAAA,gBACAA,EAAAA,EAAA,OAAA,GAAA,UAGUC,EAAAA,EAAAA,WAAAA,EAAAA,SAAQ,KAClBA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,MAAA,GAAA,YGVUuC,EAQAC,gBHiBZ,SAAAC,mDAaA,OAbuC/L,EAAA+L,EAAA9F,GAO9B8F,EAAA3G,QAAP,SAAe7C,KAIRwJ,EAAAzG,OAAP,SAAc/C,KAJdvB,EAAA,CADC2G,qBAKD3G,EAAA,CADCgH,oBAVU+D,EAAiB/K,EAAA,CAZ7B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6G,QAAS,SACTO,SAAU,WACVC,UAAW,YAEbhF,SAAU,CACR+E,SAAUzG,EAAU8D,EAAAA,wBACpB6C,SAAU3G,EAAU+D,EAAAA,cAGXyC,IAA0BhH,IGzB3B8G,EAAAA,EAAAA,yBAAAA,EAAAA,uBAAsB,KAChCA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,cAAA,GAAA,gBACAA,EAAAA,EAAA,kBAAA,GAAA,oBACAA,EAAAA,EAAA,SAAA,GAAA,YAGUC,EAAAA,EAAAA,qBAAAA,EAAAA,mBAAkB,KAC5BA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,MAAA,GAAA,YCVUK,EAMAC,gBDmBZ,SAAAC,mDAaA,OAbuCrM,EAAAqM,EAAApG,GAO9BoG,EAAAjH,QAAP,SAAe7C,KAIR8J,EAAA/G,OAAP,SAAc/C,KAJdvB,EAAA,CADC2G,qBAKD3G,EAAA,CADCgH,oBAVUqE,EAAiBrL,EAAA,CAZ7B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6G,QAAS,SACTO,SAAU,WACVC,UAAW,YAEbhF,SAAU,CACR+E,SAAUzG,EAAUsG,EAAAA,wBACpBK,SAAU3G,EAAUuG,EAAAA,wBAGXO,IAA0BtH,ICzB3BoH,EAAAA,EAAAA,qBAAAA,EAAAA,mBAAkB,KAC5BA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,WAAA,GAAA,cAGUC,EAAAA,EAAAA,iBAAAA,EAAAA,eAAc,KACxBA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,MAAA,GAAA,YCRUE,EAOAC,gBDgBZ,SAAAC,mDAaA,OAbmCxM,EAAAwM,EAAAvG,GAO1BuG,EAAApH,QAAP,SAAe7C,KAIRiK,EAAAlH,OAAP,SAAc/C,KAJdvB,EAAA,CADC2G,qBAKD3G,EAAA,CADCgH,oBAVUwE,EAAaxL,EAAA,CAZzB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6G,QAAS,SACTO,SAAU,WACVC,UAAW,YAEbhF,SAAU,CACR+E,SAAUzG,EAAU4G,EAAAA,oBACpBD,SAAU3G,EAAU6G,EAAAA,oBAGXI,IAAsBzH,ICvBvBuH,EAAAA,EAAAA,uBAAAA,EAAAA,qBAAoB,KAC9BA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,WAAA,GAAA,cAGUC,EAAAA,EAAAA,mBAAAA,EAAAA,iBAAgB,KAC1BA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,KAAA,GAAA,WCTUE,gBDwBZ,SAAAC,mDAaA,OAbqC1M,EAAA0M,EAAAzG,GAO5ByG,EAAAtH,QAAP,SAAe7C,KAIRmK,EAAApH,OAAP,SAAc/C,KAJdvB,EAAA,CADC2G,qBAKD3G,EAAA,CADCgH,oBAVU0E,EAAe1L,EAAA,CAZ3B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6G,QAAS,SACTO,SAAU,WACVW,UAAW,YAEb1F,SAAU,CACR+E,SAAUzG,EAAU+G,EAAAA,sBACpBM,SAAUrH,EAAUgH,EAAAA,sBAGXG,IAAwB3H,ICxBzB0H,EAAAA,EAAAA,uBAAAA,EAAAA,qBAAoB,KAC9BA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,SAAA,GAAA,eCEUI,gBDaZ,SAAAC,mDAaA,OAbqC9M,EAAA8M,EAAA7G,GAO5B6G,EAAA1H,QAAP,SAAe7C,KAIRuK,EAAAxH,OAAP,SAAc/C,KAJdvB,EAAA,CADC2G,qBAKD3G,EAAA,CADCgH,oBAVU8E,EAAe9L,EAAA,CAZ3B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6G,QAAS,SACTO,SAAU,WACVC,UAAW,YAEbhF,SAAU,CACR+E,SAAUzG,EAAUkH,EAAAA,sBACpBP,SAAU3G,EAAU+D,EAAAA,cAGXwD,IAAwB/H,ICbzB8H,EAAAA,EAAAA,aAAAA,EAAAA,WAAU,KACpBA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,OAAA,GAAA,aCTUE,iBD8CZ,SAAAC,mDAiDA,OAjD0BhN,EAAAgN,EAAA/G,GAqBjB+G,EAAA5H,QAAP,SAAeJ,GACb,OAAO,MAIFgI,EAAA1H,OAAP,SAAc2H,GACZ,OAAO,MAGTvN,OAAAgC,eAAIsL,EAAA5M,UAAA,WAAQ,KAAZ,WACE,MAAO,CAACF,KAAKgN,SAAUhN,KAAKiN,WAAWC,QAAO,SAAA3M,GAAK,OAAAA,KAAG4M,KAAK,sCAG7D3N,OAAAgC,eAAIsL,EAAA5M,UAAA,YAAS,KAAb,WACE,MAAO,CAACF,KAAKgN,SAAUhN,KAAKiN,WAAWC,QAAO,SAAA3M,GAAK,OAAAA,KAAG4M,KAAK,sCAG7D3N,OAAAgC,eAAIsL,EAAA5M,UAAA,WAAQ,KAAZ,WACE,MAAO,CAACF,KAAKgN,SAAUhN,KAAKiN,WAAWC,QAAO,SAAA3M,GAAK,OAAAA,KAAG2G,KAAI,SAAA3G,GAAK,OAAAA,EAAE6M,OAAO,EAAG,MAAID,KAAK,qCAGtF3N,OAAAgC,eAAIsL,EAAA5M,UAAA,MAAG,KAAP,WACE,IAAKF,KAAKqN,UACR,OAAO,KAET,IAAMC,GAAO,IAAKrH,MAAQsH,UAAYvN,KAAKqN,UAAUE,UACrD,OAAOC,KAAKC,MAAMH,EAAI,0CA1BxBxM,EAAA,CADC2G,qBAMD3G,EAAA,CADCgH,oBAzBUgF,EAAIhM,EAAA,CAlChB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJgJ,UAAW,WACXC,WAAY,YACZC,YAAa,aACbC,MAAO,QACPC,MAAO,QACPC,WAAY,YACZC,MAAO,QACPC,QAAS,UACTC,mBAAoB,oBACpBC,mBAAoB,oBACpBC,eAAgB,gBAChBC,iBAAkB,kBAClBC,iBAAkB,kBAClBC,QAAS,UACTC,KAAM,OACNC,OAAQ,SACRC,UAAW,YAEb3H,SAAU,CACRsG,UAAWvH,EACXkI,MAAO3F,EACP4F,QAAS3C,EACTqD,kBAAmB9C,EACnB+C,kBAAmBzC,EACnB0C,cAAevC,EACfwC,gBAAiBtC,EACjBuC,gBAAiBnC,EACjB4B,KAAM9C,EACN+C,OAAQpJ,EAAUsH,EAAAA,gBAGTG,IAAajI,kBErB1B,SAAAmK,mDA0CA,OA1C0BlP,EAAAkP,EAAAjJ,GAaxBiJ,EAAA9O,UAAA+O,kBAAA,WACE,IAAMC,EAAY,CAAC,cAgBnB,OAfIlP,KAAKmL,MAAM7B,gBACb4F,EAAUlL,KAAK,yBAEbhE,KAAKmL,MAAMtB,gBACbqF,EAAUlL,KAAK,yBAEbhE,KAAKmL,MAAMhB,YACb+E,EAAUlL,KAAK,qBAEbhE,KAAKmL,MAAMV,cACbyE,EAAUlL,KAAK,uBAEbhE,KAAKmL,MAAMJ,cACbmE,EAAUlL,KAAK,uBAEVkL,EAAU/B,KAAK,MAIjB6B,EAAA9J,QAAP,SAAeJ,GACb,OAAO,MAIFkK,EAAA5J,OAAP,SAAc+J,GACZ,OAAO,MANTrO,EAAA,CADC2G,qBAMD3G,EAAA,CADCgH,oBAtCUkH,EAAIlO,EAAA,CAtBhB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,OACN4C,MAAO,QACPiE,KAAM,OACNC,MAAO,QACPb,KAAM,OACNc,YAAa,aACbC,gBAAiB,gBACjBC,YAAa,aACbC,UAAW,WACXC,sBAAuB,uBAEzB3I,SAAU,CACRoE,MAAO9B,EACP+F,KAAM/G,EACNgH,MAAOvC,GACP0B,KAAM9C,EACNiE,oBAAqB7J,MAGZkJ,IAAanK,kBCf1B,SAAA+K,mDAUA,OAVkC9P,EAAA8P,EAAA7J,GAMzB6J,EAAA1K,QAAP,SAAeJ,KAGR8K,EAAAxK,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBARU8H,EAAY9O,EAAA,CAVxB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJmL,SAAU,UACVR,MAAO,SAETtI,SAAU,CACRsI,MAAOvC,OAGE8C,IAAqB/K,kBCkBlC,SAAAiL,mDAkCA,OAlC4BhQ,EAAAgQ,EAAA/J,GAkBnB+J,EAAA5K,QAAP,SAAeJ,KAGRgL,EAAA1K,OAAP,SAAcN,KAEdtF,OAAAgC,eAAIsO,EAAA5P,UAAA,SAAM,KAAV,WACE,OAAOF,KAAK+P,YAAYtK,MAAK,SAAAuK,GAAQ,MAAuB,oBAAvBA,EAAK5C,OAAO,EAAG,wCAGtD5N,OAAAgC,eAAIsO,EAAA5P,UAAA,SAAM,KAAV,WACE,OAAOF,KAAK+P,YAAYtK,MAAK,SAAAuK,GAAQ,MAAuB,8BAAvBA,EAAK5C,OAAO,EAAG,wCAGtD5N,OAAAgC,eAAIsO,EAAA5P,UAAA,YAAS,KAAb,WACE,OAAOF,KAAK+P,YAAYtK,MAAK,SAAAuK,GAAQ,MAAuB,8BAAvBA,EAAK5C,OAAO,EAAG,wCAdtDtM,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBApBUgI,EAAMhP,EAAA,CAzBlB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ0K,KAAM,OACNa,cAAe,eACfC,cAAe,eACf3H,KAAM,OACN4H,MAAO,QACPhF,MAAO,QACPiF,YAAa,cACbC,aAAc,cACdC,MAAO,QACPC,aAAc,eACdC,kBAAmB,mBACnBd,sBAAuB,sBACvBe,MAAO,QACPC,MAAO,SAET3J,SAAU,CACRwJ,aAAcX,GACdR,KAAM/G,EACNoI,MAAOpI,EACP8C,MAAO9B,MAGEyG,IAAejL,IH5BhBgI,EAAAA,EAAAA,2BAAAA,EAAAA,yBAAwB,KAClCA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,OAAA,GAAA,aIEU8D,GAMAC,GAMAC,GAMAC,GAMAC,GAMAC,GAKAC,kBJZZ,SAAAC,mDAgBA,OAhBsCpR,EAAAoR,EAAAnL,GAY7BmL,EAAAhM,QAAP,SAAeJ,KAGRoM,EAAA9L,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAdUoJ,EAAgBpQ,EAAA,CAtB5B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,OACN4H,MAAO,QACPf,KAAM,OACNqB,MAAO,QACPU,cAAe,eACfC,OAAQ,SACRC,WAAY,YACZC,YAAa,aACbC,YAAa,eAEfxK,SAAU,CACRqI,KAAM/G,EACNoI,MAAOpI,EACPmJ,aAAcnJ,EACd+I,OAAQ/L,EAAUwH,EAAAA,0BAClB4E,UAAW3L,EACX4L,WAAY5L,MAGHoL,IAAyBrM,IIvB1B8L,GAAAA,EAAAA,kBAAAA,EAAAA,gBAAe,KACzB,MAAA,QACAA,GAAA,YAAA,cACAA,GAAA,KAAA,QAGUC,GAAAA,EAAAA,qBAAAA,EAAAA,mBAAkB,KAC5BA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,OAAA,GAAA,UAGUC,GAAAA,EAAAA,mBAAAA,EAAAA,iBAAgB,KAC1BA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,IAAA,GAAA,OAGUC,GAAAA,EAAAA,2BAAAA,EAAAA,yBAAwB,KAClCA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,MAAA,GAAA,QACAA,GAAAA,GAAA,SAAA,GAAA,YAGUC,GAAAA,EAAAA,2BAAAA,EAAAA,yBAAwB,KAClCA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,MAAA,GAAA,QACAA,GAAAA,GAAA,SAAA,GAAA,YAGUC,GAAAA,EAAAA,gBAAAA,EAAAA,cAAa,KACvBA,GAAA,MAAA,GAAA,QACAA,GAAAA,GAAA,MAAA,GAAA,SAGUC,GAAAA,EAAAA,gBAAAA,EAAAA,cAAa,KACvBA,GAAA,eAAA,GAAA,iBACAA,GAAAA,GAAA,cAAA,GAAA,gBACAA,GAAAA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,iBAAA,GAAA,mBACAA,GAAAA,GAAA,cAAA,GAAA,gBACAA,GAAAA,GAAA,2BAAA,GAAA,6BACAA,GAAAA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,mBAAA,GAAA,yBCjDUU,kBD4FZ,SAAAC,mDAmCA,OAnCwC9R,EAAA8R,EAAA7L,GA+B/B6L,EAAA1M,QAAP,SAAeJ,KAGR8M,EAAAxM,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAjCU8J,EAAkB9Q,EAAA,CAxC9B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ+J,OAAQ,SACRoD,SAAU,UACVC,OAAQ,QACRC,iBAAkB,iBAClBC,iBAAkB,iBAClBC,KAAM,OACNC,YAAa,aACbC,cAAe,eACfC,YAAa,aACbC,cAAe,eACfC,cAAe,eACfC,eAAgB,gBAChBC,UAAW,WACXC,cAAe,eACfC,aAAc,cACdC,iBAAkB,kBAClBC,iBAAkB,gBAClBC,wBAAyB,uBACzBC,6BAA8B,2BAC9BC,wBAAyB,wBACzBC,oBAAqB,oBACrBC,iBAAkB,iBAClBC,0BAA2B,0BAC3BC,0BAA2B,0BAC3BC,mBAAoB,mBACpBC,eAAgB,eAChBC,kBAAmB,mBAErBvM,SAAU,CACRkL,KAAM5M,EAAUsL,EAAAA,iBAChBlC,OAAQpJ,EAAUwL,EAAAA,kBAClB0C,wBAAyBlO,EAAUyL,EAAAA,0BACnC0C,wBAAyBnO,EAAU0L,EAAAA,0BACnC0C,aAAcpO,EAAU2L,EAAAA,eACxB0C,aAAcrO,EAAU4L,EAAAA,mBAGfW,IAA2B/M,kBAiDxC,SAAA8O,mDAYA,OAZ0C7T,EAAA6T,EAAA5N,GAQjC4N,EAAAzO,QAAP,SAAeJ,KAGR6O,EAAAvO,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVU6L,EAAoB7S,EAAA,CAZhC8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJkP,QAAS,SACTC,cAAe,eACf1E,KAAM,OACN2E,OAAQ,UAEV/M,SAAU,CACRoI,KAAMH,OAGG2E,IAA6B9O,kBAyD1C,SAAAkP,mDA+CA,OA/CgCjU,EAAAiU,EAAAhO,GAyB9BgO,EAAA7T,UAAA+O,kBAAA,WACE,IAAMC,EAAY,CAAC,cAanB,OAZIlP,KAAKmL,MAAM7B,gBACb4F,EAAUlL,KAAK,yBAEbhE,KAAKmL,MAAMtB,gBACbqF,EAAUlL,KAAK,yBAEbhE,KAAKmL,MAAMhB,YACb+E,EAAUlL,KAAK,qBAEbhE,KAAKmL,MAAMV,cACbyE,EAAUlL,KAAK,uBAEVkL,EAAU/B,KAAK,MAIjB4G,EAAA7O,QAAP,SAAeJ,KAGRiP,EAAA3O,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBA7CUiM,EAAUjT,EAAA,CA3CtB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,OACN4H,MAAO,QACPf,KAAM,OACNqB,MAAO,QACPU,cAAe,eACf3C,KAAM,OACNrD,MAAO,QACP6I,SAAU,WACV5D,YAAa,cACbpK,KAAM,OACNiO,MAAO,QACPC,iBAAkB,kBAClBC,SAAU,WACVC,OAAQ,SACRC,YAAa,aACb3E,sBAAuB,sBACvB0B,OAAQ,SACRkD,YAAa,aACbC,YAAa,aACbC,WAAY,YACZC,OAAQ,SACRC,UAAW,YAEb3N,SAAU,CACRqI,KAAM/G,EACNoI,MAAOpI,EACPmJ,aAAcnJ,EACdmG,KAAM9C,EACNP,MAAO9B,EACPsL,eAAgBtM,EAChB8L,SAAUvC,GACV5L,KAAMW,EACNyN,OAAQtE,GACRsB,OAAQ/L,EAAUuL,EAAAA,oBAClBgE,WAAYjB,GACZkB,WAAYlB,GACZmB,UAAWnB,GACXc,OAAQvD,OAGC6C,IAAmBlP,kBEhLhC,SAAAkQ,mDAoBA,OApB0CjV,EAAAiV,EAAAhP,GAgBjCgP,EAAA7P,QAAP,SAAeJ,KAGRiQ,EAAA3P,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAlBUiN,EAAoBjU,EAAA,CAtBhC8F,EAAc,CACbE,cAAe,CACbqL,cAAe,eACfC,YAAa,aACbQ,iBAAkB,gBAClBP,cAAe,eACfC,cAAe,eACfC,eAAgB,gBAChBP,iBAAkB,iBAClBS,cAAe,eACfuC,uBAAwB,uBACxBtC,aAAc,cACduC,eAAgB,gBAChB7B,mBAAoB,mBACpBC,eAAgB,gBAElBtM,SAAU,CACR2M,aAAcrO,EAAU4L,EAAAA,eACxBiE,cAAe7P,EAAUyL,EAAAA,0BACzB2C,aAAcpO,EAAU2L,EAAAA,mBAGf+D,IAA6BlQ,IDtB9B8M,GAAAA,EAAAA,sBAAAA,EAAAA,oBAAmB,KAC7BA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,cAAA,GAAA,oBEMUwD,GAQAC,kBFIZ,SAAAC,mDAsBA,OAtB0CvV,EAAAuV,EAAAtP,GASxCvG,OAAAgC,eAAI6T,EAAAnV,UAAA,YAAS,KAAb,WACE,OAAOF,KAAKsV,WAAa3D,EAAAA,oBAAoB4D,cAAgB,EAAI,mCAGnEF,EAAAnV,UAAAsV,eAAA,SAAeC,GACb,OAAOA,IAAQzV,KAAK0V,UAAY1V,KAAK2V,eAAiB3V,KAAK4V,YAItDP,EAAAnQ,QAAP,SAAeJ,KAGRuQ,EAAAjQ,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBApBUuN,EAAoBvU,EAAA,CAfhC8F,EAAc,CACbE,cAAe,CACb0L,UAAW,WACXC,cAAe,eACfC,aAAc,cACdC,iBAAkB,kBAClBkD,aAAc,aACdC,kBAAmB,iBACnBb,eAAgB,iBAElBlO,SAAU,CACRuO,SAAUjQ,EAAUsM,EAAAA,qBACpBuD,cAAe7P,EAAU0L,EAAAA,8BAGhBsE,IAA6BxQ,kBGb1C,SAAAkR,mDAWA,OAXiCjW,EAAAiW,EAAAhQ,GAOxBgQ,EAAA7Q,QAAP,SAAeJ,KAGRiR,EAAA3Q,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBATUiO,EAAWjV,EAAA,CARvB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,OACNyN,QAAS,UACTC,UAAW,eAGFF,IAAoBlR,kBCcjC,SAAAqR,mDAoBA,OApB+BpW,EAAAoW,EAAAnQ,GAW7BvG,OAAAgC,eAAI0U,EAAAhW,UAAA,UAAO,KAAX,WACE,OAAOiW,QAAQnW,KAAKoW,2CAIfF,EAAAhR,QAAP,SAAeJ,KAGRoR,EAAA9Q,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAlBUoO,EAASpV,EAAA,CArBrB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ2R,eAAgB,gBAChBC,WAAY,YACZC,aAAc,cACdC,KAAM,OACNC,WAAY,aACZC,QAAS,SACT7C,cAAe,gBACf8C,UAAW,WACXC,cAAe,eACfC,QAAS,UAEX9P,SAAU,CACR+P,cAAezO,EACf0O,UAAW1O,EACX2O,YAAa3O,EACb4O,aAAc5O,MAGL6N,IAAkBrR,kBCJ/B,SAAAqS,mDAgBA,OAhBsCpX,EAAAoX,EAAAnR,GAY7BmR,EAAAhS,QAAP,SAAeJ,KAGRoS,EAAA9R,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAdUoP,EAAgBpW,EAAA,CAjB5B8F,EAAc,CACbE,cAAe,CACbqL,cAAe,eACfC,YAAa,aACbC,cAAe,eACfC,cAAe,eACfN,iBAAkB,iBAClBS,cAAe,eACfuC,uBAAwB,uBACxBtC,aAAc,cACdW,eAAgB,gBAElBtM,SAAU,CACR2M,aAAcrO,EAAU4L,EAAAA,eACxBwC,aAAcpO,EAAU2L,EAAAA,mBAGfkG,IAAyBrS,kBCAtC,SAAAsS,mDAgBA,OAhBwCrX,EAAAqX,EAAApR,GAY/BoR,EAAAjS,QAAP,SAAeJ,KAGRqS,EAAA/R,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAdUqP,EAAkBrW,EAAA,CAjB9B8F,EAAc,CACbE,cAAe,CACbqL,cAAe,eACfC,YAAa,aACbC,cAAe,eACfC,cAAe,eACfN,iBAAkB,iBAClBS,cAAe,eACfuC,uBAAwB,uBACxBtC,aAAc,cACdW,eAAgB,gBAElBtM,SAAU,CACR2M,aAAcrO,EAAU4L,EAAAA,eACxBwC,aAAcpO,EAAU2L,EAAAA,mBAGfmG,IAA2BtS,kBCAxC,SAAAuS,mDAgBA,OAhBwCtX,EAAAsX,EAAArR,GAY/BqR,EAAAlS,QAAP,SAAeJ,KAGRsS,EAAAhS,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAdUsP,EAAkBtW,EAAA,CAjB9B8F,EAAc,CACbE,cAAe,CACbqL,cAAe,eACfC,YAAa,aACbC,cAAe,eACfC,cAAe,eACfN,iBAAkB,iBAClBS,cAAe,eACfuC,uBAAwB,uBACxBtC,aAAc,cACdW,eAAgB,gBAElBtM,SAAU,CACR2M,aAAcrO,EAAU4L,EAAAA,eACxBwC,aAAcpO,EAAU2L,EAAAA,mBAGfoG,IAA2BvS,ILT5BsQ,GAAAA,EAAAA,eAAAA,EAAAA,aAAY,KACtBA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,MAAA,GAAA,SAGUC,GAAAA,EAAAA,kBAAAA,EAAAA,gBAAe,KACzBA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,oBAAA,GAAA,sBACAA,GAAAA,GAAA,sBAAA,GAAA,wBACAA,GAAAA,GAAA,iCAAA,GAAA,sDAqDF,SAAAiC,mDA2EA,OA3E0BvX,EAAAuX,EAAAtR,GAiCxBvG,OAAAgC,eAAI6V,EAAAnX,UAAA,oBAAiB,KAArB,WAAA,IAAAoX,EAAAtX,KACE,OAAKA,KAAKuX,cAGH/X,OAAOwF,KAAKhF,KAAKuX,eAAerQ,KAAI,SAAAsQ,GAAU,MAAA,CACnDA,QAASA,EACTC,UAAWH,EAAKC,cAAcC,GAAQ,GACtCE,oBAAqBJ,EAAKC,cAAcC,GAAQ,OALzC,oCASXhY,OAAAgC,eAAI6V,EAAAnX,UAAA,WAAQ,KAAZ,WACE,OAAOF,KAAKoR,SAAW+D,EAAAA,aAAawC,wCAGtCnY,OAAAgC,eAAI6V,EAAAnX,UAAA,YAAS,KAAb,WACE,OAAOF,KAAKyX,UAAYzX,KAAK0X,qDAG/BlY,OAAAgC,eAAI6V,EAAAnX,UAAA,sBAAmB,KAAvB,WACE,OAAOF,KAAK0X,oBAAsB1X,KAAKyX,2CAGzCjY,OAAAgC,eAAI6V,EAAAnX,UAAA,eAAY,KAAhB,WACE,OAAIF,KAAKoR,SAAW+D,EAAAA,aAAawC,QAG7B3X,KAAKyX,YAAczX,KAAK0X,oBAFnB,KAKL1X,KAAKmP,KAAKzK,GACL1E,KAAKyX,UAAYzX,KAAK0X,oBAAsB1X,KAAKmP,KAAKzK,GAAK1E,KAAK4X,eAAelT,GAE/E1E,KAAKyX,UAAYzX,KAAK0X,oBAAsB1X,KAAK6X,OAAS7X,KAAK8X,kDAKnET,EAAAnS,QAAP,SAAeJ,KAGRuS,EAAAjS,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAzEUuP,EAAIvW,EAAA,CAlDhB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ0M,OAAQ,SACRjC,KAAM,OACN4I,mBAAoB,mBACpBnE,QAAS,SACToE,gBAAiB,iBACjBC,8BAA+B,6BAC/BC,mBAAoB,mBACpBC,qBAAsB,qBACtBC,SAAU,WACVpE,SAAU,WACVqE,WAAY,YACZC,sBAAuB,sBACvBC,YAAa,aACbC,eAAgB,gBAChB3E,cAAe,eACf4E,gBAAiB,iBACjBC,uBAAwB,uBACxBC,uBAAwB,uBACxBC,mBAAoB,mBACpBC,qBAAsB,qBACtBC,qBAAsB,qBACtBC,gBAAiB,gBACjBC,cAAe,eACfC,oBAAqB,oBACrBC,sBAAuB,sBACvBC,iBAAkB,kBAClBC,YAAa,aACbC,iBAAkB,iBAClBC,MAAO,QACP7C,WAAY,cAEd1P,SAAU,CACRqK,OAAQ/L,EAAU8P,EAAAA,cAClBhG,KAAMH,GACN4I,eAAgB5I,GAChBoJ,SAAUzR,EACV4S,WAAYlU,EAAU+P,EAAAA,iBACtBoE,qBAAsBzE,GACtB0E,qBAAsBpE,GACtBqE,iBAAkBxC,GAClByC,mBAAoBxC,GACpByC,mBAAoBxC,GACpByC,gBAAiB9D,GACjBuD,MAAO3T,EAAUuQ,IACjBO,WAAY1C,OAGHsD,IAAaxS,YM5EViV,GAAkBhV,EAAaY,EAAWqU,EAAeC,GACvE,YADwD,IAAAD,IAAAA,GAAA,GACnDpa,MAAMkG,QAAQf,GAGZA,EAAKoC,KAAI,SAAAtD,GACd,GAAIoW,GAAiBC,GAAWD,IAC9B,IAAKA,EAAcpW,GACjB,OAAOA,OAEJ,GAAIA,EAAEc,KAAOgB,EAAKhB,GACvB,OAAOd,EAET,OAAIA,EAAEsW,WAAaxU,EAAKwU,YAAcH,GAC7BnW,EAAEsW,UAAYxU,EAAKwU,UAAYtW,EAEjC8B,KAbAZ,WAiBKqV,GAAmBrV,EAAasV,EAAcL,EAAwBC,GAIpF,YAJ4D,IAAAD,IAAAA,GAAA,GAC5DK,EAAMC,SAAQ,SAAA3U,GACZZ,EAAOgV,GAAkBhV,EAAMY,EAAMqU,EAAOC,MAEvClV,WAmBOwV,GAAexV,EAAaY,EAAW6U,EAAwBP,GAC7E,YADqD,IAAAO,IAAAA,GAAA,GAChD5a,MAAMkG,QAAQf,GAGfA,EAAKW,MAAK,SAAAjF,GAAK,OAAAyZ,GAAWD,GAAiBA,EAAcxZ,GAAKA,EAAEkE,KAAOgB,EAAKhB,MACvEI,EAGFyV,IACCzV,EAAI,CAAEY,IAAInB,EAAA,CACbmB,GAASZ,GARL,CAACY,YAWI8U,GAAgB1V,EAAasV,EAAcG,EAAwBP,GAOjF,YAPyD,IAAAO,IAAAA,GAAA,IACvDA,EAEEH,EADA5a,OAAOa,OAAO,GAAI+Z,GAAOK,WAE3BJ,SAAQ,SAAA3U,GACRZ,EAAOwV,GAAexV,EAAMY,EAAM6U,EAAOP,MAEpClV,WAGO4V,GAAoB5V,EAAaY,GAC/C,OAAK/F,MAAMkG,QAAQf,GAGfmV,GAAWvU,GACNZ,EAAKoI,QAAO,SAAA1M,GAAK,OAACkF,EAAKlF,MAEvBsE,EAAKoI,QAAO,SAAAtJ,GAAK,OAAAA,EAAEc,KAAOgB,EAAKhB,MAL/B,GASX,SAASuV,GAAWU,GAClB,OAAOA,GAAyD,sBAAtC,GAAGC,SAASha,KAAK+Z,OCzEjCE,iBCIV,SAAAC,EAAoB9R,GAAAhJ,KAAAgJ,OAAAA,EAFZhJ,KAAA8E,KAA8C,GAuExD,OAlEEgW,EAAA5a,UAAA6a,IAAA,SAAI9Z,GACF,OAAOjB,KAAKgb,WAAW/Z,GAAKga,KAAK/N,EAAAA,QAAO,SAAAxH,GAAQ,YAAS6B,IAAT7B,OAGlDoV,EAAA5a,UAAAmC,MAAA,SAAMpB,GACJ,OAAOjB,KAAKgb,WAAW/Z,GAAKoB,OAG9ByY,EAAA5a,UAAAgb,KAAA,SAAKja,EAAaoB,GAChBrC,KAAKgb,WAAW/Z,GAAKsB,KAAKF,GACtBrC,KAAKgJ,QACPhJ,KAAKgJ,OAAOkS,KAAKja,EAAKoB,IAI1ByY,EAAA5a,UAAAib,WAAA,SAAWla,EAAaoB,EAAY2X,GAClCha,KAAKkb,KAAKja,EAAKqZ,GAAeta,KAAKqC,MAAMpB,IAAQ,GAAIoB,GAAO,EAAM2X,KAGpEc,EAAA5a,UAAAkb,YAAA,SAAYna,EAAaoB,EAAc2X,GACrCha,KAAKkb,KAAKja,EAAKuZ,GAAgBxa,KAAKqC,MAAMpB,IAAQ,GAAIoB,GAAO,KAG/DyY,EAAA5a,UAAAmb,YAAA,SAAYpa,EAAaoB,EAAY2X,GACnCha,KAAKkb,KAAKja,EAAKqZ,GAAeta,KAAKqC,MAAMpB,IAAQ,GAAIoB,GAAO,EAAO2X,KAGrEc,EAAA5a,UAAAob,aAAA,SAAara,EAAaoB,EAAc2X,GACtCha,KAAKkb,KAAKja,EAAKuZ,GAAgBxa,KAAKqC,MAAMpB,IAAQ,GAAIoB,GAAO,EAAO2X,KAGtEc,EAAA5a,UAAAqb,WAAA,SAAWta,EAAaoB,EAAY0X,EAAiBC,GACnDha,KAAKkb,KAAKja,EAAK6Y,GAAkB9Z,KAAKqC,MAAMpB,IAAQ,GAAIoB,EAAO0X,EAAOC,KAGxEc,EAAA5a,UAAAsb,YAAA,SAAYva,EAAaoB,EAAY0X,EAAiBC,GACpDha,KAAKkb,KAAKja,EAAKkZ,GAAmBna,KAAKqC,MAAMpB,IAAQ,GAAIoB,EAAO0X,EAAOC,KAGzEc,EAAA5a,UAAAub,WAAA,SAAWxa,EAAaoB,GACtBrC,KAAKkb,KAAKja,EAAKyZ,GAAoB1a,KAAKqC,MAAMpB,IAAQ,GAAIoB,KAG5DyY,EAAA5a,UAAAwb,QAAA,uBACE,IAAkB,IAAA3W,EAAAd,EAAAzE,OAAOwF,KAAKhF,KAAK8E,OAAKG,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAArC,IAAMtB,EAAGgE,EAAA5C,MACZrC,KAAK8E,KAAK7D,GAAK0a,kBACR3b,KAAK8E,KAAK7D,uGAIrB6Z,EAAA5a,UAAA0b,iBAAA,WACM5b,KAAKgJ,QACPhJ,KAAKgJ,OAAO6S,SAIhBf,EAAA5a,UAAA4b,UAAA,WACE,OAAO9b,KAAKgJ,QAGN8R,EAAA5a,UAAA8a,WAAR,SAAmB/Z,GAIjB,OAHKjB,KAAK8E,KAAK7D,KACbjB,KAAK8E,KAAK7D,GAAO,IAAI8a,EAAAA,gBAAqB/b,KAAKgJ,OAAShJ,KAAKgJ,OAAO+R,IAAI9Z,QAAOsG,IAE1EvH,KAAK8E,KAAK7D,IAErB6Z,mBCzEA,SAAAkB,IACYhc,KAAAic,MAAQ,IAAInB,UAEtBkB,EAAA9b,UAAAwb,QAAA,WACE1b,KAAKic,MAAMP,sGAJFM,EAAWlb,EAAA,CADvBob,EAAAA,WAAW,CAACC,WAAY,UACZH,qBCKX,SAAAI,EAC2CC,GAD3C,IAAA/E,EAGEvR,EAAAnF,KAAAZ,OAAOA,YAFkCsX,EAAA+E,WAAAA,EAGrCA,GACF/E,EAAKgF,WAAWD,YANavc,EAAAsc,EAAArW,GAUjCvG,OAAAgC,eAAI4a,EAAAlc,UAAA,UAAO,KAAX,WACE,OAAOF,KAAKic,MAAMlB,IAhBG,2CAmBvBvb,OAAAgC,eAAI4a,EAAAlc,UAAA,SAAM,KAAV,WACE,OAAOF,KAAKic,MAAM5Z,MApBG,WAoBwB,oCAG/C+Z,EAAAlc,UAAAoc,WAAA,SAAWxX,GACT9E,KAAKic,MAAMf,KAxBU,SAwBapW,IAGpCsX,EAAAlc,UAAAuV,IAAA,SAAIxU,EAAaoB,SACfrC,KAAKic,MAAMf,KA5BU,SA4BW9a,EAAAA,EAAA,GAC3BJ,KAAK6G,UAAM0V,EAAA,IACbtb,GAAMoB,EAAKka,MAIhBH,EAAAlc,UAAA6a,IAAA,SAAI9Z,GACF,OAAOjB,KAAKic,MAAM5Z,MAnCG,WAmCwBrC,KAAKic,MAAM5Z,MAnCnC,UAmC2DpB,sEA5B/Eub,EAAAA,UAAQ,CAAAvK,KAAIwK,EAAAA,OAAM9U,KAAA,CALI,8JAGdyU,EAAatb,EAAA,CADzBob,EAAAA,WAAW,CAACC,WAAY,SAGpB1a,EAAA,EAAA+a,EAAAA,YAAY/a,EAAA,EAAAgb,EAAAA,OALU,0BAGdL,IAAsBJ,mBCEnC,SAAAU,mDAWA,OAXqC5c,EAAA4c,EAAA3W,GAO5B2W,EAAAxX,QAAP,SAAeJ,KAGR4X,EAAAtX,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBATU4U,EAAe5b,EAAA,CAP3B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,OACN0Q,oBAAqB,wBAGZyD,IAAwB7X,kBCgCrC,SAAA8X,mDAuCA,OAvCoC7c,EAAA6c,EAAA5W,GA2BlCvG,OAAAgC,eAAImb,EAAAzc,UAAA,kBAAe,KAAnB,WACE,OAAKF,KAAK4c,WAGHpP,KAAKC,MAAM,IAAOzN,KAAK6c,cAAgB7c,KAAK4c,YAAc,GAFxD,mCAMJD,EAAAzX,QAAP,SAAeJ,KAGR6X,EAAAvX,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBArCU6U,EAAc7b,EAAA,CApC1B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJkP,QAAS,SACTC,cAAe,eACf4C,WAAY,aACZtH,KAAM,OACN2N,MAAO,QACPC,eAAgB,gBAChBvN,YAAa,aACbD,gBAAiB,gBACjByN,iBAAkB,iBAClBC,iBAAkB,iBAClBC,eAAgB,eAChBzN,UAAW,WACX0N,WAAY,YACZC,iBAAkB,iBAClBC,kBAAmB,kBACnBvJ,OAAQ,SACRxE,YAAa,aACbgO,MAAO,QACPC,oBAAqB,qBACrBC,4BAA6B,0BAC7BC,6BAA8B,2BAC9BC,yBAA0B,wBAC1BC,0BAA2B,yBAC3BC,gBAAiB,iBAEnB7W,SAAU,CACR0P,WAAY1C,GACZ5E,KAAMH,GACN8N,MAAOJ,GACPY,MAAOjG,GACPwG,cAAexG,OAGNsF,IAAuB9X,ILtCxBgW,GAAAA,EAAAA,eAAAA,EAAAA,aAAY,KACtBA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,MAAA,GAAA,QACAA,GAAAA,GAAA,MAAA,GAAA,QACAA,GAAAA,GAAA,WAAA,GAAA,aACAA,GAAAA,GAAA,cAAA,GAAA,gBACAA,GAAAA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,UAAA,IAAA,gBMVUiD,kBN4BZ,SAAAC,mDAeA,OAf8Bje,EAAAie,EAAAhY,GASrBgY,EAAA7Y,QAAP,SAAeJ,KAIRiZ,EAAA3Y,OAAP,SAAc4Y,KAJdld,EAAA,CADC2G,qBAKD3G,EAAA,CADCgH,oBAZUiW,EAAQjd,EAAA,CAfpB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJkP,QAAS,SACT7G,KAAM,OACNkR,KAAM,OACNC,OAAQ,SACR/O,KAAM,QAERpI,SAAU,CACRgG,KAAMD,GACNqC,KAAMH,GACNiP,KAAM5Y,EAAUwV,EAAAA,kBAGPkD,IAAiBlZ,kBOjB9B,SAAAsZ,mDAYA,OAZgDre,EAAAqe,EAAApY,GAQvCoY,EAAAjZ,QAAP,SAAeJ,KAGRqZ,EAAA/Y,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVUqW,EAA0Brd,EAAA,CAbtC8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ0Z,wBAAyB,uBACzBC,UAAW,WACXC,QAAS,SACTC,cAAe,gBAEjBxX,SAAU,CACRyX,SAAU1Y,EACV2Y,OAAQ3Y,MAGCqY,IAAmCtZ,kBCIhD,SAAA6Z,mDA+BA,OA/BkC5e,EAAA4e,EAAA3Y,GAYhCvG,OAAAgC,eAAIkd,EAAAxe,UAAA,WAAQ,KAAZ,WACE,MAAO,CAACF,KAAKgN,SAAUhN,KAAKiN,UAAWjN,KAAK2e,YAAYzR,QAAO,SAAA3M,GAAK,OAAAA,KAAG4M,KAAK,sCAG9E3N,OAAAgC,eAAIkd,EAAAxe,UAAA,YAAS,KAAb,WACE,MAAO,CAACF,KAAKgN,SAAUhN,KAAKiN,WAAWC,QAAO,SAAA3M,GAAK,OAAAA,KAAG4M,KAAK,sCAG7D3N,OAAAgC,eAAIkd,EAAAxe,UAAA,WAAQ,KAAZ,WACE,MAAO,CAACF,KAAKgN,SAAUhN,KAAKiN,WAAWC,QAAO,SAAA3M,GAAK,OAAAA,KAAG2G,KAAI,SAAA3G,GAAK,OAAAA,EAAE6M,OAAO,EAAG,MAAID,KAAK,qCAI/EuR,EAAAxZ,QAAP,SAAeJ,KAIR4Z,EAAAtZ,OAAP,SAAcN,KAJdhE,EAAA,CADC2G,qBAKD3G,EAAA,CADCgH,oBA5BU4W,EAAY5d,EAAA,CAhBxB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6G,QAAS,SACT0K,UAAW,WACXtI,WAAY,YACZD,UAAW,WACXE,YAAa,aACbI,MAAO,QACP4Q,YAAa,aACbC,OAAQ,UAEV9X,SAAU,CACRiH,MAAO3F,MAGEqW,IAAqB7Z,kBCGlC,SAAAia,mDAaA,OAbwChf,EAAAgf,EAAA/Y,GAS/B+Y,EAAA5Z,QAAP,SAAeJ,KAGRga,EAAA1Z,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAXUgX,EAAkBhe,EAAA,CAhB9B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJqa,gBAAiB,iBACjBC,UAAW,WACXC,aAAc,eACdC,iBAAkB,mBAClBC,cAAe,gBAEjBpY,SAAU,CACRqY,eAAgBzC,GAChB0C,SAAUtB,GACVmB,iBAAkBf,GAClBmB,aAAcZ,OAGLI,IAA2Bja,kBCiCxC,SAAA0a,mDAkDA,OAlDyCzf,EAAAyf,EAAAxZ,GAqCvCvG,OAAAgC,eAAI+d,EAAArf,UAAA,aAAU,KAAd,WACE,OAAOF,KAAKwf,cAAgBxf,KAAKyf,eAAiBzf,KAAK0f,sDAGzDlgB,OAAAgC,eAAI+d,EAAArf,UAAA,cAAW,KAAf,WACE,OAAOsN,KAAKC,MAAMzN,KAAK2f,SAAW,qCAI7BJ,EAAAra,QAAP,SAAeJ,KAGRya,EAAAna,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAhDUyX,EAAmBze,EAAA,CA/C/B8F,EAAc,CACbE,cAAe,CACb8Y,qBAAsB,qBACtBzQ,KAAM,OACN6P,UAAW,WACXjS,KAAM,OACNgS,gBAAiB,iBACjBc,MAAO,QACPC,SAAU,UACVtQ,YAAa,aACbD,gBAAiB,gBACjBuE,OAAQ,SACRiM,gBAAiB,gBACjBC,kBAAmB,kBACnBC,iBAAkB,iBAClBC,gBAAiB,gBACjBC,mBAAoB,mBACpBC,qBAAsB,qBACtBC,oBAAqB,oBACrBC,mBAAoB,mBACpBC,kBAAmB,kBACnBC,oBAAqB,oBACrBC,mBAAoB,mBACpBC,kBAAmB,kBACnBC,QAAS,UACTC,OAAQ,SACRC,SAAU,WACVC,mBAAoB,oBACpBC,mBAAoB,oBACpBC,OAAQ,SACRC,UAAW,YACXC,eAAgB,gBAChBC,gBAAiB,iBACjBC,sBAAuB,uBACvBC,UAAW,WACXC,OAAQ,SACRC,KAAM,QAERxa,SAAU,CACRya,mBAAoB1C,GACpB3P,KAAMH,GACNqQ,SAAUtB,GACVhR,KAAMD,GACNsS,eAAgBzC,GAChBkD,MAAO/Z,MAGEyZ,IAA4B1a,kBCzCzC,SAAA4c,mDASA,OATiD3hB,EAAA2hB,EAAA1b,GAKxC0b,EAAAvc,QAAP,SAAeJ,KAGR2c,EAAArc,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAPU2Z,EAA2B3gB,EAAA,CAVvC8F,EAAc,CACbE,cAAe,CACbqI,KAAM,OACN6I,gBAAiB,kBAEnBjR,SAAU,CACRoI,KAAMoQ,GACN3H,eAAgB2H,OAGPkC,IAAoC5c,kBCiBjD,SAAA6c,mDAoCA,OApC6C5hB,EAAA4hB,EAAA3b,GAuB3CvG,OAAAgC,eAAIkgB,EAAAxhB,UAAA,KAAE,KAAN,WACE,OAAOF,KAAK2hB,4CAIPD,EAAAxc,QAAP,SAAeJ,KAGR4c,EAAAtc,OAAP,SAAcN,KAEdtF,OAAAgC,eAAIkgB,EAAAxhB,UAAA,aAAU,KAAd,WACE,OAAQF,KAAKwf,eAAiB,IAAMxf,KAAKyf,gBAAkB,IAAMzf,KAAK0f,sBAAwB,oCANhG5e,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBA9BU4Z,EAAuB5gB,EAAA,CA5BnC8F,EAAc,CACbE,cAAe,CACb8a,aAAc,aACd9N,OAAQ,SACRmM,iBAAkB,iBAClBF,gBAAiB,gBACjBC,kBAAmB,kBACnBE,gBAAiB,gBACjBC,mBAAoB,mBACpBC,qBAAsB,qBACtBC,oBAAqB,oBACrBC,mBAAoB,mBACpBK,QAAS,UACTC,OAAQ,SACRC,SAAU,WACVC,mBAAoB,oBACpBC,mBAAoB,oBACpBC,OAAQ,SACRC,UAAW,YACXC,eAAgB,gBAChBC,gBAAiB,iBACjBC,sBAAuB,uBACvBS,WAAY,aAEd9a,SAAU,CACRmT,UAAWvT,MAGF+a,IAAgC7c,IN3BjCiZ,GAAAA,EAAAA,yBAAAA,EAAAA,uBAAsB,KAChCA,GAAA,WAAA,GAAA,aACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,eAAA,GAAA,iBACAA,GAAAA,GAAA,iBAAA,GAAA,mBACAA,GAAAA,GAAA,gBAAA,GAAA,kBACAA,GAAAA,GAAA,kBAAA,GAAA,oBACAA,GAAAA,GAAA,oBAAA,GAAA,sBACAA,GAAAA,GAAA,mBAAA,GAAA,qBACAA,GAAAA,GAAA,OAAA,IAAA,SACAA,GAAAA,GAAA,MAAA,IAAA,QACAA,GAAAA,GAAA,QAAA,IAAA,UACAA,GAAAA,GAAA,kBAAA,IAAA,oBACAA,GAAAA,GAAA,kBAAA,IAAA,oBACAA,GAAAA,GAAA,MAAA,IAAA,QACAA,GAAAA,GAAA,SAAA,IAAA,WACAA,GAAAA,GAAA,cAAA,IAAA,gBACAA,GAAAA,GAAA,eAAA,IAAA,iBACAA,GAAAA,GAAA,qBAAA,IAAA,uBACAA,GAAAA,GAAA,kBAAA,IAAA,oBACAA,GAAAA,GAAA,eAAA,IAAA,iBACAA,GAAAA,GAAA,QAAA,IAAA,UACAA,GAAAA,GAAA,aAAA,IAAA,mBOvBUgE,GAyBAC,kBPoBZ,SAAAC,IAAA,IAAA1K,EAAA,OAAAvR,GAAAA,EAAAlF,MAAAb,KAAAU,YAAAV,YAWEsX,EAAA2K,QAAS,IA8DX,OAzEuCniB,EAAAkiB,EAAAjc,GAiBrCic,EAAA9hB,UAAAgiB,aAAA,WACE,MAAO,CACLpE,EAAAA,uBAAuBqE,eACvBrE,EAAAA,uBAAuBsE,iBACvBtE,EAAAA,uBAAuBuE,gBACvBvE,EAAAA,uBAAuBwE,gBACvBC,QAAQviB,KAAKwiB,UAAY,GAG7BR,EAAA9hB,UAAAuiB,cAAA,WACE,MAAO,CACL3E,EAAAA,uBAAuB4E,QACvB5E,EAAAA,uBAAuB6E,kBACvB7E,EAAAA,uBAAuB8E,mBACvBL,QAAQviB,KAAKwiB,UAAY,GAG7BR,EAAA9hB,UAAA2iB,WAAA,WACE,MAAO,CACL/E,EAAAA,uBAAuBgF,cACvBhF,EAAAA,uBAAuBiF,eACvBjF,EAAAA,uBAAuBkF,sBACvBT,QAAQviB,KAAKwiB,UAAY,GAG7BR,EAAA9hB,UAAA+iB,SAAA,iBAOE,QANkB1G,EAAA,IACfuB,EAAAA,uBAAuBwE,gBAAiB,EACzC/F,EAACuB,EAAAA,uBAAuBuE,iBAAkB,EAC1C9F,EAACuB,EAAAA,uBAAuBqE,gBAAiB,EACzC5F,EAACuB,EAAAA,uBAAuBsE,kBAAmB,KAEzBpiB,KAAKwiB,UAG3BR,EAAA9hB,UAAAgjB,QAAA,SAAQC,GACN,OAAInjB,KAAKojB,OAASD,EAAMC,MAAQpjB,KAAKwX,SAAW2L,EAAM3L,OAC7CxX,KAAKoY,SAAS7K,UAAY4V,EAAM/K,SAAS7K,UAAY,GAAK,EAE/DvN,KAAKwX,SAAW2L,EAAM3L,OACjBxX,KAAKojB,KAAOD,EAAMC,KAAO,GAAK,EAEhCpjB,KAAKwX,OAAS2L,EAAM3L,OAAS,GAAK,GAG3ChY,OAAAgC,eAAIwgB,EAAA9hB,UAAA,gBAAa,KAAjB,WACE,IAAMmjB,EAAU7V,KAAKC,MAAMzN,KAAKojB,KAAO,IACjCE,EAAUtjB,KAAKojB,KAAiB,GAAVC,EAC5B,OAAUA,EAAU,GAAK,IAAM,IAAKA,EAAO,KAAIC,EAAU,GAAK,IAAM,IAAKA,mCAIpEtB,EAAA9c,QAAP,SAAe7C,KAGR2f,EAAA5c,OAAP,SAAc/C,KAHdvB,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAvEUka,EAAiBlhB,EAAA,CAnB7B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6e,UAAW,WACX7M,QAAS,SACTkL,aAAc,aACdhO,QAAS,SACT4P,SAAU,UACVpL,SAAU,WACVgL,KAAM,OACN5L,OAAQ,SACRyK,OAAQ,SACRwB,aAAc,eAEhB1c,SAAU,CACRqR,SAAUzR,EACV6b,QAASnd,EAAUyY,EAAAA,4BAGVkE,IAA0Bnd,kBQ9BvC,SAAA6e,mDAaA,OAb8B5jB,EAAA4jB,EAAA3d,GASrB2d,EAAAxe,QAAP,SAAeJ,KAGR4e,EAAAte,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAXU4b,EAAQ5iB,EAAA,CAfpB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJgS,QAAS,SACTsI,UAAW,WACXY,qBAAsB,qBACtB+D,OAAQ,QACR9B,WAAY,aAEd9a,SAAU,CACRsY,SAAUtB,GACVyD,mBAAoB1C,GACpB5E,UAAWvT,MAGF+c,IAAiB7e,iBCX5B,SAAA+e,EACYC,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAINF,EAAA1jB,UAAA6jB,SAAN,SAAeC,sEACb,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,2BAA2BiJ,EAAM,WAAW/I,KACxG/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAghB,GAASxe,QAAQxC,OAC/BuhB,oBAGEL,EAAA1jB,UAAAgkB,OAAN,SAAaF,sEACX,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,2BAA2BiJ,EAAM,SAAS/I,KACtG/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAghB,GAASxe,QAAQxC,OAC/BuhB,6DAdoBE,EAAAA,kBACG/H,0IAHhBwH,EAAW9iB,EAAA,CADvBob,EAAAA,WAAW,CAACC,WAAY,UACZyH,qBCKX,SAAAQ,EACYP,EACAC,GAFZ,IAAAxM,EAIEvR,EAAAnF,KAAAZ,KAAM6jB,EAAYC,IAAc9jB,YAHtBsX,EAAAuM,WAAAA,EACAvM,EAAAwM,cAAAA,WAHyBhkB,EAAAskB,EAAAre,GAQ/Bqe,EAAAlkB,UAAAmkB,QAAN,SAAcL,sEACZ,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,KAAK/I,KAC7G/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2U,GAAKnS,QAAQxC,OAC3BuhB,oBAGEG,EAAAlkB,UAAAokB,iBAAN,SAAuBN,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,oBAAoB/I,KAC5H/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA+e,GAA4Bvc,QAAQxC,OAClDuhB,oBAGEG,EAAAlkB,UAAAqkB,iBAAN,SAAuBP,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,oBAAoB/I,KAC5H/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAgf,GAAwBxc,QAAQxC,OAC9CuhB,oBAGEG,EAAAlkB,UAAAskB,QAAN,SAAcR,sEACZ,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,UAAU/I,KAClH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAsf,GAAkB9c,QAAQxC,OACxCuhB,oBAGEG,EAAAlkB,UAAAukB,iBAAN,SAAuBT,EAAgBU,sEACrC,MAAA,CAAA,EAAO1kB,KAAK6jB,WAAW9I,IAClB/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,6BAA6BU,EAC5G,CAACC,aAAc,SAEdV,oBAGCG,EAAAlkB,UAAA0kB,qBAAN,SAA2BZ,EAAgBU,sEACzC,MAAA,CAAA,EAAO1kB,KAAK6jB,WAAW9I,IAClB/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,kCAAkCU,EACjH,CAACC,aAAc,SAEdV,6DA3CmBE,EAAAA,kBACG/H,0IAHhBgI,EAAiBtjB,EAAA,CAD7Bob,EAAAA,WAAW,CAACC,WAAY,UACZiI,IAA0BR,kBCKvC,SAAAiB,KAiBA,OARSA,EAAA3f,QAAP,SAAeJ,GACb,OAAO,MAIF+f,EAAAzf,OAAP,SAAc/C,GACZ,OAAO,MANTvB,EAAA,CADC2G,qBAMD3G,EAAA,CADCgH,oBAbU+c,EAAQ/jB,EAAA,CAbpB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJogB,MAAO,QACPC,QAAS,UACTC,MAAO,QACPnX,MAAO,QACPoX,QAAS,WAEXle,SAAU,CACRie,MAAO3c,MAGEwc,oBCRX,SAAAK,EACUrB,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAIJoB,EAAAhlB,UAAAilB,aAAN,SAAmBrgB,sEACjB,MAAA,CAAA,EAAO9E,KAAK6jB,WAAWuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,oBAAqB8J,GAASzf,OAAON,IACjGmW,KAAK/T,EAAAA,KAAI,SAAAme,GAAY,OAAAR,GAAS3f,QAAQmgB,OACtCpB,oBAGCiB,EAAAhlB,UAAAolB,mBAAN,SAAyBC,EAAkBzgB,sEACzC,MAAA,CAAA,EAAO9E,KAAK6jB,WAAWuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,aAAcV,GAASzf,OAAON,IACpHmW,KAAK/T,EAAAA,KAAI,SAAAme,GAAY,OAAAR,GAAS3f,QAAQmgB,OACtCpB,6DAdiBE,EAAAA,kBACG/H,0IAHd8I,EAAWpkB,EAAA,CADvBob,EAAAA,WAAW,CAACC,WAAY,UACZ+I,oBCCX,SAAAM,EACU3B,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAGJ0B,EAAAtlB,UAAAulB,OAAN,SAAaC,EAAeC,EAAmBC,EAAgBpa,8EAQ7D,OAPIqa,EAAS,IAAIC,EAAAA,WACbF,GAASpa,IACXqa,EAASA,EAAOpQ,IAAI,QAASmQ,EAAMhL,YAAYnF,IAAI,SAAUjK,EAAOoP,cAGhEmL,EAAW,IAAIC,UACZC,OAAO,OAAQP,EAAUC,GAClC,CAAA,EAAO3lB,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAiBgL,EAAU,CAACF,OAAMA,IAC1E5K,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAuD,EAAKnD,QAAQJ,OAC9Bmf,oBAGCuB,EAAAtlB,UAAAgmB,iBAAN,SAAuBlB,sFACfe,EAAW,IAAIC,aACrB,IAAmBG,EAAAliB,EAAA+gB,GAAKoB,EAAAD,EAAA5jB,QAAA6jB,EAAAzjB,KAAAyjB,EAAAD,EAAA5jB,OAAboG,EAAIyd,EAAA/jB,MACb0jB,EAASE,OAAO,QAAStd,EAAKA,KAAMA,EAAKgd,2GAE3C,MAAA,CAAA,EAAO3lB,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,4BAA6BgL,EAAU,CAACpB,aAAc,SAC9FV,6DAzBiBE,EAAAA,kBACG/H,0IAHdoJ,EAAO1kB,EAAA,CADnBob,EAAAA,WAAW,CAACC,WAAY,UACZqJ,ONHD1D,GAAAA,EAAAA,qBAAAA,EAAAA,mBAAkB,KAC5BA,GAAA,WAAA,GAAA,aACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,iBAAA,GAAA,mBACAA,GAAAA,GAAA,cAAA,GAAA,gBACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,WAAA,IAAA,aACAA,GAAAA,GAAA,cAAA,IAAA,gBACAA,GAAAA,GAAA,cAAA,IAAA,gBACAA,GAAAA,GAAA,mBAAA,IAAA,qBACAA,GAAAA,GAAA,wBAAA,IAAA,0BACAA,GAAAA,GAAA,cAAA,IAAA,gBACAA,GAAAA,GAAA,aAAA,IAAA,eACAA,GAAAA,GAAA,cAAA,IAAA,gBACAA,GAAAA,GAAA,aAAA,IAAA,eACAA,GAAAA,GAAA,KAAA,IAAA,OACAA,GAAAA,GAAA,QAAA,IAAA,UACAA,GAAAA,GAAA,cAAA,IAAA,gBACAA,GAAAA,GAAA,YAAA,IAAA,eAGUC,GAAAA,EAAAA,uBAAAA,EAAAA,qBAAoB,KAC9BA,GAAA,WAAA,GAAA,aACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,cAAA,GAAA,oBO5BUsE,kBPgEZ,SAAAC,IAAA,IAAAhP,EAAA,OAAAvR,GAAAA,EAAAlF,MAAAb,KAAAU,YAAAV,YAWEsX,EAAA2K,QAAS,IAiEX,OA5EmCniB,EAAAwmB,EAAAvgB,GAsBjCvG,OAAAgC,eAAI8kB,EAAApmB,UAAA,sBAAmB,KAAvB,WACE,OAAIF,KAAKumB,qBACAvmB,KAAKumB,qBAEPvmB,KAAK2hB,gBAGd,SAAwBtf,GACtBrC,KAAKumB,qBAAuBlkB,mCAG9BikB,EAAApmB,UAAAgjB,QAAA,SAAQC,GACN,OAAInjB,KAAKojB,OAASD,EAAMC,MAAQpjB,KAAKwX,SAAW2L,EAAM3L,OAC7CxX,KAAKoY,SAAS7K,UAAY4V,EAAM/K,SAAS7K,UAAY,GAAK,EAE/DvN,KAAKwX,SAAW2L,EAAM3L,OACjBxX,KAAKojB,KAAOD,EAAMC,KAAO,GAAK,EAEhCpjB,KAAKwX,OAAS2L,EAAM3L,OAAS,GAAK,GAG3ChY,OAAAgC,eAAI8kB,EAAApmB,UAAA,gBAAa,KAAjB,WACE,IAAMmjB,EAAU7V,KAAKC,MAAMzN,KAAKojB,KAAO,IACjCE,EAAUtjB,KAAKojB,KAAiB,GAAVC,EAC5B,OAAUA,EAAU,GAAK,IAAM,IAAKA,EAAO,KAAIC,EAAU,GAAK,IAAM,IAAKA,mCAG3EgD,EAAApmB,UAAAsmB,YAAA,WACE,MAAO,CAAC1E,EAAAA,mBAAmB2E,KAAM3E,EAAAA,mBAAmB4E,eAAenE,QAAQviB,KAAKwiB,UAAY,GAG9F8D,EAAApmB,UAAAymB,cAAA,WACE,MAAO,CACL7E,EAAAA,mBAAmB8E,cAAe9E,EAAAA,mBAAmB+E,cACrD/E,EAAAA,mBAAmBgF,mBAAoBhF,EAAAA,mBAAmBiF,wBAC1DjF,EAAAA,mBAAmBkF,aAAclF,EAAAA,mBAAmBmF,eACpD1E,QAAQviB,KAAKwiB,UAAY,GAG7B8D,EAAApmB,UAAAgnB,QAAA,SAAQC,GACN,OAAInnB,KAAKojB,OAAS+D,EAAI/D,MAAQpjB,KAAKwX,SAAW2P,EAAI3P,OACzCxX,KAAK0E,GAAKyiB,EAAIziB,GAEnB1E,KAAKwX,SAAW2P,EAAI3P,OACfxX,KAAKojB,KAAO+D,EAAI/D,KAElBpjB,KAAKwX,OAAS2P,EAAI3P,QAIpB8O,EAAAphB,QAAP,SAAe7C,KAGRikB,EAAAlhB,OAAP,SAAc/C,KAHdvB,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBA1EUwe,EAAaxlB,EAAA,CA3BzB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6e,UAAW,WACX7M,QAAS,SACTkL,aAAc,aACdhO,QAAS,SACT4P,SAAU,UACVpL,SAAU,WACVgL,KAAM,OACN5L,OAAQ,SACRyK,OAAQ,SACRwB,aAAc,cACd2D,UAAW,YACXC,cAAe,eACfC,UAAW,WACXC,aAAc,cACdC,uBAAwB,sBACxBC,eAAgB,iBAElB1gB,SAAU,CACRqR,SAAUzR,EACV6b,QAASnd,EAAUyc,EAAAA,oBACnBsF,UAAW/hB,EAAU0c,EAAAA,sBACrB2F,YAAaliB,QAGJ8gB,IAAsBzhB,kBQ7BnC,SAAA8iB,mDAmGA,OAnGyC7nB,EAAA6nB,EAAA5hB,GA+BvCvG,OAAAgC,eAAImmB,EAAAznB,UAAA,KAAE,KAAN,WACE,OAAOF,KAAK2hB,4CAGdniB,OAAAgC,eAAImmB,EAAAznB,UAAA,cAAW,KAAf,WACE,OAAQF,KAAK4nB,eAAiB,IAAM5nB,KAAK6nB,eAAiB,IAAM7nB,KAAK8nB,eAAiB,oCAGxFtoB,OAAAgC,eAAImmB,EAAAznB,UAAA,eAAY,KAAhB,WACE,OAAQF,KAAK+nB,gBAAkB,IAAM/nB,KAAKgoB,gBAAkB,IAAMhoB,KAAKioB,gBAAkB,oCAG3FzoB,OAAAgC,eAAImmB,EAAAznB,UAAA,aAAU,KAAd,WACE,OAAQF,KAAKkoB,cAAgB,IAAMloB,KAAKmoB,cAAgB,IAAMnoB,KAAKooB,cAAgB,oCAGrF5oB,OAAAgC,eAAImmB,EAAAznB,UAAA,UAAO,KAAX,WACE,OAAQF,KAAKmoB,cAAgB,IAAMnoB,KAAK6nB,eAAiB,IAAM7nB,KAAKgoB,gBAAkB,oCAGxFxoB,OAAAgC,eAAImmB,EAAAznB,UAAA,UAAO,KAAX,WACE,OAAQF,KAAKkoB,cAAgB,IAAMloB,KAAK4nB,eAAiB,IAAM5nB,KAAK+nB,gBAAkB,oCAGxFvoB,OAAAgC,eAAImmB,EAAAznB,UAAA,UAAO,KAAX,WACE,OAAQF,KAAKooB,cAAgB,IAAMpoB,KAAK8nB,eAAiB,IAAM9nB,KAAKioB,gBAAkB,oCAGxFzoB,OAAAgC,eAAImmB,EAAAznB,UAAA,QAAK,KAAT,WACE,OAAOF,KAAKqoB,QAAUroB,KAAKsoB,QAAUtoB,KAAKuoB,yCAG5C/oB,OAAAgC,eAAImmB,EAAAznB,UAAA,QAAK,KAAT,WACE,OAAQF,KAAKwoB,SAAW,IAAMxoB,KAAKyoB,SAAW,IAAMzoB,KAAK0oB,SAAW,oCAGtElpB,OAAAgC,eAAImmB,EAAAznB,UAAA,UAAO,KAAX,WACE,OAAQF,KAAK2oB,WAAa,IAAM3oB,KAAK4oB,WAAa,IAAM5oB,KAAK6oB,WAAa,oCAG5ErpB,OAAAgC,eAAImmB,EAAAznB,UAAA,WAAQ,KAAZ,WACE,OAAQF,KAAK8oB,aAAe,IAAM9oB,KAAK+oB,eAAiB,oCAG1DvpB,OAAAgC,eAAImmB,EAAAznB,UAAA,YAAS,KAAb,WACE,OAAQF,KAAKgpB,kBAAoB,IAAMhpB,KAAKipB,eAAiB,oCAG/DzpB,OAAAgC,eAAImmB,EAAAznB,UAAA,eAAY,KAAhB,WACE,OAAQF,KAAKkpB,OAAS,IAAMlpB,KAAKmpB,cAAgB,oCAGnD3pB,OAAAgC,eAAImmB,EAAAznB,UAAA,eAAY,KAAhB,WACE,OAAKF,KAAKopB,cAAiBppB,KAAKkpB,MAGzB1b,KAAK6b,MAAM,IAAOrpB,KAAKkpB,MAAQlpB,KAAKopB,cAAgB,GAFlD,mCAKX5pB,OAAAgC,eAAImmB,EAAAznB,UAAA,cAAW,KAAf,WACE,OAAOsN,KAAKC,MAAMzN,KAAK2f,SAAW,qCAI7BgI,EAAAziB,QAAP,SAAeJ,KAGR6iB,EAAAviB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAjGU6f,EAAmB7mB,EAAA,CApC/B8F,EAAc,CACbE,cAAe,CACb8a,aAAc,aACdC,WAAY,YACZ/N,OAAQ,SACRwV,eAAgB,eAChBC,iBAAkB,gBAClBC,iBAAkB,iBAClBC,eAAgB,eAChBC,iBAAkB,gBAClBC,iBAAkB,iBAClBC,eAAgB,eAChBC,iBAAkB,gBAClBC,iBAAkB,iBAClBC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,WAAY,YACZC,WAAY,YACZC,WAAY,YACZC,kBAAmB,mBACnBC,eAAgB,gBAChBC,YAAa,aACbC,gBAAiB,gBACjBC,cAAe,cACfvB,MAAO,QACPwB,cAAe,eACfC,YAAa,aACbC,gBAAiB,iBACjBvJ,UAAW,WACXwJ,WAAY,aAEd9jB,SAAU,CACRmT,UAAWvT,MAGFghB,IAA4B9iB,kBCoCzC,SAAAimB,mDAkFA,OAlFqChrB,EAAAgrB,EAAA/kB,GAyDnCvG,OAAAgC,eAAIspB,EAAA5qB,UAAA,UAAO,KAAX,WACE,OAAQF,KAAK2oB,WAAa,IAAM3oB,KAAK6oB,WAAa,IAAM7oB,KAAK4oB,WAAa,oCAG5EppB,OAAAgC,eAAIspB,EAAA5qB,UAAA,cAAW,KAAf,WACE,IAAKF,KAAK2f,SACR,MAAO,QAET,IAAM0D,EAAU7V,KAAKC,MAAMzN,KAAK2f,SAAW,IACrC2D,EAAU9V,KAAKC,MAAMzN,KAAK2f,SAAqB,GAAV0D,GAC3C,MAAO,IAAGA,EAAU,GAAK,EAAI,IAAKA,EAAO,KAAIC,EAAU,GAAK,EAAI,IAAKA,mCAGvE9jB,OAAAgC,eAAIspB,EAAA5qB,UAAA,kBAAe,KAAnB,WACE,OAAKF,KAAK4c,WAGHpP,KAAKC,MAAM,IAAOzN,KAAK6c,cAAgB7c,KAAK4c,YAAc,GAFxD,mCAMJkO,EAAA5lB,QAAP,SAAeJ,KAGRgmB,EAAA1lB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAhFUgjB,EAAehqB,EAAA,CAnE3B8F,EAAc,CACbE,cAAe,CACb8Y,qBAAsB,qBACtBzQ,KAAM,OACN6P,UAAW,WACXjS,KAAM,OACNgS,gBAAiB,iBACjBc,MAAO,QACPC,SAAU,UACVtQ,YAAa,aACbD,gBAAiB,gBACjBwb,iBAAkB,iBAClBjX,OAAQ,SACRkX,SAAU,UACV1B,eAAgB,eAChBC,iBAAkB,gBAClBC,iBAAkB,iBAClByB,SAAU,UACVxB,eAAgB,eAChBC,iBAAkB,gBAClBC,iBAAkB,iBAClBuB,SAAU,UACVtB,eAAgB,eAChBC,iBAAkB,gBAClBC,iBAAkB,iBAClBqB,iBAAkB,iBAClBpB,SAAU,UACVqB,iBAAkB,iBAClBpB,SAAU,UACVqB,iBAAkB,iBAClBC,MAAO,QACPrB,SAAU,UACVsB,YAAa,aACbC,cAAe,cACfC,cAAe,eACfC,MAAO,QACPC,cAAe,eACfC,cAAe,eACfC,cAAe,eACf3B,WAAY,YACZC,WAAY,YACZC,WAAY,YACZC,kBAAmB,mBACnBC,eAAgB,gBAChBC,YAAa,aACbC,gBAAiB,gBACjBC,cAAe,cACfqB,UAAW,WACXC,iBAAkB,iBAClB7C,MAAO,QACPwB,cAAe,eACfC,YAAa,aACbC,gBAAiB,iBACjBvJ,UAAW,WACXwJ,WAAY,YACZvJ,OAAQ,SACRC,KAAM,QAERxa,SAAU,CACRya,mBAAoB1C,GACpB3P,KAAMH,GACNqQ,SAAUtB,GACVhR,KAAMD,GACNsS,eAAgBzC,GAChBkD,MAAO/Z,MAGEglB,IAAwBjmB,kBC7DrC,SAAAmnB,mDASA,OAT6ClsB,EAAAksB,EAAAjmB,GAKpCimB,EAAA9mB,QAAP,SAAeJ,KAGRknB,EAAA5mB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAPUkkB,EAAuBlrB,EAAA,CAVnC8F,EAAc,CACbE,cAAe,CACbqI,KAAM,OACN6I,gBAAiB,kBAEnBjR,SAAU,CACRoI,KAAM2b,GACNlT,eAAgBkT,OAGPkB,IAAgCnnB,kBCF3C,SAAAonB,EACYpI,EACAC,GAFZ,IAAAxM,EAIEvR,EAAAnF,KAAAZ,KAAM6jB,EAAYC,IAAc9jB,YAHtBsX,EAAAuM,WAAAA,EACAvM,EAAAwM,cAAAA,WAHqBhkB,EAAAmsB,EAAAlmB,GAQ3BkmB,EAAA/rB,UAAAmkB,QAAN,SAAcL,sEACZ,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kCAAkCiJ,EAAM,KAAK/I,KACzG/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2U,GAAKnS,QAAQxC,OAC3BuhB,oBAGEgI,EAAA/rB,UAAAokB,iBAAN,SAAuBN,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kCAAkCiJ,EAAM,oBAAoB/I,KACxH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAspB,GAAwB9mB,QAAQxC,OAC9CuhB,oBAGEgI,EAAA/rB,UAAAqkB,iBAAN,SAAuBP,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kCAAkCiJ,EAAM,oBAAoB/I,KACxH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAilB,GAAoBziB,QAAQxC,OAC1CuhB,oBAGEgI,EAAA/rB,UAAAskB,QAAN,SAAcR,sEACZ,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kCAAkCiJ,EAAM,UAAU/I,KAC9G/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA4jB,GAAcphB,QAAQxC,OACpCuhB,oBAGEgI,EAAA/rB,UAAAukB,iBAAN,SAAuBT,EAAgBkI,sEACrC,MAAA,CAAA,EAAOlsB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kCAAkCiJ,EAAM,kBAAmB,CACvH6B,QAAQ,IAAIC,EAAAA,YAAarQ,IAAI,YAAayW,GAC1CvH,aAAc,SACbV,oBAGCgI,EAAA/rB,UAAAisB,oBAAN,SAA0BnI,EAAgBkI,EAAiCja,sEACzE,MAAA,CAAA,EAAOjS,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kCAAkCiJ,EAAM,0BAA2B,CAC/H6B,QAAQ,IAAIC,EAAAA,YAAarQ,IAAI,YAAayW,GAAQzW,IAAI,mBAAoBxD,GAC1E0S,aAAc,SACbV,6DAzCmBE,EAAAA,kBACG/H,0IAHhB6P,EAAanrB,EAAA,CADzBob,EAAAA,WAAW,CAACC,WAAY,UACZ8P,IAAsBrI,KJPvByC,GAAAA,EAAAA,uBAAAA,EAAAA,qBAAoB,KAC9BA,GAAA,WAAA,GAAA,aACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,gBAAA,GAAA,kBACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,sBAAA,IAAA,wBACAA,GAAAA,GAAA,mBAAA,IAAA,qBACAA,GAAAA,GAAA,mBAAA,IAAA,qBACAA,GAAAA,GAAA,OAAA,IAAA,SACAA,GAAAA,GAAA,WAAA,IAAA,aACAA,GAAAA,GAAA,OAAA,IAAA,SACAA,GAAAA,GAAA,UAAA,IAAA,YACAA,GAAAA,GAAA,KAAA,IAAA,OACAA,GAAAA,GAAA,KAAA,IAAA,OACAA,GAAAA,GAAA,YAAA,IAAA,cACAA,GAAAA,GAAA,SAAA,IAAA,WACAA,GAAAA,GAAA,aAAA,IAAA,eACAA,GAAAA,GAAA,KAAA,IAAA,OACAA,GAAAA,GAAA,MAAA,IAAA,QACAA,GAAAA,GAAA,IAAA,IAAA,MACAA,GAAAA,GAAA,QAAA,IAAA,cKzBU+F,kBLiDZ,SAAAC,IAAA,IAAA/U,EAAA,OAAAvR,GAAAA,EAAAlF,MAAAb,KAAAU,YAAAV,YAWEsX,EAAA2K,QAAS,IAyCX,OApDqCniB,EAAAusB,EAAAtmB,GAiBnCsmB,EAAAnsB,UAAAgjB,QAAA,SAAQC,GACN,OAAInjB,KAAKojB,OAASD,EAAMC,MAAQpjB,KAAKwX,SAAW2L,EAAM3L,OAC7CxX,KAAKoY,SAAS7K,UAAY4V,EAAM/K,SAAS7K,UAAY,GAAK,EAE/DvN,KAAKwX,SAAW2L,EAAM3L,OACjBxX,KAAKojB,KAAOD,EAAMC,KAAO,GAAK,EAEhCpjB,KAAKwX,OAAS2L,EAAM3L,OAAS,GAAK,GAG3ChY,OAAAgC,eAAI6qB,EAAAnsB,UAAA,gBAAa,KAAjB,WACE,IAAMmjB,EAAU7V,KAAKC,MAAMzN,KAAKojB,KAAO,IACjCE,EAAUtjB,KAAKojB,KAAiB,GAAVC,EAC5B,OAAUA,EAAU,GAAK,IAAM,IAAKA,EAAO,KAAIC,EAAU,GAAK,IAAM,IAAKA,mCAG3E+I,EAAAnsB,UAAAsmB,YAAA,WACE,MAAO,CAACH,EAAAA,qBAAqBI,KAAMJ,EAAAA,qBAAqBiG,aAAcjG,EAAAA,qBAAqBkG,oBAAoBhK,QAAQviB,KAAKwiB,UAAY,GAG1I6J,EAAAnsB,UAAAgnB,QAAA,SAAQC,GACN,OAAInnB,KAAKojB,OAAS+D,EAAI/D,MAAQpjB,KAAKwX,SAAW2P,EAAI3P,OACzCxX,KAAK0E,GAAKyiB,EAAIziB,GAEnB1E,KAAKwX,SAAW2P,EAAI3P,OACfxX,KAAKojB,KAAO+D,EAAI/D,KAElBpjB,KAAKwX,OAAS2P,EAAI3P,QAIpB6U,EAAAnnB,QAAP,SAAe7C,KAGRgqB,EAAAjnB,OAAP,SAAc/C,KAHdvB,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAlDUukB,EAAevrB,EAAA,CApB3B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6e,UAAW,WACX7M,QAAS,SACTkL,aAAc,aACdhO,QAAS,SACT4P,SAAU,UACVpL,SAAU,WACVgL,KAAM,OACN5L,OAAQ,SACRyK,OAAQ,SACRwB,aAAc,cACd6D,UAAW,YAEbvgB,SAAU,CACRqR,SAAUzR,EACV6b,QAASnd,EAAUghB,EAAAA,0BAGVgG,IAAwBxnB,kBMZrC,SAAA2nB,mDAqIA,OArI2C1sB,EAAA0sB,EAAAzmB,GAiCzCvG,OAAAgC,eAAIgrB,EAAAtsB,UAAA,KAAE,KAAN,WACE,OAAOF,KAAK2hB,4CAGdniB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,QAAK,KAAT,WACE,OAAQF,KAAKysB,YAAc,IAAMzsB,KAAK0sB,aAAe,IAAM1sB,KAAK2sB,cAAgB,oCAIlFntB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,aAAU,KAAd,WACE,OAAQF,KAAKsrB,OAAS,IAAMtrB,KAAK4sB,cAAgB,IAAM5sB,KAAK6sB,mBAAqB,oCAGnFrtB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,eAAY,KAAhB,WACE,OAAKF,KAAK0rB,OAAU1rB,KAAK8sB,WAGlBtf,KAAK6b,MAAM,IAAOrpB,KAAK8sB,WAAa9sB,KAAK0rB,OAAS,GAFhD,mCAKXlsB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,qBAAkB,KAAtB,WACE,OAAKF,KAAK0sB,aAAgB1sB,KAAK0rB,MAGxBle,KAAK6b,MAAM,IAAOrpB,KAAK0sB,YAAc1sB,KAAK0rB,OAAS,GAFjD,mCAKXlsB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,YAAS,KAAb,WACE,OAAQF,KAAK4sB,cAAgB,IAAM5sB,KAAK+sB,iBAAmB,oCAG7DvtB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,sBAAmB,KAAvB,WACE,OAAKF,KAAK+sB,iBAAoB/sB,KAAK4sB,aAG5Bpf,KAAK6b,MAAM,IAAOrpB,KAAK4sB,aAAe5sB,KAAK+sB,iBAAmB,GAF5D,mCAKXvtB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,iBAAc,KAAlB,WACE,OAAQF,KAAK6sB,mBAAqB,IAAM7sB,KAAKgtB,sBAAwB,oCAGvExtB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,2BAAwB,KAA5B,WACE,OAAKF,KAAKgtB,sBAAyBhtB,KAAK6sB,kBAGjCrf,KAAK6b,MAAM,IAAOrpB,KAAK6sB,kBAAoB7sB,KAAKgtB,sBAAwB,GAFtE,mCAKXxtB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,eAAY,KAAhB,WACE,OAAQF,KAAKkpB,OAAS,IAAMlpB,KAAKmpB,cAAgB,oCAGnD3pB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,sBAAmB,KAAvB,WACE,OAAQF,KAAKitB,cAAgB,IAAMjtB,KAAKktB,qBAAuB,oCAGjE1tB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,2BAAwB,KAA5B,WACE,OAAQF,KAAKmtB,mBAAqB,IAAMntB,KAAKotB,0BAA4B,oCAG3E5tB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,oBAAiB,KAArB,WACE,OAAQF,KAAKmpB,cAAgB,IAAMnpB,KAAKktB,qBAAuB,IAAMltB,KAAKotB,0BAA4B,oCAIxG5tB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,aAAU,KAAd,WACE,OAAQF,KAAKkpB,OAAS,IAAMlpB,KAAKitB,cAAgB,IAAMjtB,KAAKmtB,mBAAqB,oCAGnF3tB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,eAAY,KAAhB,WACE,OAAKF,KAAKopB,cAAiBppB,KAAKkpB,MAGzB1b,KAAK6b,MAAM,IAAOrpB,KAAKkpB,MAAQlpB,KAAKopB,cAAgB,GAFlD,mCAKX5pB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,sBAAmB,KAAvB,WACE,OAAKF,KAAKqtB,qBAAwBrtB,KAAKitB,aAGhCzf,KAAK6b,MAAM,IAAOrpB,KAAKitB,aAAejtB,KAAKqtB,qBAAuB,GAFhE,mCAKX7tB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,2BAAwB,KAA5B,WACE,OAAKF,KAAKstB,0BAA6BttB,KAAKmtB,kBAGrC3f,KAAK6b,MAAM,IAAOrpB,KAAKmtB,kBAAoBntB,KAAKstB,0BAA4B,GAF1E,mCAKX9tB,OAAAgC,eAAIgrB,EAAAtsB,UAAA,cAAW,KAAf,WACE,OAAOsN,KAAKC,MAAMzN,KAAK2f,SAAW,qCAI7B6M,EAAAtnB,QAAP,SAAeJ,KAGR0nB,EAAApnB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAnIU0kB,EAAqB1rB,EAAA,CAtCjC8F,EAAc,CACbE,cAAe,CACb8a,aAAc,aACdC,WAAY,YACZ/N,OAAQ,SACRyX,YAAa,aACbC,cAAe,cACfC,cAAe,eACfH,MAAO,QACP3K,QAAS,UACT4M,QAAS,UACTC,WAAY,YACZC,cAAe,eACfC,iBAAkB,kBAClBC,sBAAuB,sBACvBC,cAAe,eACfC,oBAAqB,oBACrBC,uBAAwB,uBACxBC,4BAA6B,2BAC7BC,oBAAqB,oBACrB9E,MAAO,QACPwB,cAAe,eACfC,YAAa,aACbtJ,UAAW,WACXwJ,WAAY,YACZoD,MAAO,QACPC,aAAc,cACdC,UAAW,WACXC,eAAgB,gBAChBC,OAAQ,SACRrN,OAAQ,SACRsN,KAAM,OACN/D,YAAa,cAEfxjB,SAAU,CACRmT,UAAWvT,MAGF6lB,IAA8B3nB,kBCiC3C,SAAA0pB,mDAsEA,OAtEuCzuB,EAAAyuB,EAAAxoB,GAwDrCvG,OAAAgC,eAAI+sB,EAAAruB,UAAA,cAAW,KAAf,WACE,IAAKF,KAAK2f,SACR,MAAO,QAET,IAAM0D,EAAU7V,KAAKC,MAAMzN,KAAK2f,SAAW,IACrC2D,EAAU9V,KAAKC,MAAMzN,KAAK2f,SAAqB,GAAV0D,GAC3C,MAAO,IAAGA,EAAU,GAAK,EAAI,IAAKA,EAAO,KAAIC,EAAU,GAAK,EAAI,IAAKA,mCAIhEiL,EAAArpB,QAAP,SAAeJ,KAGRypB,EAAAnpB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBApEUymB,EAAiBztB,EAAA,CAlE7B8F,EAAc,CACbE,cAAe,CACb8Y,qBAAsB,qBACtBzQ,KAAM,OACN6P,UAAW,WACXjS,KAAM,OACNgS,gBAAiB,iBACjBc,MAAO,QACPC,SAAU,UACVtQ,YAAa,aACbD,gBAAiB,gBACjBuE,OAAQ,SACRyX,YAAa,aACbC,cAAe,cACfC,cAAe,eACf+C,sBAAuB,qBACvB9C,MAAO,QACPJ,MAAO,QACPK,cAAe,eACf8C,YAAa,aACb9N,QAAS,UACT8M,cAAe,eACfC,iBAAkB,kBAClBgB,sBAAuB,sBACvBd,cAAe,eACfD,sBAAuB,sBACvBgB,sBAAuB,sBACvBC,sBAAuB,sBACvBf,oBAAqB,oBACrBC,uBAAwB,uBACxBe,4BAA6B,2BAC7Bb,oBAAqB,oBACrBD,4BAA6B,2BAC7Be,4BAA6B,2BAC7BC,4BAA6B,2BAC7B7F,MAAO,QACP2C,cAAe,eACfmD,YAAa,aACbtE,cAAe,eACfuE,oBAAqB,oBACrBrD,cAAe,eACfjB,YAAa,aACbsD,MAAO,QACPC,aAAc,cACdC,UAAW,WACXC,eAAgB,gBAChBC,OAAQ,SACRrN,OAAQ,SACRsN,KAAM,OACN/D,YAAa,aACbgD,QAAS,UACTC,WAAY,YACZnM,UAAW,WACXwJ,WAAY,YACZvJ,OAAQ,SACRC,KAAM,QAERxa,SAAU,CACRya,mBAAoB1C,GACpB3P,KAAMH,GACNqQ,SAAUtB,GACVhR,KAAMD,GACNsS,eAAgBzC,GAChBkD,MAAO/Z,MAGEyoB,IAA0B1pB,kBC5DvC,SAAAqqB,mDASA,OAT+CpvB,EAAAovB,EAAAnpB,GAKtCmpB,EAAAhqB,QAAP,SAAeJ,KAGRoqB,EAAA9pB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAPUonB,EAAyBpuB,EAAA,CAVrC8F,EAAc,CACbE,cAAe,CACbqI,KAAM,OACN6I,gBAAiB,kBAEnBjR,SAAU,CACRoI,KAAMof,GACN3W,eAAgB2W,OAGPW,IAAkCrqB,kBCF7C,SAAAsqB,EACYtL,EACAC,GAFZ,IAAAxM,EAIEvR,EAAAnF,KAAAZ,KAAM6jB,EAAYC,IAAc9jB,YAHtBsX,EAAAuM,WAAAA,EACAvM,EAAAwM,cAAAA,WAHuBhkB,EAAAqvB,EAAAppB,GAQ7BopB,EAAAjvB,UAAAmkB,QAAN,SAAcL,sEACZ,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,KAAK/I,KAC3G/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2U,GAAKnS,QAAQxC,OAC3BuhB,oBAGEkL,EAAAjvB,UAAAokB,iBAAN,SAAuBN,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,oBAAoB/I,KAC1H/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAwsB,GAA0BhqB,QAAQxC,OAChDuhB,oBAGEkL,EAAAjvB,UAAAqkB,iBAAN,SAAuBP,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,oBAAoB/I,KAC1H/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA8pB,GAAsBtnB,QAAQxC,OAC5CuhB,oBAGEkL,EAAAjvB,UAAAskB,QAAN,SAAcR,sEACZ,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,UAAU/I,KAChH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2pB,GAAgBnnB,QAAQxC,OACtCuhB,oBAGEkL,EAAAjvB,UAAAukB,iBAAN,SAAuBT,EAAgBkI,sEACrC,MAAA,CAAA,EAAOlsB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,kBAAmB,CACzH6B,QAAQ,IAAIC,EAAAA,YAAarQ,IAAI,YAAayW,GAC1CvH,aAAc,SACbV,oBAGCkL,EAAAjvB,UAAAisB,oBAAN,SAA0BnI,EAAgBkI,EAAiCja,sEACzE,MAAA,CAAA,EAAOjS,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,0BAA2B,CACjI6B,QAAQ,IAAIC,EAAAA,YAAarQ,IAAI,YAAayW,GAAQzW,IAAI,mBAAoBxD,GAC1E0S,aAAc,SACbV,6DAzCmBE,EAAAA,kBACG/H,0IAHhB+S,EAAeruB,EAAA,CAD3Bob,EAAAA,WAAW,CAACC,WAAY,UACZgT,IAAwBvL,KJPzBwI,GAAAA,EAAAA,uBAAAA,EAAAA,qBAAoB,KAC9BA,GAAA,WAAA,GAAA,aACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,qBAAA,GAAA,uBACAA,GAAAA,GAAA,aAAA,IAAA,eACAA,GAAAA,GAAA,KAAA,IAAA,OACAA,GAAAA,GAAA,aAAA,IAAA,eACAA,GAAAA,GAAA,KAAA,IAAA,OACAA,GAAAA,GAAA,YAAA,IAAA,cACAA,GAAAA,GAAA,SAAA,IAAA,WACAA,GAAAA,GAAA,gBAAA,IAAA,kBACAA,GAAAA,GAAA,SAAA,IAAA,WACAA,GAAAA,GAAA,MAAA,IAAA,QACAA,GAAAA,GAAA,WAAA,IAAA,aACAA,GAAAA,GAAA,QAAA,IAAA,cKtBUgD,kBL6CZ,SAAAC,IAAA,IAAA/X,EAAA,OAAAvR,GAAAA,EAAAlF,MAAAb,KAAAU,YAAAV,YAWEsX,EAAA2K,QAAS,IA6CX,OAxDqCniB,EAAAuvB,EAAAtpB,GAiBnCspB,EAAAnvB,UAAAgjB,QAAA,SAAQC,GACN,OAAInjB,KAAKojB,OAASD,EAAMC,MAAQpjB,KAAKwX,SAAW2L,EAAM3L,OAC7CxX,KAAKoY,SAAS7K,UAAY4V,EAAM/K,SAAS7K,UAAY,GAAK,EAE/DvN,KAAKwX,SAAW2L,EAAM3L,OACjBxX,KAAKojB,KAAOD,EAAMC,KAAO,GAAK,EAEhCpjB,KAAKwX,OAAS2L,EAAM3L,OAAS,GAAK,GAG3ChY,OAAAgC,eAAI6tB,EAAAnvB,UAAA,gBAAa,KAAjB,WACE,IAAMmjB,EAAU7V,KAAKC,MAAMzN,KAAKojB,KAAO,IACjCE,EAAUtjB,KAAKojB,KAAiB,GAAVC,EAC5B,OAAUA,EAAU,GAAK,IAAM,IAAKA,EAAO,KAAIC,EAAU,GAAK,IAAM,IAAKA,mCAG3E+L,EAAAnvB,UAAAsmB,YAAA,WACE,MAAO,CAAC4F,EAAAA,qBAAqB3F,KAAM2F,EAAAA,qBAAqBE,cAAc/J,QAAQviB,KAAKwiB,UAAY,GAGjG6M,EAAAnvB,UAAAgnB,QAAA,SAAQC,GACN,OAAInnB,KAAKojB,OAAS+D,EAAI/D,MAAQpjB,KAAKwX,SAAW2P,EAAI3P,OACzCxX,KAAK0E,GAAKyiB,EAAIziB,GAEnB1E,KAAKwX,SAAW2P,EAAI3P,OACfxX,KAAKojB,KAAO+D,EAAI/D,KAElBpjB,KAAKwX,OAAS2P,EAAI3P,QAG3B6X,EAAAnvB,UAAA2iB,WAAA,WACE,MAAO,CAACuJ,EAAAA,qBAAqBkD,KAAMlD,EAAAA,qBAAqBmD,YAAanD,EAAAA,qBAAqBoD,UAAUjN,QAAQviB,KAAKwiB,UAAY,GAIxH6M,EAAAnqB,QAAP,SAAe7C,KAGRgtB,EAAAjqB,OAAP,SAAc/C,KAHdvB,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAtDUunB,EAAevuB,EAAA,CApB3B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6e,UAAW,WACX7M,QAAS,SACTkL,aAAc,aACdhO,QAAS,SACT4P,SAAU,UACVpL,SAAU,WACVgL,KAAM,OACN5L,OAAQ,SACRyK,OAAQ,SACRwB,aAAc,cACd6D,UAAW,YAEbvgB,SAAU,CACRqR,SAAUzR,EACV6b,QAASnd,EAAU+mB,EAAAA,0BAGViD,IAAwBxqB,kBMhBrC,SAAA4qB,mDAuGA,OAvG2C3vB,EAAA2vB,EAAA1pB,GA0BzCvG,OAAAgC,eAAIiuB,EAAAvvB,UAAA,KAAE,KAAN,WACE,OAAOF,KAAK2hB,4CAGdniB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,QAAK,KAAT,WACE,OAAQF,KAAKysB,YAAc,IAAMzsB,KAAK0sB,aAAe,IAAM1sB,KAAK2sB,cAAgB,oCAIlFntB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,aAAU,KAAd,WACE,OAAQF,KAAKsrB,OAAS,IAAMtrB,KAAK4sB,cAAgB,oCAGnDptB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,eAAY,KAAhB,WACE,OAAKF,KAAK0rB,OAAU1rB,KAAK8sB,WAGlBtf,KAAK6b,MAAM,IAAOrpB,KAAK8sB,WAAa9sB,KAAK0rB,OAAS,GAFhD,mCAKXlsB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,qBAAkB,KAAtB,WACE,OAAKF,KAAK0sB,aAAgB1sB,KAAK0rB,MAGxBle,KAAK6b,MAAM,IAAOrpB,KAAK0sB,YAAc1sB,KAAK0rB,OAAS,GAFjD,mCAKXlsB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,eAAY,KAAhB,WACE,OAAQF,KAAK0vB,oBAAsB,IAAM1vB,KAAK2vB,eAAiB,oCAGjEnwB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,sBAAmB,KAAvB,WACE,OAAKF,KAAK4vB,cAAiB5vB,KAAK4sB,aAGzBpf,KAAK6b,MAAM,IAAOrpB,KAAK4sB,aAAe5sB,KAAK4vB,cAAgB,GAFzD,mCAKXpwB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,eAAY,KAAhB,WACE,OAAQF,KAAKkpB,OAAS,IAAMlpB,KAAKmpB,cAAgB,oCAGnD3pB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,sBAAmB,KAAvB,WACE,OAAQF,KAAKitB,cAAgB,IAAMjtB,KAAKktB,qBAAuB,oCAGjE1tB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,oBAAiB,KAArB,WACE,OAAQF,KAAKmpB,cAAgB,IAAMnpB,KAAKktB,qBAAuB,oCAGjE1tB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,aAAU,KAAd,WACE,OAAQF,KAAKkpB,OAAS,IAAMlpB,KAAKitB,cAAgB,oCAGnDztB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,eAAY,KAAhB,WACE,OAAKF,KAAKopB,cAAiBppB,KAAKkpB,MAGzB1b,KAAK6b,MAAM,IAAOrpB,KAAKkpB,MAAQlpB,KAAKopB,cAAgB,GAFlD,mCAKX5pB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,sBAAmB,KAAvB,WACE,OAAKF,KAAKqtB,qBAAwBrtB,KAAKitB,aAGhCzf,KAAK6b,MAAM,IAAOrpB,KAAKitB,aAAejtB,KAAKqtB,qBAAuB,GAFhE,mCAKX7tB,OAAAgC,eAAIiuB,EAAAvvB,UAAA,cAAW,KAAf,WACE,OAAOsN,KAAKC,MAAMzN,KAAK2f,SAAW,qCAI7B8P,EAAAvqB,QAAP,SAAeJ,KAGR2qB,EAAArqB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBArGU2nB,EAAqB3uB,EAAA,CA5BjC8F,EAAc,CACbE,cAAe,CACb8a,aAAc,aACd9N,OAAQ,SACRyX,YAAa,aACbC,cAAe,cACfC,cAAe,eACfH,MAAO,QACP3K,QAAS,UACT8M,cAAe,eACfoC,eAAgB,gBAChBC,sBAAuB,qBACvB5G,MAAO,QACP0E,cAAe,eACflD,cAAe,eACfiD,sBAAuB,sBACvBhD,YAAa,aACbsD,MAAO,QACP8B,YAAa,cACb5B,UAAW,WACX6B,iBAAkB,iBAClB/O,UAAW,YACXD,OAAQ,SACRuJ,YAAa,aACblJ,UAAW,WACXwJ,WAAY,gBAGH4E,IAA8B5qB,kBCkC3C,SAAAorB,mDA6DA,OA7DuCnwB,EAAAmwB,EAAAlqB,GA+CrCvG,OAAAgC,eAAIyuB,EAAA/vB,UAAA,cAAW,KAAf,WACE,IAAKF,KAAK2f,SACR,MAAO,QAET,IAAM0D,EAAU7V,KAAKC,MAAMzN,KAAK2f,SAAW,IACrC2D,EAAU9V,KAAKC,MAAMzN,KAAK2f,SAAqB,GAAV0D,GAC3C,MAAO,IAAGA,EAAU,GAAK,EAAI,IAAKA,EAAO,KAAIC,EAAU,GAAK,EAAI,IAAKA,mCAIhE2M,EAAA/qB,QAAP,SAAeJ,KAGRmrB,EAAA7qB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBA3DUmoB,EAAiBnvB,EAAA,CAzD7B8F,EAAc,CACbE,cAAe,CACb8Y,qBAAsB,qBACtBzQ,KAAM,OACN6P,UAAW,WACXjS,KAAM,OACNgS,gBAAiB,iBACjBc,MAAO,QACPC,SAAU,UACVtQ,YAAa,aACbD,gBAAiB,gBACjBuE,OAAQ,SACRyX,YAAa,aACbC,cAAe,cACfC,cAAe,eACfH,MAAO,QACP3K,QAAS,UACT8M,cAAe,eACfoC,eAAgB,gBAChBC,sBAAuB,qBACvB5G,MAAO,QACP0E,cAAe,eACflD,cAAe,eACfiD,sBAAuB,sBACvBhD,YAAa,aACbsD,MAAO,QACPC,aAAc,cACdC,UAAW,WACX6B,iBAAkB,iBAClB/O,UAAW,YACXD,OAAQ,SACRuJ,YAAa,aACblJ,UAAW,WACXwJ,WAAY,YACZa,MAAO,QACPC,cAAe,eACfuE,cAAe,eACfxB,sBAAuB,sBACvB9C,cAAe,eACfC,cAAe,eACf8C,sBAAuB,sBACvBC,sBAAuB,sBACvBH,YAAa,aACbO,YAAa,aACbC,oBAAqB,oBACrB3N,OAAQ,SACRC,KAAM,QAERxa,SAAU,CACRya,mBAAoB1C,GACpB3P,KAAMH,GACNqQ,SAAUtB,GACVhR,KAAMD,GACNsS,eAAgBzC,GAChBkD,MAAO/Z,MAGEmqB,IAA0BprB,kBCnDvC,SAAAsrB,mDASA,OAT+CrwB,EAAAqwB,EAAApqB,GAKtCoqB,EAAAjrB,QAAP,SAAeJ,KAGRqrB,EAAA/qB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAPUqoB,EAAyBrvB,EAAA,CAVrC8F,EAAc,CACbE,cAAe,CACbqI,KAAM,OACN6I,gBAAiB,kBAEnBjR,SAAU,CACRoI,KAAM8gB,GACNrY,eAAgBqY,OAGPE,IAAkCtrB,kBCF7C,SAAAurB,EACYvM,EACAC,GAFZ,IAAAxM,EAIEvR,EAAAnF,KAAAZ,KAAM6jB,EAAYC,IAAc9jB,YAHtBsX,EAAAuM,WAAAA,EACAvM,EAAAwM,cAAAA,WAHuBhkB,EAAAswB,EAAArqB,GAQ7BqqB,EAAAlwB,UAAAmkB,QAAN,SAAcL,sEACZ,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,KAAK/I,KAC3G/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2U,GAAKnS,QAAQxC,OAC3BuhB,oBAGEmM,EAAAlwB,UAAAokB,iBAAN,SAAuBN,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,oBAAoB/I,KAC1H/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAytB,GAA0BjrB,QAAQxC,OAChDuhB,oBAGEmM,EAAAlwB,UAAAqkB,iBAAN,SAAuBP,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,oBAAoB/I,KAC1H/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA+sB,GAAsBvqB,QAAQxC,OAC5CuhB,oBAGEmM,EAAAlwB,UAAAskB,QAAN,SAAcR,sEACZ,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,UAAU/I,KAChH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2sB,GAAgBnqB,QAAQxC,OACtCuhB,oBAGEmM,EAAAlwB,UAAAukB,iBAAN,SAAuBT,EAAgBkI,sEACrC,MAAA,CAAA,EAAOlsB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,kBAAmB,CACzH6B,QAAQ,IAAIC,EAAAA,YAAarQ,IAAI,YAAayW,GAC1CvH,aAAc,SACbV,oBAGCmM,EAAAlwB,UAAAisB,oBAAN,SAA0BnI,EAAgBkI,EAAiCja,sEACzE,MAAA,CAAA,EAAOjS,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAoCiJ,EAAM,0BAA2B,CACjI6B,QAAQ,IAAIC,EAAAA,YAAarQ,IAAI,YAAayW,GAAQzW,IAAI,mBAAoBxD,GAC1E0S,aAAc,SACbV,6DAzCmBE,EAAAA,kBACG/H,0IAHhBgU,EAAetvB,EAAA,CAD3Bob,EAAAA,WAAW,CAACC,WAAY,UACZiU,IAAwBxM,mBCQrC,SAAAyM,mDAaA,OAboCvwB,EAAAuwB,EAAAtqB,GAS3BsqB,EAAAnrB,QAAP,SAAeJ,KAGRurB,EAAAjrB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAXUuoB,EAAcvvB,EAAA,CAf1B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJE,MAAO,QACP0rB,QAAS,UACTC,KAAM,OACNC,OAAQ,SACRvnB,WAAY,aAEdlC,SAAU,CACRupB,QAASjoB,EACTmoB,OAAQ1jB,GACR5D,UAAWvC,MAGF0pB,IAAuBxrB,iBCVpC,SAAA4rB,KAUA,OAJSA,EAAAvrB,QAAP,SAAeJ,KAGR2rB,EAAArrB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBARU2oB,EAAqB3vB,EAAA,CAPjC8F,EAAc,CACbE,cAAe,CACb4pB,SAAU,UACVxe,YAAa,aACbye,qBAAsB,yBAGbF,qBAyBb,SAAAG,mDAaA,OAbwC9wB,EAAA8wB,EAAA7qB,GAS/B6qB,EAAA1rB,QAAP,SAAeJ,KAGR8rB,EAAAxrB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAXU8oB,EAAkB9vB,EAAA,CAb9B8F,EAAc,CACbE,cAAe,CACboL,YAAa,aACbye,qBAAsB,qBACtBE,aAAc,cACdC,sBAAuB,sBACvBC,OAAQ,SACR9X,oBAAqB,qBAEvBlS,SAAU,CACRgqB,OAAQprB,EAAU8qB,QAGTG,IAA2B/rB,INhC5BuqB,GAAAA,EAAAA,0BAAAA,EAAAA,wBAAuB,KACjCA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,OAAA,GAAA,aOFU4B,kBPkBZ,SAAAC,mDAYA,OAZqCnxB,EAAAmxB,EAAAlrB,GAQ5BkrB,EAAA/rB,QAAP,SAAeJ,KAGRmsB,EAAA7rB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVUmpB,EAAenwB,EAAA,CAb3B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,OACNvC,KAAM,OACN6N,cAAe,eACfzC,OAAQ,UAEVrK,SAAU,CACRf,KAAMF,EACNsL,OAAQ/L,EAAU+pB,EAAAA,6BAGT6B,IAAwBpsB,YQrBrBqsB,GAAcvwB,GAC5B,OAAIA,GAAU,EACL,GAEFhB,MAAMkB,MAAM,KAAMlB,MAAMgB,IAASuG,KAAI,SAAChE,EAAG1C,GAAM,OAAAA,EAAI,MDDhDwwB,GAAAA,EAAAA,eAAAA,EAAAA,aAAY,KACtB,mBAAA,qBACAA,GAAA,YAAA,kBEDUG,kBFgBZ,SAAAC,mDAYA,OAZqCtxB,EAAAsxB,EAAArrB,GAQ5BqrB,EAAAlsB,QAAP,SAAeJ,KAGRssB,EAAAhsB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVUspB,EAAetwB,EAAA,CAZ3B8F,EAAc,CACbE,cAAe,CACbuqB,OAAQ,SACRC,aAAc,cACdC,mBAAoB,mBACpBld,YAAa,aACbpC,KAAM,QAERlL,SAAU,CACRkL,KAAM5M,EAAU2rB,EAAAA,kBAGPI,IAAwBvsB,kBA2BrC,SAAA2sB,IAAA,IAAAla,EAAA,OAAAvR,GAAAA,EAAAlF,MAAAb,KAAAU,YAAAV,YAOUsX,EAAAyZ,OAA2C,KA+BrD,OAtC6BjxB,EAAA0xB,EAAAzrB,GAUpByrB,EAAAtsB,QAAP,SAAeJ,KAGR0sB,EAAApsB,OAAP,SAAcN,KAEdtF,OAAAgC,eAAIgwB,EAAAtxB,UAAA,cAAW,KAAf,WACE,OAAOsN,KAAK2Z,IAAInnB,KAAKmU,SAASsd,YAAcjkB,KAAK2Z,IAAI,oCAGvDqK,EAAAtxB,UAAAwxB,iBAAA,WAAA,IAAApa,EAAAtX,KACE,GAA2B,IAAvBA,KAAK+wB,OAAOpwB,QAAgBX,KAAKmU,SAASsd,WAAY,CACxD,IAAME,EAAcnkB,KAAK2Z,IAAInnB,KAAKmU,SAASsd,YAAcjkB,KAAK2Z,IAAI,GAClEnnB,KAAK+wB,OAASG,GAAcS,GAAazqB,KAAI,SAAA0qB,GAC3C,IAAMC,EAAeva,EAAKnD,SAASsd,WAAajkB,KAAAskB,IAAA,EAAKF,GAOrD,MAAO,CACLvvB,MAAOuvB,EACPhtB,MAPmB,IAAjBitB,EACM,QAEA,OAAOA,MAQrB,OAAO7xB,KAAK+wB,QA1BdjwB,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAZU0pB,EAAO1wB,EAAA,CAbnB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,OACN4L,SAAU,WACVN,cAAe,eACfoF,oBAAqB,oBACrB8Y,YAAa,cAEfhrB,SAAU,CACRoN,SAAUid,OAGDI,IAAgB3sB,kBGO7B,SAAAmtB,mDAyCA,OAzCyClyB,EAAAkyB,EAAAjsB,GAqChCisB,EAAA9sB,QAAP,SAAeJ,KAGRktB,EAAA5sB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAvCUkqB,EAAmBlxB,EAAA,CA9C/B8F,EAAc,CACbE,cAAe,CACbqI,KAAM,OACN6P,UAAW,WACXY,qBAAsB,qBACtBb,gBAAiB,iBACjBhS,KAAM,OACN8S,MAAO,QACPC,SAAU,UACVtQ,YAAa,aACbD,gBAAiB,gBACjB0iB,WAAY,YACZC,aAAc,cACdC,WAAY,YACZC,cAAe,eACfC,YAAa,aACbC,aAAc,cACdC,aAAc,cACdC,eAAgB,gBAChBC,cAAe,eACfC,cAAe,eACfC,cAAe,eACfC,aAAc,cACdC,eAAgB,gBAChBC,SAAU,WACVC,eAAgB,gBAChBC,mBAAoB,oBACpBC,gBAAiB,iBACjBC,eAAgB,gBAChBC,qBAAsB,qBACtBC,yBAA0B,yBAC1BC,sBAAuB,sBACvBvf,OAAQ,SACRwf,OAAQ,SACRhS,OAAQ,SACRC,KAAM,QAERxa,SAAU,CACRoI,KAAMH,GACNqQ,SAAUtB,GACVyD,mBAAoB1C,GACpBM,eAAgBzC,GAChB5P,KAAMD,GACN+S,MAAO/Z,MAGEksB,IAA4BntB,kBC7BzC,SAAA0uB,mDA2BA,OA3ByCzzB,EAAAyzB,EAAAxtB,GAevCvG,OAAAgC,eAAI+xB,EAAArzB,UAAA,kBAAe,KAAnB,WACE,OAAKF,KAAK4c,WAGHpP,KAAKC,MAAM,IAAOzN,KAAK6c,cAAgB7c,KAAK4c,YAAc,GAFxD,mCAMJ2W,EAAAruB,QAAP,SAAeJ,KAGRyuB,EAAAnuB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAzBUyrB,EAAmBzyB,EAAA,CArB/B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJqa,gBAAiB,iBACjBjC,MAAO,QACP7D,oBAAqB,oBACrBzJ,YAAa,aACbD,gBAAiB,gBACjBE,UAAW,WACX0N,WAAY,YACZF,iBAAkB,iBAClBC,eAAgB,eAChBpJ,OAAQ,SACRiJ,eAAgB,gBAChByW,gBAAiB,kBAEnBzsB,SAAU,CACRqY,eAAgBzC,GAChBG,MAAOJ,OAGE6W,IAA4B1uB,IFrB7BssB,GAAAA,EAAAA,iBAAAA,EAAAA,eAAc,KACxBA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,MAAA,GAAA,YGAUsC,kBH4BZ,SAAAC,mDAsBA,OAtBgC5zB,EAAA4zB,EAAA3tB,GAgBvB2tB,EAAAxuB,QAAP,SAAeJ,KAKR4uB,EAAAtuB,OAAP,SAAcN,KALdhE,EAAA,CADC2G,qBAMD3G,EAAA,CADCgH,oBApBU4rB,EAAU5yB,EAAA,CAzBtB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJE,MAAO,QACPwT,SAAU,WACVub,aAAc,cACdC,YAAa,aACbtD,QAAS,UACT7f,MAAO,QACPojB,eAAgB,gBAChBC,QAAS,SACTviB,YAAa,cACbU,KAAM,OACN8hB,WAAY,YACZC,IAAK,OAEPjtB,SAAU,CACRqR,SAAUzR,EACV2pB,QAASjoB,EACToI,MAAOpI,EACP4rB,cAAe5rB,EACfkJ,YAAa5L,EAAUoO,IACvB9B,KAAM5M,EAAU8rB,EAAAA,oBAGPuC,IAAmB7uB,IG5BpB4uB,GAAAA,EAAAA,uBAAAA,EAAAA,qBAAoB,KAC9BA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,KAAA,GAAA,WCLUS,GAMAC,kBDqBZ,SAAAC,mDAaA,OAbqCt0B,EAAAs0B,EAAAruB,GAS5BquB,EAAAlvB,QAAP,SAAeJ,KAGRsvB,EAAAhvB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAXUssB,EAAetzB,EAAA,CAnB3B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ8R,KAAM,OACN6d,KAAM,OACNjgB,OAAQ,SACR7C,YAAa,cACb+iB,MAAO,QACPlc,SAAU,YAEZrR,SAAU,CACRyP,KAAMa,GACNgd,KAAMX,GACNtf,OAAQtE,GACRyB,YAAa5L,EAAUoO,IACvBqE,SAAUtS,EACVwuB,MAAOjvB,EAAUouB,EAAAA,0BAGRW,IAAwBvvB,IC3BrC,SAAYqvB,GACVA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,UAAA,GAAA,YACAA,EAAAA,EAAA,aAAA,GAAA,eAHF,CAAYA,KAAAA,GAAe,KAM3B,SAAYC,GACVA,EAAAA,EAAA,SAAA,GAAA,WACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,SAAA,GAAA,WACAA,EAAAA,EAAA,gBAAA,GAAA,kBARF,CAAYA,KAAAA,GAAqB,MAuBjC,SAAApuB,GAAA,SAAAwuB,mDAAgCz0B,EAAAy0B,EAAAxuB,GAM9BvG,OAAAgC,eAAI+yB,EAAAr0B,UAAA,OAAI,KAIR,WACE,OAAOF,KAAKw0B,WALd,SAASnyB,GACPrC,KAAKw0B,MAAQN,GAAgB7xB,oCAQxBkyB,EAAArvB,QAAP,SAAeJ,KAGRyvB,EAAAnvB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAjBUysB,EAAUzzB,EAAA,CAZtB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJqI,KAAM,OACNkR,KAAM,OACNwW,YAAa,eAEf1tB,SAAU,CACRgG,KAAMD,GACN2nB,YAAa9uB,EAAUN,EAAU8uB,SAGxBI,GAAb,CAAgC1vB,GAAhC,kBCuDE,SAAA6vB,EACU7Q,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAIJ4Q,EAAAx0B,UAAAmkB,QAAN,SAAcsQ,sEACZ,MAAA,CAAA,EAAO30B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,KAC7F1Z,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAqR,GAAW7O,QAAQxC,OACtCuhB,oBAGCyQ,EAAAx0B,UAAA00B,WAAN,SAAiBrP,EAAkBpV,sEACjC,MAAA,CAAA,EAAOnQ,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,gBAAgBpV,EAAK,KAC1G8K,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAqR,GAAW7O,QAAQxC,OACtCuhB,oBAGCyQ,EAAAx0B,UAAA20B,QAAN,SAAcF,sEACZ,MAAA,CAAA,EAAO30B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,UAC7F1Z,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2tB,GAAenrB,QAAQxC,OAC1CuhB,oBAGCyQ,EAAAx0B,UAAA40B,UAAN,SAAgBH,EAAsBI,EAAchsB,EAAcisB,4EAchE,OAbInP,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAC5CnF,IAAI,OAAQ1M,EAAK6R,YAChBoa,IACEA,EAAQV,QACVzO,EAASA,EAAOpQ,IAAI,QAASge,EAAAA,qBAAqBuB,EAAQV,SAExDU,EAAQC,SACVpP,EAASA,EAAOpQ,IAAI,SAAUuf,EAAQC,SAEpCD,EAAQE,iBACVrP,EAASA,EAAOpQ,IAAI,kBAAmBuf,EAAQE,eAAeta,cAGlE,CAAA,EAAO5a,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,WAAY,CAAC9O,OAAMA,EAAEsP,QAAS,aAC3Hla,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CAClB0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMsvB,GAAgBlvB,QAAQxC,EAAOI,WAEtCmhB,oBAGCyQ,EAAAx0B,UAAAo1B,oBAAN,SAA0BX,sEACxB,MAAA,CAAA,EAAO30B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,YAAY1Z,KAC1G/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAmsB,GAAgB/rB,QAAQJ,OACpCmf,oBAGEyQ,EAAAx0B,UAAAq1B,WAAN,SAAiBZ,sEACf,MAAA,CAAA,EAAO30B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,aAAa1Z,KAC3G/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA8uB,GAAQtsB,QAAQxC,OAC9BuhB,oBAGEyQ,EAAAx0B,UAAAs1B,gBAAN,SAAsBC,sEACpB,MAAA,CAAA,EAAOz1B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,8BAA8B0a,EAAS,WAAWxa,KAC9G/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2U,GAAKnS,QAAQxC,OAC3BuhB,oBAGEyQ,EAAAx0B,UAAAw1B,eAAN,SAAqBf,sEACnB,MAAA,CAAA,EAAO30B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,kBAC7F1Z,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA8rB,GAAmB1rB,QAAQJ,OAC5Cmf,oBAGCyQ,EAAAx0B,UAAAy1B,SAAN,SAAehB,EAAsBI,EAAchsB,EAAcisB,eAAA,IAAAA,IAAAA,EAAA,sEAM/D,OALInP,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAC3C7R,IACF8c,EAASA,EAAOpQ,IAAI,OAAQ1M,EAAK6R,aAEnCiL,EAAS+P,GAAkBZ,EAASnP,GACpC,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,UAAW,CAAC9O,OAAMA,EAAEsP,QAAS,aAC1Hla,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CAClB0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMuS,GAAKnS,QAAQxC,EAAOI,WACvBmhB,oBAGHyQ,EAAAx0B,UAAA21B,SAAN,SAAelB,sEACb,MAAA,CAAA,EAAO30B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,WAC7F1Z,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAia,GAAezX,QAAQxC,OAC1CuhB,oBAGCyQ,EAAAx0B,UAAA41B,cAAN,SAAoBnB,sEAClB,MAAA,CAAA,EAAO30B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,iBAC7F1Z,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA6wB,GAAoBruB,QAAQxC,OAC/CuhB,oBAGCyQ,EAAAx0B,UAAA61B,YAAN,SAAkBC,sEAChB,MAAA,CAAA,EAAOh2B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,2BAA2Bib,EAAgB,KACtG/a,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAia,GAAezX,QAAQxC,OAC1CuhB,oBAGCyQ,EAAAx0B,UAAA+1B,YAAN,SAAkBC,sEAChB,MAAA,CAAA,EAAOl2B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gCAAgCmb,EAAM,KACjGjb,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAoc,GAAmB5Z,QAAQxC,OAC9CuhB,oBAGCyQ,EAAAx0B,UAAAi2B,aAAN,SAAmBC,sEACjB,MAAA,CAAA,EAAOp2B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gCAAgCqb,EAAgB,WAC3Gnb,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2U,GAAKnS,QAAQxC,OAChCuhB,oBAGCyQ,EAAAx0B,UAAAm2B,8BAAN,SAAoCrB,4EAGlC,OAFInP,EAAS,IAAIC,EAAAA,WACjBD,EAASyQ,GAA6BtB,EAASnP,GAC/C,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,wCAAyC,CAAC8K,OAAMA,IAAG5K,KAC/G/T,EAAAA,KAAI,SAACxE,eACH,IAAkB,IAAAqC,EAAAd,EAAAzE,OAAOwF,KAAKtC,IAAOuC,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAAlC,IAAMtB,EAAGgE,EAAA5C,MACZK,EAAOzB,GAAOse,GAAoBra,QAAQxC,EAAOzB,sGAEnD,OAAOyB,MAETuhB,oBAGEyQ,EAAAx0B,UAAAq2B,8BAAN,SAAoCvB,4EAGlC,OAFInP,EAAS,IAAIC,EAAAA,WACjBD,EAASyQ,GAA6BtB,EAASnP,GAC/C,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,wCAAyC,CAAC8K,OAAMA,IAAG5K,KAC/G/T,EAAAA,KAAI,SAACxE,eACH,IAAkB,IAAAqC,EAAAd,EAAAzE,OAAOwF,KAAKtC,IAAOuC,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAAlC,IAAMtB,EAAGgE,EAAA5C,MACZK,EAAOzB,GAAO+wB,GAAoB9sB,QAAQxC,EAAOzB,sGAEnD,OAAOyB,MAETuhB,oBAGEyQ,EAAAx0B,UAAAs2B,0BAAN,SAAgCxB,4EAG9B,OAFInP,EAAS,IAAIC,EAAAA,WACjBD,EAASyQ,GAA6BtB,EAASnP,GAC/C,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,oCAAqC,CAAC8K,OAAMA,IAAG5K,KAC3G/T,EAAAA,KAAI,SAACxE,eACH,IAAkB,IAAAqC,EAAAd,EAAAzE,OAAOwF,KAAKtC,IAAOuC,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAAlC,IAAMtB,EAAGgE,EAAA5C,MACZK,EAAOzB,GAAO6pB,GAAgB5lB,QAAQxC,EAAOzB,sGAE/C,OAAOyB,MAETuhB,oBAGEyQ,EAAAx0B,UAAAu2B,4BAAN,SAAkCzB,4EAGhC,OAFInP,EAAS,IAAIC,EAAAA,WACjBD,EAASyQ,GAA6BtB,EAASnP,GAC/C,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAuC,CAAC8K,OAAMA,IAAG5K,KAC7G/T,EAAAA,KAAI,SAACxE,eACH,IAAkB,IAAAqC,EAAAd,EAAAzE,OAAOwF,KAAKtC,IAAOuC,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAAlC,IAAMtB,EAAGgE,EAAA5C,MACZK,EAAOzB,GAAOstB,GAAkBrpB,QAAQxC,EAAOzB,sGAEjD,OAAOyB,MAETuhB,oBAGEyQ,EAAAx0B,UAAAw2B,4BAAN,SAAkC1B,4EAGhC,OAFInP,EAAS,IAAIC,EAAAA,WACjBD,EAASyQ,GAA6BtB,EAASnP,GAC/C,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAuC,CAAC8K,OAAMA,IAAG5K,KAC7G/T,EAAAA,KAAI,SAACxE,eACH,IAAkB,IAAAqC,EAAAd,EAAAzE,OAAOwF,KAAKtC,IAAOuC,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAAlC,IAAMtB,EAAGgE,EAAA5C,MACZK,EAAOzB,GAAOgvB,GAAkB/qB,QAAQxC,EAAOzB,sGAEjD,OAAOyB,MAETuhB,oBAGEyQ,EAAAx0B,UAAAy2B,uBAAN,SAA6B3B,sFAE3B,GADInP,EAAS,IAAIC,EAAAA,WACbkP,EAAS,KACX,IAAkBzY,EAAAtY,EAAAzE,OAAOwF,KAAKgwB,IAAQjwB,EAAAwX,EAAAha,QAAAwC,EAAApC,KAAAoC,EAAAwX,EAAAha,OAA3BtB,EAAG8D,EAAA1C,MACR2yB,EAAQ/zB,KACV4kB,EAASA,EAAOpQ,IAAIxU,EAAK+zB,EAAQ/zB,2GAIZsG,IAArBytB,EAAQ4B,WACV/Q,EAASA,EAAOpQ,IAAI,WAAYuf,EAAQ4B,SAAW,IAAM,MAGvD5B,EAAQ6B,iBACVhR,EAASA,EAAOpQ,IAAI,iBAAkBuf,EAAQ6B,eAAe1pB,KAAK,OAItE,MAAA,CAAA,EAAOnN,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gCAAiC,CAAC8K,OAAMA,EAAEsP,QAAS,aAAala,KAC5H/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CACZ0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMya,GAAoBra,QAAQxC,EAAOI,WAE3CmhB,oBAGEyQ,EAAAx0B,UAAA42B,uBAAN,SAA6B9B,sFAE3B,GADInP,EAAS,IAAIC,EAAAA,WACbkP,EAAS,KACX,IAAkBzY,EAAAtY,EAAAzE,OAAOwF,KAAKgwB,IAAQjwB,EAAAwX,EAAAha,QAAAwC,EAAApC,KAAAoC,EAAAwX,EAAAha,OAA3BtB,EAAG8D,EAAA1C,MACR2yB,EAAQ/zB,KACV4kB,EAASA,EAAOpQ,IAAIxU,EAAK+zB,EAAQ/zB,2GAIZsG,IAArBytB,EAAQ4B,WACV/Q,EAASA,EAAOpQ,IAAI,WAAYuf,EAAQ4B,SAAW,IAAM,MAGvD5B,EAAQ6B,iBACVhR,EAASA,EAAOpQ,IAAI,iBAAkBuf,EAAQ6B,eAAe1pB,KAAK,OAItE,MAAA,CAAA,EAAOnN,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gCAAiC,CAAC8K,OAAMA,EAAEsP,QAAS,aAAala,KAC5H/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CACZ0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMktB,GAAoB9sB,QAAQxC,EAAOI,WAE3CmhB,oBAGEyQ,EAAAx0B,UAAA62B,mBAAN,SAAyB/B,sFAEvB,GADInP,EAAS,IAAIC,EAAAA,WACbkP,EAAS,KACX,IAAkBzY,EAAAtY,EAAAzE,OAAOwF,KAAKgwB,IAAQjwB,EAAAwX,EAAAha,QAAAwC,EAAApC,KAAAoC,EAAAwX,EAAAha,OAA3BtB,EAAG8D,EAAA1C,MACR2yB,EAAQ/zB,KACV4kB,EAASA,EAAOpQ,IAAIxU,EAAK+zB,EAAQ/zB,2GAIZsG,IAArBytB,EAAQ4B,WACV/Q,EAASA,EAAOpQ,IAAI,WAAYuf,EAAQ4B,SAAW,IAAM,MAGvD5B,EAAQ6B,iBACVhR,EAASA,EAAOpQ,IAAI,iBAAkBuf,EAAQ6B,eAAe1pB,KAAK,OAItE,MAAA,CAAA,EAAOnN,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,4BAA6B,CAAC8K,OAAMA,EAAEsP,QAAS,aAAala,KACxH/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CACZ0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMgmB,GAAgB5lB,QAAQxC,EAAOI,WAEvCmhB,oBAGEyQ,EAAAx0B,UAAA82B,qBAAN,SAA2BhC,sFAEzB,GADInP,EAAS,IAAIC,EAAAA,WACbkP,EAAS,KACX,IAAkBzY,EAAAtY,EAAAzE,OAAOwF,KAAKgwB,IAAQjwB,EAAAwX,EAAAha,QAAAwC,EAAApC,KAAAoC,EAAAwX,EAAAha,OAA3BtB,EAAG8D,EAAA1C,MACR2yB,EAAQ/zB,KACV4kB,EAASA,EAAOpQ,IAAIxU,EAAK+zB,EAAQ/zB,2GAIZsG,IAArBytB,EAAQ4B,WACV/Q,EAASA,EAAOpQ,IAAI,WAAYuf,EAAQ4B,SAAW,IAAM,MAGvD5B,EAAQ6B,iBACVhR,EAASA,EAAOpQ,IAAI,iBAAkBuf,EAAQ6B,eAAe1pB,KAAK,OAItE,MAAA,CAAA,EAAOnN,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,8BAA+B,CAAC8K,OAAMA,EAAEsP,QAAS,aAAala,KAC1H/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CACZ0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMypB,GAAkBrpB,QAAQxC,EAAOI,WAEzCmhB,oBAGEyQ,EAAAx0B,UAAA+2B,qBAAN,SAA2BjC,sFAEzB,GADInP,EAAS,IAAIC,EAAAA,WACbkP,EAAS,KACX,IAAkBzY,EAAAtY,EAAAzE,OAAOwF,KAAKgwB,IAAQjwB,EAAAwX,EAAAha,QAAAwC,EAAApC,KAAAoC,EAAAwX,EAAAha,OAA3BtB,EAAG8D,EAAA1C,MACR2yB,EAAQ/zB,KACV4kB,EAASA,EAAOpQ,IAAIxU,EAAK+zB,EAAQ/zB,2GAIZsG,IAArBytB,EAAQ4B,WACV/Q,EAASA,EAAOpQ,IAAI,WAAYuf,EAAQ4B,SAAW,IAAM,MAGvD5B,EAAQ6B,iBACVhR,EAASA,EAAOpQ,IAAI,iBAAkBuf,EAAQ6B,eAAe1pB,KAAK,OAItE,MAAA,CAAA,EAAOnN,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,8BAA+B,CAAC8K,OAAMA,EAAEsP,QAAS,aAAala,KAC1H/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CACZ0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMmrB,GAAkB/qB,QAAQxC,EAAOI,WAEzCmhB,oBAGEyQ,EAAAx0B,UAAAg3B,uBAAN,SAA6BlB,sEAC3B,MAAA,CAAA,EAAOh2B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,2BAA2Bib,EAAgB,WAAW/a,KAClH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAoc,GAAmB5Z,QAAQxC,OACzCuhB,oBAGEyQ,EAAAx0B,UAAAi3B,aAAN,SAAmBxC,sEACjB,MAAA,CAAA,EAAO30B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,gBAAgB1Z,KAC9G/T,EAAAA,KAAI,SAACpC,GAAc,OAACA,EAAK2vB,aAAe,IAAIvtB,KAAI,SAAAxB,GAAQ,OAAAyuB,GAAsBzuB,UAC9Eue,oBAGEyQ,EAAAx0B,UAAAk3B,6BAAN,SAAmCpB,sEACjC,MAAA,CAAA,EAAOh2B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,2BAA2Bib,EAAgB,iBAAiB/a,KACxH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAqR,GAAW7O,QAAQxC,OACjCuhB,oBAGEyQ,EAAAx0B,UAAAm3B,6BAAN,SAAmCC,sEACjC,MAAA,CAAA,EAAOt3B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gCAAgCuc,EAAoB,iBAAiBrc,KACjI/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAqR,GAAW7O,QAAQxC,OACjCuhB,6DAxUkBE,EAAAA,kBACG/H,0IAHdsY,EAAa5zB,EAAA,CADzBob,EAAAA,WAAW,CAACC,WAAY,UACZuY,eA8UGkB,GAAkBZ,EAAiCnP,GAmBjE,GAlBImP,EAAQuC,gBACV1R,EAASA,EAAOpQ,IAAI,iBAAkBuf,EAAQuC,cAAcpqB,KAAK,OAE/D6nB,EAAQwC,oBACV3R,EAASA,EAAOpQ,IAAI,sBAAuBuf,EAAQwC,kBAAkB5c,aAEnEoa,EAAQE,iBACVrP,EAASA,EAAOpQ,IAAI,kBAAmBuf,EAAQE,eAAeta,aAE5Doa,EAAQnD,eACVhM,EAASA,EAAOpQ,IAAI,gBAAiBuf,EAAQnD,aAAajX,aAExDoa,EAAQnd,SACVgO,EAASA,EAAOpQ,IAAI,UAAWuf,EAAQnd,OAAO+C,aAE5Coa,EAAQ5jB,SACVyU,EAASA,EAAOpQ,IAAI,SAAUN,EAAAA,aAAa6f,EAAQ5jB,UAEjD4jB,EAAQyC,SAAU,CACpB,IAAMA,EAAWzC,EAAQyC,SAASvwB,KAAI,SAAA1G,GAAK,OAAA2U,EAAAA,aAAa3U,MACxDqlB,EAASA,EAAOpQ,IAAI,WAAYgiB,EAAStqB,KAAK,MAWhD,OATI6nB,EAAQ0C,oBACV7R,EAASA,EAAOpQ,IAAI,sBAAuBuf,EAAQ0C,kBAAkB9c,aAEnEoa,EAAQkB,SACVrQ,EAASA,EAAOpQ,IAAI,UAAWuf,EAAQkB,OAAOtb,aAE5Coa,EAAQ2C,QACV9R,EAASA,EAAOpQ,IAAI,QAASuf,EAAQ2C,QAEhC9R,WAoBOyQ,GAA6BtB,EAAkCnP,eAC7E,IAAkB,IAAA9gB,EAAAd,EAAAzE,OAAOwF,KAAKgwB,IAAQ/vB,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAAnC,IAAMtB,EAAGgE,EAAA5C,MACR2yB,EAAQ/zB,KACV4kB,EAASA,EAAOpQ,IAAIxU,EAAK+zB,EAAQ/zB,uGAcrC,YAVyBsG,IAArBytB,EAAQ4B,WACV/Q,EAASA,EAAOpQ,IAAI,WAAYuf,EAAQ4B,SAAW,IAAM,MAGvD5B,EAAQ6B,iBACVhR,EAASA,EAAOpQ,IAAI,iBAAkBuf,EAAQ6B,eAAe1pB,KAAK,OAEhE6nB,EAAQ4C,SACV/R,EAASA,EAAOpQ,IAAI,SAAUuf,EAAQ4C,OAAOzqB,KAAK,OAE7C0Y,MCveGgS,kBCYZ,SAAAC,mDAYA,OAZmCh4B,EAAAg4B,EAAA/xB,GAQ1B+xB,EAAA5yB,QAAP,SAAeJ,KAGRgzB,EAAA1yB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVUgwB,EAAah3B,EAAA,CAZzB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJE,MAAO,QACP0rB,QAAS,UACTtgB,KAAM,OACN+nB,KAAM,QAERhxB,SAAU,CACRupB,QAASjoB,MAGAyvB,IAAsBjzB,IDZvBgzB,GAAAA,EAAAA,iBAAAA,EAAAA,eAAc,KACxB,OAAA,SACAA,GAAA,QAAA,UACAA,GAAA,MAAA,YEHUG,kBFoBZ,SAAAC,mDAgBA,OAhBkCn4B,EAAAm4B,EAAAlyB,GAUzBkyB,EAAA/yB,QAAP,SAAeJ,KAIRmzB,EAAA7yB,OAAP,SAAcN,KAJdhE,EAAA,CADC2G,qBAKD3G,EAAA,CADCgH,oBAbUmwB,EAAYn3B,EAAA,CAdxB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJE,MAAO,QACP0rB,QAAS,UACTtgB,KAAM,OACN+nB,KAAM,OACN/jB,SAAU,YAEZjN,SAAU,CACRupB,QAASjoB,EACT2L,SAAU3O,EAAUwyB,EAAAA,oBAGXI,IAAqBpzB,GGXlCqzB,GAAA,SAAAnyB,GAAA,SAAAmyB,mDASA,OAToCp4B,EAAAo4B,EAAAnyB,GAK3BmyB,EAAAhzB,QAAP,SAAeJ,KAGRozB,EAAA9yB,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAPUowB,EAAcp3B,EAAA,CAT1B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJiE,KAAM,QAER5B,SAAU,CACR4B,KAAMN,MAGG6vB,GAAb,CAAoCrzB,iBCWlC,SAAAszB,EACUtU,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAIJqU,EAAAj4B,UAAA00B,WAAN,SAAiBzkB,sEACf,MAAA,CAAA,EAAOnQ,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkB5K,EAAK,KAAK8K,KACxF/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAoN,GAAO5K,QAAQxC,OAC7BuhB,oBAGEkU,EAAAj4B,UAAAk4B,YAAN,SAAkBC,sEAChB,MAAA,CAAA,EAAOr4B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,4BAA4Bsd,EAAM,KAAKpd,KACnG/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAoN,GAAO5K,QAAQxC,OAC7BuhB,oBAGEkU,EAAAj4B,UAAAo4B,eAAN,SAAqB/S,EAAkByP,4EAOrC,OANInP,EAAS,IAAIC,EAAAA,WACbkP,GACEA,EAAQyC,WACV5R,EAASA,EAAOpQ,IAAI,WAAYuf,EAAQyC,SAASvwB,KAAI,SAAA3G,GAAK,OAAAqQ,EAAAA,mBAAmBrQ,MAAI4M,KAAK,OAG1F,CAAA,EAAOnN,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,gBAAiB,CAACM,OAAMA,IAAG5K,KACjH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAqR,GAAW7O,QAAQxC,OACjCuhB,oBAGEkU,EAAAj4B,UAAA40B,UAAN,SAAgBvP,EAAkBwP,EAAchsB,EAAcisB,4EAc5D,OAbInP,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAC5CnF,IAAI,OAAQ1M,EAAK6R,YAChBoa,IACEA,EAAQV,QACVzO,EAASA,EAAOpQ,IAAI,QAASge,EAAAA,qBAAqBuB,EAAQV,SAExDU,EAAQC,SACVpP,EAASA,EAAOpQ,IAAI,SAAUuf,EAAQC,SAEpCD,EAAQE,iBACVrP,EAASA,EAAOpQ,IAAI,kBAAmBuf,EAAQE,eAAeta,cAGlE,CAAA,EAAO5a,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,WAAY,CAACM,OAAMA,EAAEsP,QAAS,aAAala,KACjI/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CACZ0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMsvB,GAAgBlvB,QAAQxC,EAAOI,WAEvCmhB,oBAGEkU,EAAAj4B,UAAAq4B,qBAAN,SAA2BhT,sEACzB,MAAA,CAAA,EAAOvlB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,wBAAwBtK,KAC9G/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAwO,GAAiBhM,QAAQxC,OACvCuhB,oBAGEkU,EAAAj4B,UAAAy1B,SAAN,SAAepQ,EAAkBwP,EAAchsB,EAAcisB,4EAM3D,OALInP,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAC3C7R,IACF8c,EAASA,EAAOpQ,IAAI,OAAQ1M,EAAK6R,aAEnCiL,EAAS+P,GAAkBZ,EAASnP,GACpC,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,UAAW,CAACM,OAAMA,EAAEsP,QAAS,aAAala,KAChI/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CACZ0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMuS,GAAKnS,QAAQxC,EAAOI,WAE5BmhB,oBAGEkU,EAAAj4B,UAAAs4B,WAAN,SAAiBjT,EAAkBwP,EAAUhsB,EAAW0vB,EAAqBC,eAA1C,IAAA3D,IAAAA,EAAA,QAAU,IAAAhsB,IAAAA,EAAA,sEAM3C,OALM8c,GAAS,IAAIC,EAAAA,YAChBrQ,IAAI,OAAQsf,EAAKna,YACjBnF,IAAI,OAAQ1M,EAAK6R,YACjBnF,IAAI,aAAcgjB,EAAY,IAAM,IACpChjB,IAAI,UAAWijB,EAAUA,EAAQvrB,KAAK,KAAO,IAChD,CAAA,EAAOnN,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,uBAAwB,CAACM,OAAMA,EAAEsP,QAAS,aAC/Hla,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CAClB0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMoM,GAAiBhM,QAAQxC,EAAOI,WAEvCmhB,oBAGCkU,EAAAj4B,UAAAy4B,YAAN,SAAkBpT,sEAChB,MAAA,CAAA,EAAOvlB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,cAActK,KACpG/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAo1B,GAAc5yB,QAAQxC,OACpCuhB,oBAGEkU,EAAAj4B,UAAA04B,WAAN,SAAiBrT,EAAkBvR,4EAGjC,OAFM6R,EAAS7R,GAAW,IAAI8R,EAAAA,YAAarQ,IAAI,WAAYzB,GAAY,IAAI8R,EAAAA,WAE3E,CAAA,EAAO9lB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,YAAa,CAACM,OAAMA,IAAG5K,KAC7G/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAu1B,GAAa/yB,QAAQxC,OACnCuhB,oBAGEkU,EAAAj4B,UAAA24B,UAAN,SAAgBtT,sEACd,MAAA,CAAA,EAAOvlB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,YAAYtK,KAClG/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAqT,GAAY7Q,QAAQxC,OAClCuhB,oBAGEkU,EAAAj4B,UAAA44B,mBAAN,SAAyBvT,sEACvB,MAAA,CAAA,EAAOvlB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,sBACrFtB,oBAGCkU,EAAAj4B,UAAA64B,aAAN,SAAmBxT,sEACjB,MAAA,CAAA,EAAOvlB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,eAAetK,KACrG/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAw1B,GAAehzB,QAAQxC,OACrCuhB,6DAjHkBE,EAAAA,kBACG/H,0IAHd+b,EAASr3B,EAAA,CADrBob,EAAAA,WAAW,CAACC,WAAY,UACZgc,oBCbX,SAAAa,EACUnV,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAIJkV,EAAA94B,UAAA+4B,kBAAN,SAAwB1T,EAAkBwP,EAAchsB,EAAckJ,eAAA,IAAAA,IAAAA,EAAuBkf,EAAAA,eAAeZ,wEAI1G,OAHM1K,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAC9CnF,IAAI,OAAQ1M,EAAK6R,YACjBnF,IAAI,OAAQ0b,EAAAA,eAAelf,IAC9B,CAAA,EAAOjS,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,SAAU,CAACM,OAAMA,EAAEsP,QAAS,aACjHla,KAAK/T,EAAAA,KAAI,SAAAme,GAAY,MAAA,CACpB+P,OAAQ/P,EAASgQ,QAAQta,IAAI,gBAC7BjW,KAAM4uB,GAAWxuB,QAAQmgB,EAASviB,WAEnCmhB,oBAGC+U,EAAA94B,UAAAg5B,kBAAN,SAAwB3T,sEACtB,MAAA,CAAA,EAAOvlB,KAAK6jB,WAAW9I,IAAc/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,uBAC5FtK,KAAK/T,EAAAA,KAAI,SAAAme,GAAY,OAAAA,GAAYA,EAAS1kB,OAAS,EAAI+yB,GAAWxuB,QAAQmgB,EAAS,IAAM,SACzFpB,oBAGC+U,EAAA94B,UAAAi5B,sBAAN,SAA4B5T,sEAC1B,MAAA,CAAA,EAAOvlB,KAAK6jB,WAAW9I,IAAc/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,uBAC5FtK,KAAK/T,EAAAA,KAAI,SAAAme,GAAY,OAAAqO,GAAWxuB,QAAQmgB,OACxCpB,oBAGC+U,EAAA94B,UAAAk5B,YAAN,SAAkBC,sEAChB,MAAA,CAAA,EAAOr5B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,uBAAuBse,EAAM,KACxFpe,KAAK/T,EAAAA,KAAI,SAAAme,GAAY,OAAAqO,GAAWxuB,QAAQmgB,OACxCpB,oBAGC+U,EAAA94B,UAAAo5B,sBAAN,SAA4B3E,sEAC1B,MAAA,CAAA,EAAO30B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,SAAU,CAACQ,QAAS,aACjHla,KAAK/T,EAAAA,KAAI,SAAAme,GAAY,MAAA,CACpB+P,OAAQ/P,EAASgQ,QAAQta,IAAI,gBAC7BjW,KAAM4uB,GAAWxuB,QAAQmgB,EAASviB,WAEnCmhB,6DAzCiBE,EAAAA,kBACG/H,0IAHd4c,EAAal4B,EAAA,CADzBob,EAAAA,WAAW,CAACC,WAAY,UACZ6c,oBCaX,SAAAO,EACU1V,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAIJyV,EAAAr5B,UAAAs5B,SAAN,SAAeC,sEACb,MAAA,CAAA,EAAOz5B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,iBAAiB0e,EAAO,KAAKxe,KACzF/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAwT,GAAUhR,QAAQxC,OAChCuhB,oBAGEsV,EAAAr5B,UAAAw5B,uBAAN,SAA6B/E,EAAsBI,EAAchsB,EAAcisB,4EAI7E,OAHInP,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAAYnF,IAAI,OAAQ1M,EAAK6R,YAC5EiL,EAAS8T,GAAsB3E,EAASnP,GAExC,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,eAAgB,CAACQ,QAAS,WAAYtP,OAAMA,IAAG5K,KAC7I/T,EAAAA,KAAI,SAAAme,GACF,MAAO,CACL+P,OAAQ/P,EAASgQ,QAAQta,IAAI,gBAC7BjW,KAAMuS,GAAKnS,QAAQmgB,EAASviB,WAGhCmhB,oBAGEsV,EAAAr5B,UAAA05B,mBAAN,SAAyBrU,EAAkBwP,EAAchsB,EAAcisB,4EAIrE,OAHInP,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAAYnF,IAAI,OAAQ1M,EAAK6R,YAC5EiL,EAAS8T,GAAsB3E,EAASnP,GAExC,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,eAAgB,CAAC4P,QAAS,WAAYtP,OAAMA,IAAG5K,KACrI/T,EAAAA,KAAI,SAAAme,GACF,MAAO,CACL+P,OAAQ/P,EAASgQ,QAAQta,IAAI,gBAC7BjW,KAAMuS,GAAKnS,QAAQmgB,EAASviB,WAGhCmhB,oBAGEsV,EAAAr5B,UAAA25B,eAAN,SAAqBtU,EAAkBwP,EAAchsB,EAAcisB,eAAA,IAAAA,IAAAA,EAAA,sEAWjE,OAVInP,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAAYnF,IAAI,OAAQ1M,EAAK6R,YACxEoa,EAAQ8E,YACVjU,EAASA,EAAOpQ,IAAI,aAAcuf,EAAQ8E,YAExC9E,EAAQ+C,OACVlS,EAASA,EAAOpQ,IAAI,OAAQuf,EAAQ+C,OAElC/C,EAAQnd,SACVgO,EAASA,EAAOpQ,IAAI,UAAWuf,EAAQnd,OAAO+C,aAEhD,CAAA,EAAO5a,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,UAAW,CAACM,OAAMA,EAAEsP,QAAS,aAClHla,KAAK/T,EAAAA,KAAI,SAAAme,GAAY,MAAA,CACpB+P,OAAQ/P,EAASgQ,QAAQta,IAAI,gBAC7BjW,KAAMoR,GAAUhR,QAAQmgB,EAASviB,WAC9BmhB,oBAGHsV,EAAAr5B,UAAA65B,iBAAN,SAAuB/V,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsBiJ,EAAM,KAAK/I,KAC7F/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2U,GAAKnS,QAAQxC,OAC3BuhB,oBAGEsV,EAAAr5B,UAAA85B,aAAN,SAAmBhW,sEACjB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,2BAA2BiJ,EAAM,WAAW/I,KACxG/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAwT,GAAUhR,QAAQxC,OAChCuhB,oBAGEsV,EAAAr5B,UAAA+5B,UAAN,SAAgBC,sEACd,MAAA,CAAA,EAAOl6B,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,qBAAsBmf,EAAU,CAAEvV,aAAc,SACxFV,oBAGCsV,EAAAr5B,UAAAi6B,cAAN,SAAoBV,sEAClB,MAAA,CAAA,EAAOz5B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,iBAAiB0e,EAAO,aAAa,CAAC9U,aAAc,SAC/GV,6DA7EiBE,EAAAA,kBACG/H,0IAHdmd,EAAQz4B,EAAA,CADpBob,EAAAA,WAAW,CAACC,WAAY,UACZod,eAmFGI,GAAsB3E,EAA2BnP,GAyB/D,OAxBImP,IACFnP,EAAS+P,GAAkBZ,EAASnP,GAChCmP,EAAQE,iBACVrP,EAASA,EAAOpQ,IAAI,kBAAmBuf,EAAQE,eAAeta,aAE5Doa,EAAQnd,SACVgO,EAASA,EAAOpQ,IAAI,UAAWuf,EAAQnd,OAAO+C,aAE5Coa,EAAQwC,oBACV3R,EAASA,EAAOpQ,IAAI,sBAAuBuf,EAAQwC,kBAAkB5c,aAEnEoa,EAAQS,YACV5P,EAASA,EAAOpQ,IAAI,aAAcuf,EAAQS,UAAU7a,aAElDoa,EAAQnD,eACVhM,EAASA,EAAOpQ,IAAI,gBAAiBuf,EAAQnD,aAAajX,aAExDoa,EAAQ5jB,SACVyU,EAASA,EAAOpQ,IAAI,SAAUN,EAAAA,aAAa6f,EAAQ5jB,UAEjD4jB,EAAQoF,aACVvU,EAASA,EAAOpQ,IAAI,cAAeuf,EAAQoF,WAAWxf,cAGnDiL,GJ7HGmS,GAAAA,EAAAA,eAAAA,EAAAA,aAAY,KACtBA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,SAAA,GAAA,eKFUqC,kBLWZ,SAAAC,mDASA,OATiCx6B,EAAAw6B,EAAAv0B,GAKxBu0B,EAAAp1B,QAAP,SAAeJ,KAGRw1B,EAAAl1B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAPUwyB,EAAWx5B,EAAA,CANvB8F,EAAc,CACbE,cAAe,CACbyzB,KAAM,OACNhyB,KAAM,WAGG+xB,IAAoBz1B,kBAsBjC,SAAA21B,mDAWA,OAXgC16B,EAAA06B,EAAAz0B,GAOvBy0B,EAAAt1B,QAAP,SAAeJ,KAGR01B,EAAAp1B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBATU0yB,EAAU15B,EAAA,CAXtB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ+1B,YAAa,aACb1tB,KAAM,OACN2tB,QAAS,UAEX3zB,SAAU,CACRgG,KAAMD,OAGG0tB,IAAmB31B,kBAoChC,SAAA81B,IAAA,IAAArjB,EAAA,OAAAvR,GAAAA,EAAAlF,MAAAb,KAAAU,YAAAV,YAaEsX,EAAAsjB,oBAAiE,KAkDnE,OA/D0B96B,EAAA66B,EAAA50B,GAexBvG,OAAAgC,eAAIm5B,EAAAz6B,UAAA,WAAQ,KAMZ,WACE,OAAOF,KAAK66B,eAPd,SAAax4B,GACXrC,KAAK66B,UAAYx4B,GAAS,GACtBrC,KAAK86B,UACP96B,KAAK+6B,8DAOTv7B,OAAAgC,eAAIm5B,EAAAz6B,UAAA,UAAO,KAMX,WACE,OAAOF,KAAK86B,cAPd,SAAYz4B,GACVrC,KAAK86B,SAAWz4B,GAAS,GACrBrC,KAAK66B,WACP76B,KAAK+6B,8DAOTJ,EAAAz6B,UAAA66B,2BAAA,WAAA,IAAAzjB,EAAAtX,KACE,GAAKA,KAAK86B,SAASn6B,OAAnB,CAIA,IAAMq6B,EAAWh7B,KAAK66B,UAAU3zB,KAAI,SAAAtD,GAAK,OAAAA,EAAE22B,QACrCU,EAAmBj7B,KAAK86B,SAASI,QAAO,SAACC,EAAKz1B,GAClD,OAAIs1B,EAASzY,QAAQ7c,EAAK01B,YAAc,IAGnCD,EAAIz1B,EAAK01B,cACZD,EAAIz1B,EAAK01B,YAAc,GAEzBD,EAAIz1B,EAAK01B,eALAD,IAOR,IACHn7B,KAAK46B,oBAAsB56B,KAAK66B,UAAU3zB,KAAI,SAAAxB,GAAQ,MAAA,CACpD21B,QAAS31B,EACT41B,QAASL,EAAiBv1B,EAAK60B,MAAQ/sB,KAAK6b,MAAM,IAAM4R,EAAiBv1B,EAAK60B,MAAQjjB,EAAKwjB,SAASn6B,QAAU,MAE7Go3B,MAAK,SAACwD,EAAGh8B,GAAM,OAAAg8B,EAAED,QAAU/7B,EAAE+7B,SAAW,EAAI,OAI1CX,EAAAz1B,QAAP,SAAeJ,KAGR61B,EAAAv1B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBA7DU6yB,EAAI75B,EAAA,CAvBhB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJud,OAAQ,SACR7Q,OAAQ,SACRwC,QAAS,SACTrL,KAAM,OACN6H,YAAa,cACb4qB,SAAU,WACVxK,OAAQ,SACRgL,QAAS,UACTC,gBAAiB,iBACjBC,UAAW,YACXzyB,WAAY,aAEdlC,SAAU,CACRqK,OAAQ/L,EAAU2yB,EAAAA,cAClBgD,SAAUV,GACV9J,OAAQ1jB,GACR0uB,QAAShB,GACTtxB,UAAWvC,MAGFg0B,IAAa91B,kBM9C1B,SAAA82B,mDAoBA,OApBgC77B,EAAA67B,EAAA51B,GAgBvB41B,EAAAz2B,QAAP,SAAeJ,KAGR62B,EAAAv2B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAlBU6zB,EAAU76B,EAAA,CAvBtB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6G,QAAS,SACTwB,KAAM,OACNoC,KAAM,OACNyE,QAAS,SACTgoB,YAAa,aACbC,YAAa,aACbvsB,YAAa,aACbE,YAAa,aACbD,gBAAiB,gBACjBE,UAAW,WACXxG,WAAY,YACZ4Y,WAAY,aAEd9a,SAAU,CACRgG,KAAMD,GACNqC,KAAMH,GACN9F,UAAWvC,EACXm1B,SAAUn1B,MAGDg1B,IAAmB92B,IDvBpBw1B,GAAAA,EAAAA,mBAAAA,EAAAA,iBAAgB,KAC1BA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,SAAA,GAAA,eENU0B,qBFuBZ,SAAAC,mDAYA,OAZgCl8B,EAAAk8B,EAAAj2B,GAQvBi2B,EAAA92B,QAAP,SAAeJ,KAGRk3B,EAAA52B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVUk0B,EAAUl7B,EAAA,CAdtB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJsa,UAAW,WACXtI,QAAS,SACTF,KAAM,OACNpF,OAAQ,UAEVrK,SAAU,CACRyP,KAAMa,GACNgI,SAAUtB,GACV3M,OAAQ/L,EAAUg1B,EAAAA,sBAGT2B,IAAmBn3B,IEvBpBk3B,GAAAA,EAAAA,iBAAAA,EAAAA,eAAc,KACxBA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,MAAA,GAAA,YCAUE,GCACC,KAAyB3f,GAAA,IACnCwf,EAAAA,eAAeI,UAAW,aAC3B5f,GAACwf,EAAAA,eAAeK,OAAQ,4BCkB1B,SAAAC,mDA0BA,OA1B+Bv8B,EAAAu8B,EAAAt2B,GAU7BvG,OAAAgC,eAAI66B,EAAAn8B,UAAA,OAAI,KAAR,WACE,OAAIF,KAAKs8B,YAAcP,EAAAA,eAAeK,MAC7Bp8B,KAAKu8B,gBAEPL,GAA0Bl8B,KAAKs8B,4CAGxC98B,OAAAgC,eAAI66B,EAAAn8B,UAAA,WAAQ,KAAZ,WACE,OAAOF,KAAKoY,SAAS7K,WAAY,IAAItH,MAAOsH,2CAIvC8uB,EAAAn3B,QAAP,SAAeJ,KAGRu3B,EAAAj3B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAxBUu0B,EAASv7B,EAAA,CAjBrB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJkP,QAAS,SACTzE,KAAM,OACNqtB,WAAY,YACZC,kBAAmB,kBACnBrsB,YAAa,cACbgI,SAAU,WACVpE,SAAU,YAEZjN,SAAU,CACRu1B,UAAWj3B,EAAU02B,EAAAA,gBACrB5sB,KAAMH,GACNoJ,SAAUzR,MAGD01B,IAAkBx3B,IFpBnBo3B,GAAAA,EAAAA,0BAAAA,EAAAA,wBAAuB,KACjCA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,SAAA,GAAA,eGUUS,GA+DAC,iBH3DZ,SAAAC,KAWA,OAJSA,EAAA13B,QAAP,SAAeJ,KAGR83B,EAAAx3B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBATU80B,EAAe97B,EAAA,CAX3B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJm4B,cAAe,cACfC,aAAc,aACd1rB,OAAQ,UAEVrK,SAAU,CACRqK,OAAQ/L,EAAU42B,EAAAA,6BAGTW,qBIHb,SAAAG,mDAYA,OAZ8Cj9B,EAAAi9B,EAAAh3B,GAQrCg3B,EAAA73B,QAAP,SAAeJ,KAGRi4B,EAAA33B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVUi1B,EAAwBj8B,EAAA,CAZpC8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJs4B,0BAA2B,yBAC3BjlB,mBAAoB,mBACpBiH,UAAW,WACXie,SAAU,YAEZl2B,SAAU,CACRsY,SAAUtB,OAGDgf,IAAiCl4B,kBCO9C,SAAAq4B,mDAmBA,OAnBsCp9B,EAAAo9B,EAAAn3B,GAUpCvG,OAAAgC,eAAI07B,EAAAh9B,UAAA,SAAM,KAAV,WACE,OAA4B,OAApBF,KAAKm9B,YAAmD,OAA5Bn9B,KAAKo9B,sBAAoD,IAApBp9B,KAAKm9B,aAAoD,IAA5Bn9B,KAAKo9B,oDAItGF,EAAAh4B,QAAP,SAAeJ,KAGRo4B,EAAA93B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAjBUo1B,EAAgBp8B,EAAA,CAjB5B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJyK,KAAM,OACNsH,WAAY,aACZolB,YAAa,aACbwB,oBAAqB,qBACrBC,mBAAoB,mBACpBC,aAAc,cACdhgB,oBAAqB,sBAEvBxW,SAAU,CACRoI,KAAMH,GACNyH,WAAY1C,GACZypB,YAAaT,OAGJG,IAAyBr4B,IFR1B63B,GAAAA,EAAAA,mBAAAA,EAAAA,iBAAgB,KAC1BA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,kBAAA,GAAA,oBACAA,GAAAA,GAAA,2BAAA,GAAA,6BACAA,GAAAA,GAAA,2BAAA,GAAA,6BACAA,GAAAA,GAAA,2BAAA,GAAA,6BACAA,GAAAA,GAAA,2BAAA,GAAA,6BACAA,GAAAA,GAAA,qBAAA,GAAA,uBACAA,GAAAA,GAAA,qBAAA,GAAA,uBACAA,GAAAA,GAAA,gCAAA,IAAA,kCACAA,GAAAA,GAAA,gCAAA,IAAA,kCACAA,GAAAA,GAAA,yBAAA,IAAA,2BACAA,GAAAA,GAAA,2BAAA,IAAA,6BACAA,GAAAA,GAAA,2BAAA,IAAA,6BACAA,GAAAA,GAAA,eAAA,IAAA,iBAEAA,GAAAA,GAAA,aAAA,IAAA,eACAA,GAAAA,GAAA,aAAA,IAAA,eACAA,GAAAA,GAAA,qBAAA,IAAA,uBACAA,GAAAA,GAAA,qBAAA,IAAA,uBACAA,GAAAA,GAAA,YAAA,IAAA,cACAA,GAAAA,GAAA,SAAA,IAAA,WACAA,GAAAA,GAAA,YAAA,IAAA,cACAA,GAAAA,GAAA,iBAAA,IAAA,mBACAA,GAAAA,GAAA,kBAAA,IAAA,oBAEAA,GAAAA,GAAA,aAAA,IAAA,eACAA,GAAAA,GAAA,YAAA,IAAA,cAEAA,GAAAA,GAAA,mBAAA,IAAA,qBACAA,GAAAA,GAAA,oBAAA,IAAA,sBACAA,GAAAA,GAAA,oBAAA,IAAA,sBACAA,GAAAA,GAAA,kBAAA,IAAA,oBAEAA,GAAAA,GAAA,mBAAA,IAAA,qBACAA,GAAAA,GAAA,kBAAA,IAAA,oBACAA,GAAAA,GAAA,yBAAA,IAAA,2BACAA,GAAAA,GAAA,yBAAA,IAAA,2BACAA,GAAAA,GAAA,wBAAA,IAAA,0BACAA,GAAAA,GAAA,kCAAA,IAAA,oCACAA,GAAAA,GAAA,kCAAA,IAAA,oCACAA,GAAAA,GAAA,sBAAA,IAAA,wBACAA,GAAAA,GAAA,kCAAA,IAAA,oCACAA,GAAAA,GAAA,kCAAA,IAAA,oCACAA,GAAAA,GAAA,+BAAA,IAAA,iCACAA,GAAAA,GAAA,wBAAA,IAAA,0BACAA,GAAAA,GAAA,sCAAA,IAAA,wCACAA,GAAAA,GAAA,sCAAA,IAAA,wCACAA,GAAAA,GAAA,kDAAA,IAAA,oDACAA,GAAAA,GAAA,kDAAA,IAAA,oDACAA,GAAAA,GAAA,wBAAA,IAAA,0BAEAA,GAAAA,GAAA,8BAAA,IAAA,gCACAA,GAAAA,GAAA,+BAAA,IAAA,iCACAA,GAAAA,GAAA,8BAAA,IAAA,gCACAA,GAAAA,GAAA,8BAAA,IAAA,gCACAA,GAAAA,GAAA,4BAAA,IAAA,8BACAA,GAAAA,GAAA,4BAAA,IAAA,8BACAA,GAAAA,GAAA,gCAAA,IAAA,kCACAA,GAAAA,GAAA,0BAAA,IAAA,6BAGUC,GAAAA,EAAAA,0BAAAA,EAAAA,wBAAuB,KACjCA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,IAAA,GAAA,UG7EUc,kBHwHZ,SAAAC,mDA8BA,OA9BkC59B,EAAA49B,EAAA33B,GAqBhCvG,OAAAgC,eAAIk8B,EAAAx9B,UAAA,YAAS,KAAb,WACE,OAAO,mCAIFw9B,EAAAx4B,QAAP,SAAe7C,KAGRq7B,EAAAt4B,OAAP,SAAc/C,KAHdvB,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBA5BU41B,EAAY58B,EAAA,CAxCxB8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ83B,WAAY,QACZ13B,KAAM,OACN64B,UAAW,YACXxuB,KAAM,OACNyuB,YAAa,aACb5e,UAAW,WACX6e,KAAM,OACNrnB,KAAM,OACNsnB,YAAa,aACbC,WAAY,YACZC,kBAAmB,kBACnBvnB,WAAY,aACZwnB,kBAAmB,mBACnBlf,gBAAiB,iBACjBmf,OAAQ,SACRC,UAAW,YACXC,QAAS,UACTn1B,WAAY,aAEdlC,SAAU,CACRutB,MAAOjvB,EAAUq3B,EAAAA,kBACjBiB,UAAW7wB,GACXqC,KAAMH,GACNqvB,WAAY1C,GACZtc,SAAUtB,GACV8f,KAAMlD,GACNnkB,KAAMa,GACNinB,WAAYtC,GACZuC,UAAWlC,GACXmC,gBAAiB5B,GACjBnmB,WAAY1C,GACZ0qB,iBAAkBvB,GAClB9d,eAAgBzC,GAChByhB,QAAS/4B,EAAUs3B,EAAAA,yBACnBzzB,UAAWvC,MAGF+2B,IAAqB74B,IGxHtB44B,GAAAA,EAAAA,yBAAAA,EAAAA,uBAAsB,KAChCA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,KAAA,GAAA,WCHUiB,kBDmBZ,SAAAC,mDAYA,OAZ0C7+B,EAAA6+B,EAAA54B,GAQjC44B,EAAAz5B,QAAP,SAAeJ,KAGR65B,EAAAv5B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVU62B,EAAoB79B,EAAA,CAbhC8F,EAAc,CACbE,cAAe,CACbyE,QAAS,SACTqzB,MAAO,QACPC,MAAO,QACPC,QAAS,UACTjxB,MAAO,SAET9G,SAAU,CACR83B,MAAOx5B,EAAUo4B,EAAAA,wBACjBqB,QAASz5B,EAAUo4B,EAAAA,4BAGVkB,IAA6B95B,iBEFxC,SAAAk6B,EACUlb,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAGJib,EAAA7+B,UAAA8+B,SAAN,8EACE,MAAA,CAAA,EAAOh/B,KAAK6jB,WACT9I,IAAI,GAAG/a,KAAK8jB,cAAc/I,IAAI,UAAY/a,KAAKi/B,OAAM,wBACrDhkB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAACA,MAClBmf,oBAGC8a,EAAA7+B,UAAAg/B,QAAN,SAAcnK,EAAchsB,EAAcisB,eAAA,IAAAA,IAAAA,EAAA,gFACpCnP,GAAS,IAAIC,EAAAA,YACdrQ,IAAI,OAAQsf,EAAKna,YACjBnF,IAAI,OAAQ1M,EAAK6R,gBACpB,IAAkB2B,EAAAtY,EAAAzE,OAAOwF,KAAKgwB,IAAQjwB,EAAAwX,EAAAha,QAAAwC,EAAApC,KAAAoC,EAAAwX,EAAAha,OAA3BtB,EAAG8D,EAAA1C,MACZwjB,EAASA,EAAOpQ,IAAIxU,EAAK+zB,EAAQ/zB,qGAGnC,MAAA,CAAA,EAAOjB,KAAK6jB,WACT9I,IAAI,GAAG/a,KAAK8jB,cAAc/I,IAAI,UAAY/a,KAAKi/B,OAAM,iBAAkB,CAACpZ,OAAMA,EAAEsP,QAAS,aACzFla,KACC/T,EAAAA,KAAI,SAAAme,GACF,IAAMvgB,EAAuB44B,GAAax4B,QAAQmgB,EAASviB,MAC3D,MAAO,CACLsyB,OAAQ/P,EAASgQ,QAAQta,IAAI,gBAC7BjW,KAAIA,OAGRmf,oBAGA8a,EAAA7+B,UAAAi/B,WAAN,SAAiBC,EAAwBlB,sEACvC,MAAA,CAAA,EAAOl+B,KAAK6jB,WACTuB,KAAK,GAAGplB,KAAK8jB,cAAc/I,IAAI,UAAY/a,KAAKi/B,OAAM,iBAAiBG,EAAc,WAAY,CAAClB,OAAMA,IACxGjjB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA44B,GAAax4B,QAAQJ,OACtCmf,oBAGC8a,EAAA7+B,UAAAm/B,cAAN,8EACE,MAAA,CAAA,EAAOr/B,KAAK6jB,WACTuB,KAAK,GAAGplB,KAAK8jB,cAAc/I,IAAI,UAAY/a,KAAKi/B,OAAM,wBAAyB,IAC/EhkB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA44B,GAAax4B,QAAQJ,OACtCmf,oBAGC8a,EAAA7+B,UAAAo/B,wBAAN,8EACE,MAAA,CAAA,EAAOt/B,KAAK6jB,WAAW9I,IAAI,GAAG/a,KAAK8jB,cAAc/I,IAAI,UAAY/a,KAAKi/B,OAAM,2BACzEhkB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA65B,GAAqBz5B,QAAQJ,OAC9Cmf,oBAGC8a,EAAA7+B,UAAAq/B,2BAAN,SAAiCz6B,sEAC/B,MAAA,CAAA,EAAO9E,KAAK6jB,WAAWuB,KACrB,GAAGplB,KAAK8jB,cAAc/I,IAAI,UAAY/a,KAAKi/B,OAAM,0BACjDN,GAAqBv5B,OAAON,IAE3BmW,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAi8B,GAAqBz5B,QAAQxC,OAChDuhB,6DA1DiBE,EAAAA,kBACG/H,0IALd2iB,EAAmBj+B,EAAA,CAD/Bob,EAAAA,WAAW,CAACC,WAAY,UACZ4iB,qBCZb,SAAAS,IAAA,IAAAloB,EAAA,OAAAvR,GAAAA,EAAAlF,MAAAb,KAAAU,YAAAV,YACYsX,EAAA2nB,OAAS,mBADgBn/B,EAAA0/B,EAAAz5B,uIAAxBy5B,EAAe1+B,EAAA,CAD3Bob,EAAAA,WAAW,CAACC,WAAY,UACZqjB,IAAwBT,mBCArC,SAAAU,IAAA,IAAAnoB,EAAA,OAAAvR,GAAAA,EAAAlF,MAAAb,KAAAU,YAAAV,YACYsX,EAAA2nB,OAAS,uBADmBn/B,EAAA2/B,EAAA15B,uIAA3B05B,EAAkB3+B,EAAA,CAD9Bob,EAAAA,WAAW,CAACC,WAAY,UACZsjB,IAA2BV,kBCKtC,SAAAW,EACU7b,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAGJ4b,EAAAx/B,UAAAy/B,UAAN,8EACE,MAAA,CAAA,EAAO3/B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,6BACvCE,KACC/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA4G,EAAKxG,QAAQJ,OACzBmf,oBAGAyb,EAAAx/B,UAAA0/B,UAAN,8EACE,MAAA,CAAA,EAAO5/B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBACvCE,KACC/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAuE,EAAMnE,QAAQJ,OAC1Bmf,6DAjBgBE,EAAAA,kBACG/H,0IAHdsjB,EAAY5+B,EAAA,CADxBob,EAAAA,WAAW,CAACC,WAAY,UACZujB,qBCGb,SAAAG,mDAYA,OAZwC//B,EAAA+/B,EAAA95B,GAQ/B85B,EAAA36B,QAAP,SAAeJ,KAGR+6B,EAAAz6B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVU+3B,EAAkB/+B,EAAA,CAT9B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJkP,QAAS,SACT/F,MAAO,QACPF,WAAY,YACZD,UAAW,eAGFmyB,IAA2Bh7B,ILT5B65B,GAAAA,EAAAA,sBAAAA,EAAAA,oBAAmB,KAC7BA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,SAAA,GAAA,eMHUoB,kBNsBZ,SAAAC,mDAYA,OAZoCjgC,EAAAigC,EAAAh6B,GAQ3Bg6B,EAAA76B,QAAP,SAAeJ,KAGRi7B,EAAA36B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVUi4B,EAAcj/B,EAAA,CAhB1B8F,EAAc,CACbE,cAAe,CACbk5B,QAAS,UACT1iB,MAAO,QACP2iB,UAAW,YACXC,MAAO,QACPC,OAAQ,UAEVp5B,SAAU,CACRi5B,QAAS36B,EAAUq5B,EAAAA,qBACnBphB,MAAOjY,EAAUq5B,EAAAA,qBACjBuB,UAAW56B,EAAUq5B,EAAAA,qBACrBwB,MAAO76B,EAAUq5B,EAAAA,qBACjByB,OAAQ96B,EAAUq5B,EAAAA,yBAGTqB,IAAuBl7B,kBOOpC,SAAAu7B,mDA4BA,OA5BgCtgC,EAAAsgC,EAAAr6B,GAwBvBq6B,EAAAl7B,QAAP,SAAeJ,KAGRs7B,EAAAh7B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBA1BUs4B,EAAUt/B,EAAA,CA5BtB8F,EAAc,CACbE,cAAe,CACbu5B,SAAU,UACVC,eAAgB,eAChBC,sBAAuB,sBACvBC,iBAAkB,iBAClBC,WAAY,YACZC,mBAAoB,mBACpBC,iBAAkB,iBAClBC,iBAAkB,iBAClBC,eAAgB,eAChBC,gBAAiB,gBACjBC,iBAAkB,iBAClBC,eAAgB,eAChBC,mBAAoB,mBACpBC,kBAAmB,kBACnBC,eAAgB,eAChBC,iBAAkB,iBAClBC,gBAAiB,gBACjBC,kBAAmB,kBACnBC,qBAAsB,qBACtBC,uBAAwB,uBACxBvjB,KAAM,QAERlX,SAAU,CACRkX,KAAM5Y,EAAUwV,EAAAA,kBAGPulB,IAAmBv7B,iBCR9B,SAAA48B,EACU5d,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAGJ2d,EAAAvhC,UAAA+0B,OAAN,SAAa0C,EAAe+J,4EAK1B,OAJI7b,GAAS,IAAKC,EAAAA,YAAcrQ,IAAI,SAAUkiB,GAC1C+J,IACF7b,EAASA,EAAOpQ,IAAI,QAASisB,EAAQ9mB,aAEvC,CAAA,EAAO5a,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAiB,CAAC8K,OAAMA,IAC/D5K,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAkK,GAAK9J,QAAQJ,OAC9Bmf,oBAGCwd,EAAAvhC,UAAAC,OAAN,SAAagP,sEACX,MAAA,CAAA,EAAOnP,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAiB/L,GAAK5J,OAAO+J,IACrE8L,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAkK,GAAK9J,QAAQJ,OAC9Bmf,oBAGCwd,EAAAvhC,UAAAmkB,QAAN,SAAcxM,sEACZ,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,KAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAkK,GAAK9J,QAAQJ,OAC9Bmf,oBAGCwd,EAAAvhC,UAAAyhC,cAAN,SAAoB9pB,sEAClB,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,YAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAs7B,GAAWl7B,QAAQJ,OACpCmf,oBAGCwd,EAAAvhC,UAAA0hC,OAAN,SAAa/pB,EAAgBgqB,sEAC3B,MAAA,CAAA,EAAO7hC,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,IAAK7I,GAAK5J,OAAOy8B,IAChF5mB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAkK,GAAK9J,QAAQJ,OAC9Bmf,oBAGCwd,EAAAvhC,UAAA6hC,OAAN,SAAa5yB,sEACX,MAAA,CAAA,EAAOnP,KAAK6jB,WACTke,OAAU/hC,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgB5L,EAAKzK,GAAE,KACjEuf,oBAGCwd,EAAAvhC,UAAA8hC,cAAN,SAAoBnqB,sEAClB,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,gBAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAi7B,GAAe76B,QAAQJ,OACxCmf,oBAGCwd,EAAAvhC,UAAA+hC,iBAAN,SAAuBpqB,EAAgBqqB,sEACrC,MAAA,CAAA,EAAOliC,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,eAAgBkoB,GAAe36B,OAAO88B,IACrGjnB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAi7B,GAAe76B,QAAQJ,OACxCmf,oBAGCwd,EAAAvhC,UAAA6jB,SAAN,SAAelM,EAAgB8c,4EAK7B,OAJI9O,EAAS,IAAIC,EAAAA,WACb6O,IACF9O,EAASA,EAAOpQ,IAAI,gBAAiBkf,EAAa/Z,aAEpD,CAAA,EAAO5a,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,UAAW,CAACgO,OAAMA,IAC/E5K,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAiZ,GAAS7Y,QAAQJ,OAClCmf,oBAGCwd,EAAAvhC,UAAAiiC,eAAN,SAAqBtqB,EAAgBuqB,EAAoBnkB,sEACvD,MAAA,CAAA,EAAOje,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,UAAUuqB,EAAU,SAAU,CAACnkB,KAAMpD,EAAAA,aAAaoD,KACjHhD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAiZ,GAAS7Y,QAAQJ,OAClCmf,oBAGCwd,EAAAvhC,UAAAmiC,iBAAN,SAAuBxqB,EAAgBuqB,EAAoBE,sEACzD,MAAA,CAAA,EAAOtiC,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,UAAUuqB,EAAU,WAAY,CAAClkB,OAAQokB,EAAW1nB,aACnHK,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAiZ,GAAS7Y,QAAQJ,OAClCmf,oBAGCwd,EAAAvhC,UAAAqiC,WAAN,SAAiBljB,sEACf,MAAA,CAAA,EAAOrf,KAAK6jB,WACTke,OAAU/hC,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBsE,EAASxH,OAAM,UAAUwH,EAAS3a,GAAE,KAC9Fuf,oBAGCwd,EAAAvhC,UAAAsiC,YAAN,SAAkB3qB,EAAgB9K,sEAChC,MAAA,CAAA,EAAO/M,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,UAAW,CAACnT,GAAIqI,EAAKrI,KACnFuW,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAkK,GAAK9J,QAAQJ,OAC9Bmf,oBAGCwd,EAAAvhC,UAAAuiC,WAAN,SAAiB5qB,sEACf,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,aAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA62B,GAAWz2B,QAAQJ,OACpCmf,oBAGCwd,EAAAvhC,UAAAwiC,WAAN,SAAiB7qB,EAAgB9K,sEAC/B,MAAA,CAAA,EAAO/M,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,YAAa,CAAC9K,KAAIA,IAChFkO,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA62B,GAAWz2B,QAAQJ,OACpCmf,oBAGCwd,EAAAvhC,UAAAyiC,aAAN,SAAmBC,sEACjB,MAAA,CAAA,EAAO5iC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,uBAAuB6nB,EAAOl+B,GAAE,WAAY,IACpFuW,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA62B,GAAWz2B,QAAQJ,OACpCmf,oBAGCwd,EAAAvhC,UAAA2iC,cAAN,SAAoBD,sEAClB,MAAA,CAAA,EAAO5iC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,uBAAuB6nB,EAAOl+B,GAAE,YAAa,IACrFuW,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA62B,GAAWz2B,QAAQJ,OACpCmf,oBAGCwd,EAAAvhC,UAAA4iC,aAAN,SAAmBF,sEACjB,MAAA,CAAA,EAAO5iC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,uBAAuB6nB,EAAOl+B,GAAE,WAAY,IACpFuW,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA62B,GAAWz2B,QAAQJ,OACpCmf,oBAGCwd,EAAAvhC,UAAA6iC,mBAAN,SAAyBlrB,sEACvB,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,sBAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA+6B,GAAmB36B,QAAQJ,OAC5Cmf,oBAGCwd,EAAAvhC,UAAA8iC,mBAAN,SAAyBnrB,EAAgB+qB,sEACvC,MAAA,CAAA,EAAO5iC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,qBAAsBgoB,GAAmBz6B,OAAOw9B,IAC9G3nB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA+6B,GAAmB36B,QAAQJ,OAC5Cmf,oBAGCwd,EAAAvhC,UAAA+iC,qBAAN,SAA2BL,sEACzB,MAAA,CAAA,EAAO5iC,KAAK6jB,WACTke,OAAU/hC,KAAK8jB,cAAc/I,IAAI,UAAS,4BAA4B6nB,EAAOl+B,GAAE,KAC/Euf,oBAGCwd,EAAAvhC,UAAAgjC,qBAAN,SAA2BN,sEACzB,MAAA,CAAA,EAAO5iC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,4BAA4B6nB,EAAOl+B,GAAE,WAAY,IACzFuW,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA+6B,GAAmB36B,QAAQJ,OAC5Cmf,oBAGCwd,EAAAvhC,UAAAijC,SAAN,SAAetrB,EAAgBurB,eAAA,IAAAA,IAAAA,GAAA,+DAC7B,MAAA,CAAA,EAAOpjC,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,WAAUurB,EAAU,aAAe,KAChGnoB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA61B,GAAKz1B,QAAQJ,OAC9Bmf,oBAGCwd,EAAAvhC,UAAAmjC,WAAN,SAAiBxrB,EAAgBgmB,sEAC/B,MAAA,CAAA,EAAO79B,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,UAAW8iB,GAAKv1B,OAAOy4B,IACrF5iB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA61B,GAAKz1B,QAAQJ,OAC9Bmf,oBAGCwd,EAAAvhC,UAAAojC,kBAAN,SAAwBzrB,sEACtB,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,gBAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAya,GAAoBra,QAAQJ,OAC7Cmf,oBAGCwd,EAAAvhC,UAAA42B,uBAAN,SAA6Bjf,sEAC3B,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,2BAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAktB,GAAoB9sB,QAAQJ,OAC7Cmf,oBAGCwd,EAAAvhC,UAAAqjC,SAAN,SAAe1rB,sEACb,MAAA,CAAA,EAAO7X,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,SAAU,IACxEoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA62B,GAAWz2B,QAAQJ,OACpCmf,oBAGCwd,EAAAvhC,UAAAsjC,UAAN,SAAgB3rB,sEACd,MAAA,CAAA,EAAO7X,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,UAAW,IACzEoM,oBAGCwd,EAAAvhC,UAAAy1B,SAAN,SAAe9d,EAAgBurB,eAAA,IAAAA,IAAAA,GAAA,+DAC7B,MAAA,CAAA,EAAOpjC,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,WAAUurB,EAAU,aAAe,KAChGnoB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAuS,GAAKnS,QAAQJ,OAC9Bmf,oBAGCwd,EAAAvhC,UAAAujC,WAAN,SAAiB5rB,EAAgBrB,sEAC/B,MAAA,CAAA,EAAOxW,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,UAAWR,GAAKjS,OAAOoR,IACrFyE,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAuS,GAAKnS,QAAQJ,OAC9Bmf,oBAGCwd,EAAAvhC,UAAAwjC,cAAN,SAAoB7rB,sEAClB,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,YAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAu3B,GAAUn3B,QAAQJ,OACnCmf,oBAGCwd,EAAAvhC,UAAAyjC,gBAAN,SAAsB9rB,EAAgB0mB,sEACpC,MAAA,CAAA,EAAOv+B,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,WAAYwkB,GAAUj3B,OAAOm5B,IAC3FtjB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAu3B,GAAUn3B,QAAQJ,OACnCmf,oBAGCwd,EAAAvhC,UAAAo4B,eAAN,SAAqBzgB,sEACnB,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,iBAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAiP,GAAW7O,QAAQJ,OACpCmf,oBAGCwd,EAAAvhC,UAAA0jC,mBAAN,SAAyB/rB,sEACvB,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,sBAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA6X,GAAezX,QAAQJ,OACxCmf,oBAGCwd,EAAAvhC,UAAA2jC,qBAAN,SAA2BhsB,sEACzB,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,wBAC7DoD,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAo4B,GAAiBh4B,QAAQJ,OAC1Cmf,oBAGCwd,EAAAvhC,UAAA4jC,mBAAN,SAAyBjsB,EAAgB8c,EAAsBI,EAAchsB,4EAK3E,OAJI8c,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAC3C7R,IACF8c,EAASA,EAAOpQ,IAAI,OAAQ1M,EAAK6R,aAEnC,CAAA,EAAO5a,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,gBAAgB8c,EAAY,UAAW,CAAC9O,OAAMA,EAAEsP,QAAS,aACtHla,KAAK/T,EAAAA,KAAI,SAACme,GACT,MAAO,CACL+P,OAAQ/P,EAASgQ,QAAQta,IAAI,gBAC7BjW,KAAMuS,GAAKnS,QAAQmgB,EAASviB,WAG/BmhB,oBAGCwd,EAAAvhC,UAAA6jC,uBAAN,SAA6BC,sEAC3B,MAAA,CAAA,EAAOhkC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,6BAA6BipB,EAAQ,WAAY,IACzF/oB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAo4B,GAAiBh4B,QAAQJ,OAC1Cmf,oBAGCwd,EAAAvhC,UAAA+jC,wBAAN,SAA8BD,sEAC5B,MAAA,CAAA,EAAOhkC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,6BAA6BipB,EAAQ,YAAa,IAC1F/oB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAo4B,GAAiBh4B,QAAQJ,OAC1Cmf,oBAGCwd,EAAAvhC,UAAAgkC,iBAAN,SAAuBrsB,EAAgBssB,sEACrC,MAAA,CAAA,EAAOnkC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,cAAgB,CAAC9K,KAAMD,GAAK1H,OAAO++B,KACjGlpB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAiZ,GAAS7Y,QAAQJ,OAClCmf,oBAGCwd,EAAAvhC,UAAAkkC,YAAN,SAAkBhC,sEAChB,MAAA,CAAA,EAAOpiC,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,qBAAqBqnB,EAAU,KACtEnnB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAiZ,GAAS7Y,QAAQJ,OAClCmf,oBAGCwd,EAAAvhC,UAAAmkC,eAAN,SAAqBjC,EAAoB+B,sEACvC,MAAA,CAAA,EAAOnkC,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,qBAAqBqnB,EAAU,IAAK,CAACr1B,KAAMD,GAAK1H,OAAO++B,KAChGlpB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAiZ,GAAS7Y,QAAQJ,OAClCmf,oBAGCwd,EAAAvhC,UAAAokC,eAAN,SAAqBlC,sEACnB,MAAA,CAAA,EAAOpiC,KAAK6jB,WACTke,OAAU/hC,KAAK8jB,cAAc/I,IAAI,UAAS,qBAAqBqnB,EAAU,KACzEne,oBAGCwd,EAAAvhC,UAAAqkC,oBAAN,SAA0BnC,sEACxB,MAAA,CAAA,EAAOpiC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,qBAAqBqnB,EAAU,iBAAkB,IACzFne,6DAzTiBE,EAAAA,kBACG/H,0IAHdqlB,EAAO3gC,EAAA,CADnBob,EAAAA,WAAW,CAACC,WAAY,UACZslB,oBCbX,SAAA+C,EACU3gB,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAGJ0gB,EAAAtkC,UAAAukC,aAAN,SAAmBC,sEACjB,MAAA,CAAA,EAAO1kC,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB2pB,EAAW,KACxEzpB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAu3B,GAAUn3B,QAAQJ,OACnCmf,oBAGCugB,EAAAtkC,UAAAykC,gBAAN,SAAsBpG,sEACpB,MAAA,CAAA,EAAOv+B,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsBwjB,EAAU75B,GAAE,IAAK23B,GAAUj3B,OAAOm5B,IACjGtjB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAu3B,GAAUn3B,QAAQJ,OACnCmf,oBAGCugB,EAAAtkC,UAAA0kC,gBAAN,SAAsBF,sEACpB,MAAA,CAAA,EAAO1kC,KAAK6jB,WACTke,OAAU/hC,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB2pB,EAAW,KAC3EzgB,oBAGCugB,EAAAtkC,UAAA2kC,oBAAN,SAA0BH,sEACxB,MAAA,CAAA,EAAO1kC,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB2pB,EAAW,aACxEzpB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA83B,GAAgB13B,QAAQJ,OACzCmf,oBAGCugB,EAAAtkC,UAAA4kC,sBAAN,SAA4BJ,EAAqBtC,sEAC/C,MAAA,CAAA,EAAOpiC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB2pB,EAAW,YAAa,CAAC5H,aAAcsF,IACrGnnB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA83B,GAAgB13B,QAAQJ,OACzCmf,oBAGCugB,EAAAtkC,UAAA6kC,sBAAN,SAA4BvG,sEAC1B,MAAA,CAAA,EAAOx+B,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,6BAA6ByjB,EAAgB95B,GAAE,WAAY,IACnGuW,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA83B,GAAgB13B,QAAQJ,OACzCmf,oBAGCugB,EAAAtkC,UAAA8kC,uBAAN,SAA6BxG,sEAC3B,MAAA,CAAA,EAAOx+B,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,6BAA6ByjB,EAAgB95B,GAAE,YAAa,IACpGuW,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA83B,GAAgB13B,QAAQJ,OACzCmf,6DAjDiBE,EAAAA,kBACG/H,0IAHdooB,EAAY1jC,EAAA,CADxBob,EAAAA,WAAW,CAACC,WAAY,UACZqoB,qBCIb,SAAAS,mDAoBA,OApBwCnlC,EAAAmlC,EAAAl/B,GAOtCvG,OAAAgC,eAAIyjC,EAAA/kC,UAAA,aAAU,KAAd,WACE,OAAOF,KAAKklC,gBAAkBllC,KAAKmlC,mDAGrC3lC,OAAAgC,eAAIyjC,EAAA/kC,UAAA,QAAK,KAAT,WACE,OAAOF,KAAKolC,YAAcplC,KAAKqlC,aAAerlC,KAAKslC,qDAI9CL,EAAA//B,QAAP,SAAeJ,KAGRmgC,EAAA7/B,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAlBUm9B,EAAkBnkC,EAAA,CAT9B8F,EAAc,CACbE,cAAe,CACby+B,kBAAmB,kBACnBC,oBAAqB,oBACrBC,WAAY,YACZC,YAAa,aACbC,sBAAuB,0BAGdV,IAA2BpgC,kBAgCxC,SAAA+gC,mDASA,OATwC9lC,EAAA8lC,EAAA7/B,GAK/B6/B,EAAA1gC,QAAP,SAAeJ,KAGR8gC,EAAAxgC,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAPU89B,EAAkB9kC,EAAA,CAV9B8F,EAAc,CACbE,cAAe,CACbqI,KAAM,OACN02B,UAAW,YAEb9+B,SAAU,CACRoI,KAAMH,GACN82B,SAAUb,OAGDW,IAA2B/gC,iBCjCtC,SAAAkhC,EACUliB,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAIJiiB,EAAA7lC,UAAA8lC,gBAAN,SAAsBrR,sEACpB,MAAA,CAAA,EAAO30B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,oBAAoB1Z,KAClH/T,EAAAA,KAAI,SAAAme,GAAY,OAAAugB,GAAmB1gC,QAAQmgB,OAC3CpB,oBAGE8hB,EAAA7lC,UAAA+lC,aAAN,SAAmBpuB,sEACjB,MAAA,CAAA,EAAO7X,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBlD,EAAM,WAC7DoD,KACC/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAiZ,GAAS7Y,QAAQJ,OAC7Bmf,oBAGA8hB,EAAA7lC,UAAAgmC,eAAN,SAAqBvR,EAAsB9c,EAAgBsuB,4EAKzD,OAJMrjC,EAAO,CACXqM,KAAM,CAACzK,GAAImT,GACX0lB,aAAcR,GAAyB33B,OAAO+gC,IAEhD,CAAA,EAAOnmC,KAAK6jB,WAAWuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,sBAAsB4Z,EAAY,SAAU7xB,GACxGmY,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAo4B,GAAiBh4B,QAAQJ,OAC1Cmf,6DA1BiBE,EAAAA,kBACG/H,0IAHd2pB,EAAiBjlC,EAAA,CAD7Bob,EAAAA,WAAW,CAACC,WAAY,UACZ4pB,oBCMX,SAAAK,EACUviB,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAIJsiB,EAAAlmC,UAAA00B,WAAN,SAAiBrP,EAAkBpV,sEACjC,MAAA,CAAA,EAAOnQ,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,kBAAkBwK,EAAQ,uBAAuBpV,EAAK,KAAK8K,KACvH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAwO,GAAiBhM,QAAQxC,OACvCuhB,oBAGEmiB,EAAAlmC,UAAAo4B,eAAN,SAAqB+N,sEACnB,MAAA,CAAA,EAAOrmC,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,6BAA6BsrB,EAAQ,iBAAiBprB,KAClH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAqR,GAAW7O,QAAQxC,OACjCuhB,oBAGEmiB,EAAAlmC,UAAAy1B,SAAN,SAAe0Q,EAAkBtR,EAAchsB,EAAcisB,4EAM3D,OALInP,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAC3C7R,IACF8c,EAASA,EAAOpQ,IAAI,OAAQ1M,EAAK6R,aAEnCiL,EAAS+P,GAAkBZ,EAASnP,GACpC,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAClB/a,KAAK8jB,cAAc/I,IAAI,UAAS,6BAA6BsrB,EAAQ,UACxE,CAACxgB,OAAMA,EAAEsP,QAAS,aAClBla,KACA/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CACZ0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMuS,GAAKnS,QAAQxC,EAAOI,WAE5BmhB,oBAGEmiB,EAAAlmC,UAAA40B,UAAN,SAAgBuR,EAAkBtR,EAAchsB,EAAcisB,4EAc5D,OAbInP,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAC5CnF,IAAI,OAAQ1M,EAAK6R,YAChBoa,IACEA,EAAQV,QACVzO,EAASA,EAAOpQ,IAAI,QAASge,EAAAA,qBAAqBuB,EAAQV,SAExDU,EAAQC,SACVpP,EAASA,EAAOpQ,IAAI,SAAUuf,EAAQC,SAEpCD,EAAQE,iBACVrP,EAASA,EAAOpQ,IAAI,kBAAmBuf,EAAQE,eAAeta,cAGlE,CAAA,EAAO5a,KAAK6jB,WAAW9I,IAClB/a,KAAK8jB,cAAc/I,IAAI,UAAS,6BAA6BsrB,EAAQ,WACxE,CAACxgB,OAAMA,EAAEsP,QAAS,aAEjBla,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,MAAA,CAClB0yB,OAAQ1yB,EAAO2yB,QAAQta,IAAI,gBAC3BjW,KAAMsvB,GAAgBlvB,QAAQxC,EAAOI,WAEtCmhB,oBAGCmiB,EAAAlmC,UAAA85B,aAAN,SAAmBqM,EAAkBtR,EAAchsB,EAAcisB,4EAI/D,OAHInP,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,OAAQsf,EAAKna,YAAYnF,IAAI,OAAQ1M,EAAK6R,YAC5EiL,EAAS8T,GAAsB3E,EAASnP,GAExC,CAAA,EAAO7lB,KAAK6jB,WAAW9I,IAClB/a,KAAK8jB,cAAc/I,IAAI,UAAS,6BAA6BsrB,EAAQ,eACxE,CAAClR,QAAS,WAAYtP,OAAMA,IAC3B5K,KACC/T,EAAAA,KAAI,SAAAme,GACF,MAAO,CACL+P,OAAQ/P,EAASgQ,QAAQta,IAAI,gBAC7BjW,KAAMuS,GAAKnS,QAAQmgB,EAASviB,WAGhCmhB,oBAGAmiB,EAAAlmC,UAAA21B,SAAN,SAAewQ,sEACb,MAAA,CAAA,EAAOrmC,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,6BAA6BsrB,EAAQ,WAAWprB,KAC5G/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAia,GAAezX,QAAQxC,OACrCuhB,oBAGEmiB,EAAAlmC,UAAAw1B,eAAN,SAAqB2Q,sEACnB,MAAA,CAAA,EAAOrmC,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,6BAA6BsrB,EAAQ,kBAChGprB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA8rB,GAAmB1rB,QAAQJ,OAC5Cmf,6DArFiBE,EAAAA,kBACG/H,0IAHdgqB,EAAmBtlC,EAAA,CAD/Bob,EAAAA,WAAW,CAACC,WAAY,UACZiqB,oBCJX,SAAAE,EACUziB,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAIJwiB,EAAApmC,UAAAmkB,QAAN,SAAc3f,sEACZ,MAAA,CAAA,EAAO1E,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,4BAA4BrW,EAAE,KACzFuW,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAuuB,GAAgB/rB,QAAQxC,OAC3CuhB,oBAGCqiB,EAAApmC,UAAAqmC,UAAN,SAAgBC,sEACd,MAAA,CAAA,EAAOxmC,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,4BAA4ByrB,EAAO,YAC9FvrB,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAga,GAAgBxX,QAAQxC,OAC3CuhB,oBAGCqiB,EAAApmC,UAAAumC,YAAN,SAAkBD,sEAChB,MAAA,CAAA,EAAOxmC,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,4BAA4ByrB,EAAO,aAC9FvrB,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA8uB,GAAQtsB,QAAQxC,OACnCuhB,oBAGCqiB,EAAApmC,UAAA21B,SAAN,SAAe2Q,sEACb,MAAA,CAAA,EAAOxmC,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,4BAA4ByrB,EAAO,WAC9FvrB,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA6wB,GAAoBruB,QAAQxC,OAC/CuhB,6DA1BiBE,EAAAA,kBACG/H,0IAHdkqB,EAAkBxlC,EAAA,CAD9Bob,EAAAA,WAAW,CAACC,WAAY,UACZmqB,qBCCb,SAAAI,mDAYA,OAZgC5mC,EAAA4mC,EAAA3gC,GAQvB2gC,EAAAxhC,QAAP,SAAeJ,KAGR4hC,EAAAthC,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVU4+B,EAAU5lC,EAAA,CATtB8F,EAAc,CACbE,cAAe,CACb6/B,KAAM,OACNC,cAAe,eACfC,MAAO,QACP5G,UAAW,YACX3iB,MAAO,YAGEopB,IAAmB7hC,IRTpBi7B,GAAAA,EAAAA,sBAAAA,EAAAA,oBAAmB,KAC7BA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,SAAA,GAAA,eSFUgH,kBToBZ,SAAAC,mDAYA,OAZoCjnC,EAAAinC,EAAAhhC,GAQ3BghC,EAAA7hC,QAAP,SAAeJ,KAGRiiC,EAAA3hC,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAVUi/B,EAAcjmC,EAAA,CAf1B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJkiC,cAAe,eACftpB,MAAO,QACPupB,MAAO,QACP5G,UAAW,aAEbl5B,SAAU,CACRigC,aAAc3hC,EAAUy6B,EAAAA,qBACxBxiB,MAAOjY,EAAUy6B,EAAAA,qBACjB+G,MAAOxhC,EAAUy6B,EAAAA,qBACjBG,UAAW56B,EAAUy6B,EAAAA,yBAGZiH,IAAuBliC,iBUHlC,SAAAoiC,EACUpjB,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAGJmjB,EAAA/mC,UAAAgnC,eAAN,8EACE,MAAA,CAAA,EAAOlnC,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,yBACvCE,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAgI,GAAK5H,QAAQJ,OAC9Bmf,oBAGCgjB,EAAA/mC,UAAA+1B,YAAN,SAAkBC,sEAChB,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,KAC7Djb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAgI,GAAK5H,QAAQJ,OAC9Bmf,oBAGCgjB,EAAA/mC,UAAAinC,UAAN,SAAgBjR,sEACd,MAAA,CAAA,EAAOl2B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,iBAAgBmb,GAAU,WAAS,YAC9Fjb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA4hC,GAAWxhC,QAAQJ,OACpCmf,oBAGCgjB,EAAA/mC,UAAAknC,WAAN,SAAiBlR,EAAgBpxB,sEAC/B,MAAA,CAAA,EAAO9E,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,IAAKppB,GAAK1H,OAAON,IAChFmW,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAoK,GAAK5H,QAAQxC,OAChCuhB,oBAGCgjB,EAAA/mC,UAAAmnC,gBAAN,SAAsB1+B,EAAWgd,4EAG/B,OAFMI,EAAW,IAAIC,UACZC,OAAO,OAAQtd,EAAMgd,GAC9B,CAAA,EAAO3lB,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,8BAA+BgL,GACvE9K,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAuD,EAAKnD,QAAQJ,OAC9Bmf,oBAGCgjB,EAAA/mC,UAAAonC,eAAN,SAAqBpR,EAAgBqR,EAAqBC,EAAkBC,4EAM1E,OALMC,EAAU,CACdC,aAAcJ,EACdC,SAAQA,EACRI,iBAAkBH,GAEpB,CAAA,EAAOznC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,oBAAqBwR,GACnFzjB,oBAGCgjB,EAAA/mC,UAAA2nC,YAAN,SAAkB3R,EAAgBroB,EAAe25B,4EAE/C,OADME,EAAU,CAAC75B,MAAKA,EAAE25B,SAAQA,GAChC,CAAA,EAAOxnC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,iBAAkBwR,GAChFzjB,oBAGCgjB,EAAA/mC,UAAA4nC,mBAAN,SAAyB5R,EAAQroB,EAAe25B,EAAkBO,4EAEhE,OADML,EAAU,CAAC75B,MAAKA,EAAE25B,SAAQA,EAAEO,MAAKA,GACvC,CAAA,EAAO/nC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,yBAA0BwR,GACxFzjB,oBAGCgjB,EAAA/mC,UAAA8nC,eAAN,SAAqB9R,sEACnB,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,aAC7Djb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAwG,EAAYpG,QAAQJ,OACrCmf,oBAGCgjB,EAAA/mC,UAAA+nC,qBAAN,SAA2B/R,sEACzB,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,wBAC7Djb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA+G,EAAkB3G,QAAQJ,OAC3Cmf,oBAGCgjB,EAAA/mC,UAAAgoC,qBAAN,SAA2BhS,sEACzB,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,wBAC7Djb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAqH,EAAkBjH,QAAQJ,OAC3Cmf,oBAGCgjB,EAAA/mC,UAAAioC,kBAAN,SAAwBC,sEACtB,MAAA,CAAA,EAAOpoC,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBqtB,EAAYlS,OAAM,YAAa5qB,EAAYlG,OAAOgjC,IAC3GntB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAwG,EAAYpG,QAAQJ,OACrCmf,oBAGCgjB,EAAA/mC,UAAAmoC,4BAAN,SAAkC15B,sEAChC,MAAA,CAAA,EAAO3O,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBpM,EAAkBunB,OAAM,uBAAwBrqB,EAAkBzG,OAAOuJ,IAClIsM,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA+G,EAAkB3G,QAAQJ,OAC3Cmf,oBAGCgjB,EAAA/mC,UAAAooC,4BAAN,SAAkC15B,sEAChC,MAAA,CAAA,EAAO5O,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBnM,EAAkBsnB,OAAM,uBAAwB/pB,EAAkB/G,OAAOwJ,IAClIqM,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAqH,EAAkBjH,QAAQJ,OAC3Cmf,oBAGCgjB,EAAA/mC,UAAAqoC,mBAAN,SAAyBrS,sEACvB,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,iBAAgBmb,GAAU,WAAS,gBAC1Ejb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAiiC,GAAe7hC,QAAQJ,OACxCmf,oBAGCgjB,EAAA/mC,UAAAsoC,qBAAN,SAA2B1jC,sEACzB,MAAA,CAAA,EAAO9E,KAAK6jB,WACTie,MAAS9hC,KAAK8jB,cAAc/I,IAAI,UAAS,mCAAoCgsB,GAAe3hC,OAAON,IACnGmW,KAAK/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAqkC,GAAe7hC,QAAQxC,OAC1CuhB,oBAGCgjB,EAAA/mC,UAAA21B,SAAN,SAAeK,sEACb,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,WAC7Djb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAkK,GAAK9J,QAAQJ,OAC9Bmf,oBAGCgjB,EAAA/mC,UAAAuiC,WAAN,8EACE,MAAA,CAAA,EAAOziC,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,iCACvCE,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA62B,GAAWz2B,QAAQJ,OACpCmf,oBAGCgjB,EAAA/mC,UAAAyiC,aAAN,SAAmBqB,sEACjB,MAAA,CAAA,EAAOhkC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gCAAgCipB,EAAQ,WAAY,IAC5F/oB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA62B,GAAWz2B,QAAQJ,OACpCmf,oBAGCgjB,EAAA/mC,UAAA2iC,cAAN,SAAoBmB,sEAClB,MAAA,CAAA,EAAOhkC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,gCAAgCipB,EAAQ,YAAa,IAC7F/oB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAA62B,GAAWz2B,QAAQJ,OACpCmf,oBAGCgjB,EAAA/mC,UAAAuoC,cAAN,SAAoBvS,sEAClB,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,gBAC7Djb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAya,GAAoBra,QAAQJ,OAC7Cmf,oBAGCgjB,EAAA/mC,UAAAwoC,wBAAN,SAA8BxS,sEAC5B,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,2BAC7Djb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAya,GAAoBra,QAAQJ,OAC7Cmf,oBAGCgjB,EAAA/mC,UAAA42B,uBAAN,SAA6BZ,sEAC3B,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,2BAC7Djb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAktB,GAAoB9sB,QAAQJ,OAC7Cmf,oBAGCgjB,EAAA/mC,UAAAy1B,SAAN,SAAeO,sEACb,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAgBmb,EAAM,WAC7Djb,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAuS,GAAKnS,QAAQJ,OAC9Bmf,oBAGCgjB,EAAA/mC,UAAAyoC,eAAN,8EACE,MAAA,CAAA,EAAO3oC,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCACvCE,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAk3B,GAAW92B,QAAQJ,OACpCmf,oBAGCgjB,EAAA/mC,UAAA0oC,iBAAN,SAAuB5E,sEACrB,MAAA,CAAA,EAAOhkC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,qCAAqCipB,EAAQ,WAAY,IACjG/oB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAk3B,GAAW92B,QAAQJ,OACpCmf,oBAGCgjB,EAAA/mC,UAAA2oC,kBAAN,SAAwB7E,sEACtB,MAAA,CAAA,EAAOhkC,KAAK6jB,WACTuB,KAAQplB,KAAK8jB,cAAc/I,IAAI,UAAS,qCAAqCipB,EAAQ,YAAa,IAClG/oB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAk3B,GAAW92B,QAAQJ,OACpCmf,oBAGCgjB,EAAA/mC,UAAA4oC,YAAN,SAAkBnR,4EAEhB,OADM9R,GAAS,IAAKC,EAAAA,YAAcrQ,IAAI,SAAUkiB,GAChD,CAAA,EAAO33B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,gBAAiB,CAAC8K,OAAMA,IAC/D5K,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAgI,GAAK5H,QAAQJ,OAC9Bmf,oBAGCgjB,EAAA/mC,UAAA6oC,gBAAN,SAAsBC,sEACpB,MAAA,CAAA,EAAOhpC,KAAK6jB,WACTolB,IAAOjpC,KAAK8jB,cAAc/I,IAAI,UAAS,gCAAiC,CAACiuB,OAAMA,IAC/E/tB,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAgI,GAAK5H,QAAQJ,OAC9Bmf,oBAGCgjB,EAAA/mC,UAAAwjC,cAAN,SAAoBxN,sEAClB,MAAA,CAAA,EAAOl2B,KAAK6jB,WACT9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,qCACvCE,KAAK/T,EAAAA,KAAI,SAAApC,GAAQ,OAAAu3B,GAAUn3B,QAAQJ,OACnCmf,6DAzNiBE,EAAAA,kBACG/H,0IAHd6qB,EAAOnmC,EAAA,CADnBob,EAAAA,WAAW,CAACC,WAAY,UACZ8qB,qBCNb,SAAAiC,mDASA,OATiDppC,EAAAopC,EAAAnjC,GAKxCmjC,EAAAhkC,QAAP,SAAeJ,KAGRokC,EAAA9jC,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAPUohC,EAA2BpoC,EAAA,CAVvC8F,EAAc,CACbE,cAAe,CACbqI,KAAM,OACN6I,gBAAiB,kBAEnBjR,SAAU,CACRoI,KAAM6iB,GACNpa,eAAgBoa,OAGPkX,IAAoCrkC,kBCYjD,SAAAskC,mDA0CA,OA1C6CrpC,EAAAqpC,EAAApjC,GAqB3CvG,OAAAgC,eAAI2nC,EAAAjpC,UAAA,KAAE,KAAN,WACE,OAAOF,KAAK2hB,4CAGdniB,OAAAgC,eAAI2nC,EAAAjpC,UAAA,UAAO,KAAX,WACE,OAAOF,KAAKopC,aAAeppC,KAAKqpC,6CAGlC7pC,OAAAgC,eAAI2nC,EAAAjpC,UAAA,SAAM,KAAV,WACE,OAAOF,KAAKspC,YAActpC,KAAKupC,+CAGjC/pC,OAAAgC,eAAI2nC,EAAAjpC,UAAA,gBAAa,KAAjB,WACE,OAAOF,KAAK8yB,SAAW9yB,KAAKwpC,mDAIvBL,EAAAjkC,QAAP,SAAeJ,KAGRqkC,EAAA/jC,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBAxCUqhC,EAAuBroC,EAAA,CAvBnC8F,EAAc,CACbE,cAAe,CACb8a,aAAc,aACdqQ,WAAY,YACZC,aAAc,cACdC,WAAY,YACZG,aAAc,cACdC,aAAc,cACdC,eAAgB,gBAChBE,cAAe,eACfC,cAAe,eACfC,aAAc,cACdE,SAAU,WACVC,eAAgB,gBAChBC,mBAAoB,oBACpBE,eAAgB,gBAChBC,qBAAsB,qBACtBC,yBAA0B,yBAC1Btf,OAAQ,SACRwf,OAAQ,SACRpF,aAAc,kBAGLib,IAAgCtkC,IHtBjCiiC,GAAAA,EAAAA,wBAAAA,EAAAA,sBAAqB,KAC/BA,GAAA,WAAA,GAAA,aACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,cAAA,GAAA,gBACAA,GAAAA,GAAA,aAAA,IAAA,eACAA,GAAAA,GAAA,aAAA,IAAA,eACAA,GAAAA,GAAA,YAAA,IAAA,cACAA,GAAAA,GAAA,QAAA,IAAA,UACAA,GAAAA,GAAA,cAAA,IAAA,gBACAA,GAAAA,GAAA,kBAAA,IAAA,oBACAA,GAAAA,GAAA,MAAA,IAAA,QACAA,GAAAA,GAAA,MAAA,IAAA,QACAA,GAAAA,GAAA,cAAA,IAAA,gBACAA,GAAAA,GAAA,oBAAA,IAAA,sBACAA,GAAAA,GAAA,wBAAA,IAAA,0BACAA,GAAAA,GAAA,QAAA,IAAA,UACAA,GAAAA,GAAA,YAAA,IAAA,wEAGW2C,GAAkB,CAC7B3C,EAAAA,sBAAsB4C,UAAW5C,EAAAA,sBAAsB6C,YACvD7C,EAAAA,sBAAsB8C,aAAc9C,EAAAA,sBAAsB+C,OAE/CC,GAAkB,CAC7BhD,EAAAA,sBAAsBiD,YAAajD,EAAAA,sBAAsBkD,aACzDlD,EAAAA,sBAAsBmD,YAAanD,EAAAA,sBAAsBoD,cACzDpD,EAAAA,sBAAsBqD,MAAOrD,EAAAA,sBAAsBsD,oCAqBrD,SAAAC,IAAA,IAAA/yB,EAAA,OAAAvR,GAAAA,EAAAlF,MAAAb,KAAAU,YAAAV,YAGEsX,EAAA2K,QAAS,IA6FX,OAhGuCniB,EAAAuqC,EAAAtkC,GAcrCskC,EAAAnqC,UAAAgjB,QAAA,SAAQC,GACN,OAAInjB,KAAKsqC,QAAUnnB,EAAMmnB,OAAStqC,KAAKyV,MAAQ0N,EAAM1N,IAC/CzV,KAAKoY,UAAY+K,EAAM/K,SAClBpY,KAAKoY,SAAS7K,UAAY4V,EAAM/K,SAAS7K,UAAY,GAAK,EAE1DvN,KAAK0E,GAAKye,EAAMze,GAAK,GAAK,EAGjC1E,KAAKyV,MAAQ0N,EAAM1N,IACdzV,KAAKsqC,MAAQnnB,EAAMmnB,MAAQ,GAAK,EAElCtqC,KAAKyV,IAAM0N,EAAM1N,IAAM,GAAK,GAGrC40B,EAAAnqC,UAAAsmB,YAAA,WACE,OAAOijB,GAAgBc,SAASvqC,KAAKwiB,UAGvC6nB,EAAAnqC,UAAAsqC,YAAA,WACE,OAAOV,GAAgBS,SAASvqC,KAAKwiB,UAGvC6nB,EAAAnqC,UAAAuqC,QAAA,WACE,MAAO,CACL3D,EAAAA,sBAAsB4D,UACtB5D,EAAAA,sBAAsB4C,UACtB5C,EAAAA,sBAAsBiD,aACtBQ,SAASvqC,KAAKwiB,UAGlB6nB,EAAAnqC,UAAAyqC,SAAA,WACE,MAAO,CACL7D,EAAAA,sBAAsBkD,aACtBlD,EAAAA,sBAAsB8C,aACtB9C,EAAAA,sBAAsB8D,aACtBL,SAASvqC,KAAKwiB,UAGlB6nB,EAAAnqC,UAAA2qC,UAAA,WACE,MAAO,CACL/D,EAAAA,sBAAsBoD,cACtBpD,EAAAA,sBAAsBgE,QACtBhE,EAAAA,sBAAsBiE,mBACtBR,SAASvqC,KAAKwiB,UAGlB6nB,EAAAnqC,UAAA8qC,eAAA,WACE,MAAO,CACLlE,EAAAA,sBAAsBsD,oBACtBtD,EAAAA,sBAAsBmE,cACtBnE,EAAAA,sBAAsBoE,yBACtBX,SAASvqC,KAAKwiB,UAGlB6nB,EAAAnqC,UAAAirC,QAAA,WACE,MAAO,CACLrE,EAAAA,sBAAsBmD,YACtBnD,EAAAA,sBAAsBsE,cACtBtE,EAAAA,sBAAsB6C,aACtBY,SAASvqC,KAAKwiB,UAGlB6nB,EAAAnqC,UAAAmrC,YAAA,WACE,MAAO,CACLvE,EAAAA,sBAAsBwE,WACtBxE,EAAAA,sBAAsByE,UACtBzE,EAAAA,sBAAsB0E,SACtBjB,SAASvqC,KAAKwiB,UAGlB6nB,EAAAnqC,UAAAurC,YAAA,WACE,OAAQ,CACN3E,EAAAA,sBAAsBgE,QACtBhE,EAAAA,sBAAsBmE,eACtBV,SAASvqC,KAAKwiB,UAIX6nB,EAAAnlC,QAAP,SAAeJ,KAGRulC,EAAAjlC,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBA9FUuiC,EAAiBvpC,EAAA,CAlB7B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6e,UAAW,WACX7M,QAAS,SACTkL,aAAc,aACd4B,SAAU,UACV/N,IAAK,MACL60B,MAAO,QACPx+B,SAAU,WACV8H,QAAS,SACTwE,SAAU,YAEZrR,SAAU,CACRyb,QAASnd,EAAUyhC,EAAAA,uBACnB1uB,SAAUzR,MAGD0jC,IAA0BxlC,kBI7CrC,SAAA6mC,EACY7nB,EACAC,GAFZ,IAAAxM,EAIEvR,EAAAnF,KAAAZ,KAAM6jB,EAAYC,IAAc9jB,YAHtBsX,EAAAuM,WAAAA,EACAvM,EAAAwM,cAAAA,WAHyBhkB,EAAA4rC,EAAA3lC,GAQ/B2lC,EAAAxrC,UAAAmkB,QAAN,SAAcL,sEACZ,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,KAAK/I,KAC7G/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2U,GAAKnS,QAAQxC,OAC3BuhB,oBAGEynB,EAAAxrC,UAAAokB,iBAAN,SAAuBN,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,oBAAoB/I,KAC5H/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAwmC,GAA4BhkC,QAAQxC,OAClDuhB,oBAGEynB,EAAAxrC,UAAAqkB,iBAAN,SAAuBP,sEACrB,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,oBAAoB/I,KAC5H/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAymC,GAAwBjkC,QAAQxC,OAC9CuhB,oBAGEynB,EAAAxrC,UAAAskB,QAAN,SAAcR,sEACZ,MAAA,CAAA,EAAOhkB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,UAAU/I,KAClH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAA2nC,GAAkBnlC,QAAQxC,OACxCuhB,oBAGEynB,EAAAxrC,UAAAukB,iBAAN,SAAuBT,EAAgBkI,sEACrC,MAAA,CAAA,EAAOlsB,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,sCAAsCiJ,EAAM,kBAAmB,CAC3H6B,QAAQ,IAAIC,EAAAA,YAAarQ,IAAI,YAAayW,GAC1CvH,aAAc,SACbV,6DAlCmBE,EAAAA,kBACG/H,0IAHhBsvB,EAAiB5qC,EAAA,CAD7Bob,EAAAA,WAAW,CAACC,WAAY,UACZuvB,IAA0B9nB,kBCFrC,SAAA+nB,EACU9nB,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAIV6nB,EAAAzrC,UAAAmkB,QAAA,SAAQxM,GACN,OAAO7X,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,uBAAuBlD,EAAM,KAAKoD,KAC9F/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAsM,GAAK9J,QAAQxC,OAC3BuhB,aAGJ0nB,EAAAzrC,UAAA0jC,mBAAA,SAAmB/rB,EAAgB0N,GACjC,IAAMM,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,YAAa8P,EAAS3K,YAC1D,OAAO5a,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,uBAAuBlD,EAAM,qBAAsB,CAACgO,OAAMA,IAAG5K,KACzH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAia,GAAezX,QAAQxC,OACrCuhB,sDAfkBE,EAAAA,kBACG/H,0IAHduvB,EAAa7qC,EAAA,CADzBob,EAAAA,WAAW,CAACC,WAAY,UACZwvB,oBCEX,SAAAC,EACU/nB,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,SAIV8nB,EAAA1rC,UAAAmkB,QAAA,SAAQ6R,GACN,OAAOl2B,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,uBAAuBmb,EAAM,KAAKjb,KAC9F/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAoK,GAAK5H,QAAQxC,OAC3BuhB,aAGJ2nB,EAAA1rC,UAAAo4B,eAAA,SAAepC,EAAgB3Q,GAC7B,IAAMM,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,YAAa8P,EAAS3K,YAC1D,OAAO5a,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,uBAAuBmb,EAAM,gBAAiB,CAACrQ,OAAMA,IAAG5K,KACpH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAqR,GAAW7O,QAAQxC,OACjCuhB,aAGJ2nB,EAAA1rC,UAAA2rC,kBAAA,SAAkB3V,EAAgBmQ,GAChC,IAAMxgB,GAAS,IAAIC,EAAAA,YAAarQ,IAAI,YAAa4wB,EAASzrB,YAC1D,OAAO5a,KAAK6jB,WAAW9I,IAAO/a,KAAK8jB,cAAc/I,IAAI,UAAS,uBAAuBmb,EAAM,oBAAqB,CAACrQ,OAAMA,IAAG5K,KACxH/T,EAAAA,KAAI,SAAAxE,GAAU,OAAAoc,GAAmB5Z,QAAQxC,OACzCuhB,sDAtBkBE,EAAAA,kBACG/H,0IAHdwvB,EAAa9qC,EAAA,CADzBob,EAAAA,WAAW,CAACC,WAAY,UACZyvB,MCPAE,KAAiCC,GAAA,IAC3CjuB,EAAAA,uBAAuBwtB,YAAa,oBACrC/uB,GAACuB,EAAAA,uBAAuBytB,WAAY,kBACpChvB,GAACuB,EAAAA,uBAAuBkuB,aAAc,sBACtCzvB,GAACuB,EAAAA,uBAAuBmuB,mBAAoB,gBAC5C1vB,GAACuB,EAAAA,uBAAuBouB,qBAAsB,gBAC9C3vB,GAACuB,EAAAA,uBAAuBquB,oBAAqB,kBAC7C5vB,GAACuB,EAAAA,uBAAuBsuB,mBAAoB,gBAC5C7vB,GAACuB,EAAAA,uBAAuBqE,gBAAiB,SACzC5F,GAACuB,EAAAA,uBAAuBsE,kBAAmB,SAC3C7F,GAACuB,EAAAA,uBAAuBuE,iBAAkB,mBAC1C9F,GAACuB,EAAAA,uBAAuBwE,gBAAiB,SACzC/F,GAACuB,EAAAA,uBAAuBuuB,QAAS,WACjC9vB,GAACuB,EAAAA,uBAAuBwuB,OAAQ,UAChC/vB,GAACuB,EAAAA,uBAAuB4E,SAAU,SAClCnG,GAACuB,EAAAA,uBAAuB6E,mBAAoB,qBAC5CpG,GAACuB,EAAAA,uBAAuB8E,mBAAoB,kBAC5CrG,GAACuB,EAAAA,uBAAuByuB,OAAQ,WAChChwB,GAACuB,EAAAA,uBAAuB0uB,UAAW,SACnCjwB,GAACuB,EAAAA,uBAAuBgF,eAAgB,MACxCvG,GAACuB,EAAAA,uBAAuBiF,gBAAiB,kBACzCxG,GAACuB,EAAAA,uBAAuBkF,sBAAuB,kBAC/CzG,GAACuB,EAAAA,uBAAuB0tB,SAAU,UAClCjvB,GAACuB,EAAAA,uBAAuB2uB,cAAe,uBCvB5BC,KAA6BC,GAAA,IACvC7qB,EAAAA,mBAAmBwpB,YAAa,oBACjC/uB,GAACuF,EAAAA,mBAAmBypB,WAAY,kBAChChvB,GAACuF,EAAAA,mBAAmB8qB,WAAY,cAChCrwB,GAACuF,EAAAA,mBAAmB+qB,cAAe,oBACnCtwB,GAACuF,EAAAA,mBAAmBgrB,cAAe,yBACnCvwB,GAACuF,EAAAA,mBAAmB2E,MAAO,MAC3BlK,GAACuF,EAAAA,mBAAmBirB,kBAAmB,eACvCxwB,GAACuF,EAAAA,mBAAmB4E,eAAgB,YACpCnK,GAACuF,EAAAA,mBAAmBuqB,QAAS,WAC7B9vB,GAACuF,EAAAA,mBAAmBkrB,YAAa,oBACjCzwB,GAACuF,EAAAA,mBAAmB8E,eAAgB,cACpCrK,GAACuF,EAAAA,mBAAmB+E,eAAgB,gBACpCtK,GAACuF,EAAAA,mBAAmBgF,oBAAqB,uBACzCvK,GAACuF,EAAAA,mBAAmBiF,yBAA0B,qCAC9CxK,GAACuF,EAAAA,mBAAmBmF,eAAgB,aACpC1K,GAACuF,EAAAA,mBAAmBkF,cAAe,kBACnCzK,GAACuF,EAAAA,mBAAmBmrB,eAAgB,yBACpC1wB,GAACuF,EAAAA,mBAAmBorB,cAAe,uBACnC3wB,GAACuF,EAAAA,mBAAmB5G,MAAO,iBAC3BqB,GAACuF,EAAAA,mBAAmB0pB,SAAU,UAC9BjvB,GAACuF,EAAAA,mBAAmBqrB,eAAgB,2BACpC5wB,GAACuF,EAAAA,mBAAmBsrB,aAAc,8BCtBvBC,KAA+BC,GAAA,IACzCjnB,EAAAA,qBAAqBilB,YAAa,gBACnC/uB,GAAC8J,EAAAA,qBAAqBklB,WAAY,cAClChvB,GAAC8J,EAAAA,qBAAqBumB,WAAY,YAClCrwB,GAAC8J,EAAAA,qBAAqBwmB,cAAe,eACrCtwB,GAAC8J,EAAAA,qBAAqBymB,cAAe,uBACrCvwB,GAAC8J,EAAAA,qBAAqBI,MAAO,MAC7BlK,GAAC8J,EAAAA,qBAAqBgmB,QAAS,WAC/B9vB,GAAC8J,EAAAA,qBAAqBknB,iBAAkB,kBACxChxB,GAAC8J,EAAAA,qBAAqBiG,cAAe,eACrC/P,GAAC8J,EAAAA,qBAAqBmnB,uBAAwB,qBAC9CjxB,GAAC8J,EAAAA,qBAAqBkG,oBAAqB,kBAC3ChQ,GAAC8J,EAAAA,qBAAqB2mB,YAAa,mBACnCzwB,GAAC8J,EAAAA,qBAAqBonB,QAAS,UAC/BlxB,GAAC8J,EAAAA,qBAAqBqnB,WAAY,gBAClCnxB,GAAC8J,EAAAA,qBAAqBnL,MAAO,eAC7BqB,GAAC8J,EAAAA,qBAAqBsnB,cAAe,mBACrCpxB,GAAC8J,EAAAA,qBAAqBunB,oBAAqB,sBAC3CrxB,GAAC8J,EAAAA,qBAAqBiJ,MAAO,MAC7B/S,GAAC8J,EAAAA,qBAAqBkJ,aAAc,kBACpChT,GAAC8J,EAAAA,qBAAqBmJ,UAAW,mBACjCjT,GAAC8J,EAAAA,qBAAqBwnB,cAAe,MACrCtxB,GAAC8J,EAAAA,qBAAqBynB,MAAO,SAC7BvxB,GAAC8J,EAAAA,qBAAqBkmB,OAAQ,WAC9BhwB,GAAC8J,EAAAA,qBAAqB0nB,KAAM,MAC5BxxB,GAAC8J,EAAAA,qBAAqBmlB,SAAU,cCzBrBwC,KAA+BC,GAAA,IACzC7hB,EAAAA,qBAAqBkf,YAAa,gBACnC/uB,GAAC6P,EAAAA,qBAAqBmf,WAAY,cAClChvB,GAAC6P,EAAAA,qBAAqBwgB,WAAY,cAClCrwB,GAAC6P,EAAAA,qBAAqBygB,cAAe,iBACrCtwB,GAAC6P,EAAAA,qBAAqB0gB,cAAe,yBACrCvwB,GAAC6P,EAAAA,qBAAqB3F,MAAO,MAC7BlK,GAAC6P,EAAAA,qBAAqBigB,QAAS,WAC/B9vB,GAAC6P,EAAAA,qBAAqB8hB,cAAe,YACrC3xB,GAAC6P,EAAAA,qBAAqB+hB,sBAAuB,aAC7C5xB,GAAC6P,EAAAA,qBAAqBE,cAAe,SACrC/P,GAAC6P,EAAAA,qBAAqBlR,MAAO,OAC7BqB,GAAC6P,EAAAA,qBAAqBuhB,cAAe,UACrCpxB,GAAC6P,EAAAA,qBAAqBkD,MAAO,MAC7B/S,GAAC6P,EAAAA,qBAAqBmD,aAAc,mBACpChT,GAAC6P,EAAAA,qBAAqBoD,UAAW,mBACjCjT,GAAC6P,EAAAA,qBAAqBgiB,iBAAkB,oBACxC7xB,GAAC6P,EAAAA,qBAAqBogB,UAAW,SACjCjwB,GAAC6P,EAAAA,qBAAqBmgB,OAAQ,WAC9BhwB,GAAC6P,EAAAA,qBAAqB4gB,YAAa,cACnCzwB,GAAC6P,EAAAA,qBAAqBof,SAAU,cCpBrB6C,KAAwBC,GAAA,IAClCr9B,EAAAA,cAAcs9B,eAAgB,uBAC/BhyB,GAACtL,EAAAA,cAAcu9B,gBAAiB,aAChCjyB,GAACtL,EAAAA,cAAcmS,MAAO,aACtB7G,GAACtL,EAAAA,cAAcw9B,kBAAmB,gBAClClyB,GAACtL,EAAAA,cAAcy9B,eAAgB,6BAC/BnyB,GAACtL,EAAAA,cAAc09B,4BAA6B,uCAC5CpyB,GAACtL,EAAAA,cAAc29B,UAAW,UAC1BryB,GAACtL,EAAAA,cAAc49B,WAAY,WAC3BtyB,GAACtL,EAAAA,cAAc69B,oBAAqB,sCCTzBC,KAAwBC,GAAA,IAClCn0B,EAAAA,aAAao0B,QAAS,eACvB1yB,GAAC1B,EAAAA,aAAaq0B,WAAY,YAC1B3yB,GAAC1B,EAAAA,aAAas0B,OAAQ,WACtB5yB,GAAC1B,EAAAA,aAAau0B,OAAQ,SACtB7yB,GAAC1B,EAAAA,aAAaw0B,YAAa,iBAC3B9yB,GAAC1B,EAAAA,aAAay0B,eAAgB,kBAC9B/yB,GAAC1B,EAAAA,aAAa00B,SAAU,WACxBhzB,GAAC1B,EAAAA,aAAa20B,cAAe,uBAC7BjzB,GAAC1B,EAAAA,aAAa40B,SAAU,UACxBlzB,GAAC1B,EAAAA,aAAa60B,WAAY,gBCNfC,KAAkCC,GAAA,IAC5CzmC,EAAAA,uBAAuB0mC,aAAc,yBACtCtzB,GAACpT,EAAAA,uBAAuB2mC,gBAAiB,qBACzCvzB,GAACpT,EAAAA,uBAAuB4mC,eAAgB,iBACxCxzB,GAACpT,EAAAA,uBAAuB6mC,eAAgB,iBACxCzzB,GAACpT,EAAAA,uBAAuB8mC,QAAS,gBAGtBC,KAAuCnrC,GAAA,IACjDoE,EAAAA,uBAAuB0mC,aAAc,KACtC9qC,GAACoE,EAAAA,uBAAuB2mC,gBAAiB,KACzC/qC,GAACoE,EAAAA,uBAAuB4mC,eAAgB,KACxChrC,GAACoE,EAAAA,uBAAuB6mC,eAAgB,KACxCjrC,GAACoE,EAAAA,uBAAuB8mC,QAAS,QAGtBE,KAAoBlrC,GAAA,IAC9BmE,EAAAA,SAASgnC,MAAO,QACjBnrC,GAACmE,EAAAA,SAASinC,OAAQ,aAGPC,KAAkCC,GAAA,IAC5C5kC,EAAAA,uBAAuB6kC,QAAS,YACjCD,GAAC5kC,EAAAA,uBAAuB8kC,QAAS,SACjCF,GAAC5kC,EAAAA,uBAAuB+kC,eAAgB,0BACxCH,GAAC5kC,EAAAA,uBAAuBglC,mBAAoB,aAC5CJ,GAAC5kC,EAAAA,uBAAuBilC,UAAW,mBAGxBC,KAAuCC,GAAA,IACjDnlC,EAAAA,uBAAuB6kC,QAAS,IACjCM,GAACnlC,EAAAA,uBAAuB8kC,QAAS,IACjCK,GAACnlC,EAAAA,uBAAuB+kC,eAAgB,KACxCI,GAACnlC,EAAAA,uBAAuBglC,mBAAoB,KAC5CG,GAACnlC,EAAAA,uBAAuBilC,UAAW,QAGxBG,KAAyCC,GAAA,IACnDrlC,EAAAA,uBAAuB6kC,QAAS,QACjCQ,GAACrlC,EAAAA,uBAAuB8kC,QAAS,SACjCO,GAACrlC,EAAAA,uBAAuB+kC,eAAgB,QACxCM,GAACrlC,EAAAA,uBAAuBglC,mBAAoB,SAC5CK,GAACrlC,EAAAA,uBAAuBilC,UAAW,YAGxBK,KAA8BC,GAAA,IACxCtlC,EAAAA,mBAAmBwkC,MAAO,QAC3Bc,GAACtlC,EAAAA,mBAAmBykC,OAAQ,aAGjBc,KAA8BC,GAAA,IACxCnlC,EAAAA,mBAAmBolC,YAAa,UACjCD,GAACnlC,EAAAA,mBAAmBqlC,YAAa,WACjCF,GAACnlC,EAAAA,mBAAmBslC,SAAU,iBAGnBC,KAAgCC,GAAA,IAC1CrlC,EAAAA,qBAAqBslC,YAAa,UACnCD,GAACrlC,EAAAA,qBAAqBklC,YAAa,WACnCG,GAACrlC,EAAAA,qBAAqBulC,YAAa,eACnCF,GAACrlC,EAAAA,qBAAqBmlC,SAAU,iBAGrBK,KAA4BC,GAAA,IACtCxlC,EAAAA,iBAAiB+jC,MAAO,QACzByB,GAACxlC,EAAAA,iBAAiBgkC,OAAQ,SAC1BwB,GAACxlC,EAAAA,iBAAiBylC,MAAO,UAGdC,KAAgCC,GAAA,IAC1CzlC,EAAAA,qBAAqBmlC,YAAa,UACnCM,GAACzlC,EAAAA,qBAAqB0lC,QAAS,UAC/BD,GAACzlC,EAAAA,qBAAqB2lC,OAAQ,WAC9BF,GAACzlC,EAAAA,qBAAqB4lC,aAAc,cACpCH,GAACzlC,EAAAA,qBAAqB6lC,UAAW,kBC9EtBC,KAAiCC,GAAA,IAC3CxL,EAAAA,sBAAsBwE,YAAa,oBACpC/uB,GAACuqB,EAAAA,sBAAsByE,WAAY,kBACnChvB,GAACuqB,EAAAA,sBAAsBkF,aAAc,sBACrCzvB,GAACuqB,EAAAA,sBAAsB4C,WAAY,MACnCntB,GAACuqB,EAAAA,sBAAsB4D,WAAY,SACnCnuB,GAACuqB,EAAAA,sBAAsBiD,aAAc,mBACrCxtB,GAACuqB,EAAAA,sBAAsB8C,cAAe,uBACtCrtB,GAACuqB,EAAAA,sBAAsB8D,aAAc,QACrCruB,GAACuqB,EAAAA,sBAAsBkD,cAAe,eACtCztB,GAACuqB,EAAAA,sBAAsB6C,aAAc,sBACrCptB,GAACuqB,EAAAA,sBAAsBsE,eAAgB,OACvC7uB,GAACuqB,EAAAA,sBAAsBmD,aAAc,kBACrC1tB,GAACuqB,EAAAA,sBAAsBiE,mBAAoB,iBAC3CxuB,GAACuqB,EAAAA,sBAAsBgE,SAAU,QACjCvuB,GAACuqB,EAAAA,sBAAsBoD,eAAgB,mBACvC3tB,GAACuqB,EAAAA,sBAAsBmE,eAAgB,eACvC1uB,GAACuqB,EAAAA,sBAAsBoE,yBAA0B,wBACjD3uB,GAACuqB,EAAAA,sBAAsBsD,qBAAsB,uBAC7C7tB,GAACuqB,EAAAA,sBAAsB+C,OAAQ,OAC/BttB,GAACuqB,EAAAA,sBAAsBqD,OAAQ,SAC/B5tB,GAACuqB,EAAAA,sBAAsB0E,SAAU,UACjCjvB,GAACuqB,EAAAA,sBAAsBvX,aAAc,oCCVvC,SAAAgjB,mDAWA,OAXoCzyC,EAAAyyC,EAAAxsC,GAO3BwsC,EAAArtC,QAAP,SAAeJ,KAGRytC,EAAAntC,OAAP,SAAcN,KAHdhE,EAAA,CADC2G,qBAID3G,EAAA,CADCgH,oBATUyqC,EAAczxC,EAAA,CAX1B8F,EAAc,CACbE,cAAe,CACbpC,GAAI,KACJ6D,KAAM,OACNyc,MAAO,QACPwtB,SAAU,WAEZzrC,SAAU,CACRie,MAAOrf,EAAU0C,OAGRkqC,IAAuB1tC,iBCclC,SAAA4tC,EACU5uB,EACAC,GADA9jB,KAAA6jB,WAAAA,EACA7jB,KAAA8jB,cAAAA,EAZF9jB,KAAA0yC,UAA6C,GAC7C1yC,KAAA2yC,cAAwC,GAGxC3yC,KAAA4yC,iBAAmB,IAAI72B,EAAAA,iBAAyB,UAExDvc,OAAAgC,eAAIixC,EAAAvyC,UAAA,aAAU,KAAd,WACE,OAAOF,KAAK4yC,kDAQdH,EAAAvyC,UAAA2yC,OAAA,SAAOC,GAAP,IAAAx7B,EAAAtX,KACE,GAAI8yC,KAAW9yC,KAAK0yC,UAClB,OAAO1yC,KAAK0yC,UAAUI,GAGxB9yC,KAAK0yC,UAAUI,GAAW,IAAIC,EAAAA,QAC9B,IAAMC,EAAehzC,KAAKizC,UAAUC,WAAU,SAAAC,GAC5C77B,EAAKq7B,cAAcG,GAAWx7B,EAAK87B,sBAAsBN,GACzDO,YAAW,WACTL,EAAaM,oBAIjB,OAAOtzC,KAAK0yC,UAAUI,IAGxBL,EAAAvyC,UAAAozC,YAAA,SAAYR,GACN9yC,KAAK2yC,cAAcG,KACrB9yC,KAAK2yC,cAAcG,GAASQ,qBACrBtzC,KAAK2yC,cAAcG,IAExB9yC,KAAK0yC,UAAUI,KACjB9yC,KAAK0yC,UAAUI,GAASn3B,kBACjB3b,KAAK0yC,UAAUI,KAI1BL,EAAAvyC,UAAA+yC,QAAA,WAAA,IAAA37B,EAAAtX,KAwBE,OAvBKA,KAAKuzC,0BACRvzC,KAAKuzC,wBAA0B,IAAIC,EAAAA,cAAc,GAEjDxzC,KAAK6jB,WAAW9I,IAAyB/a,KAAK8jB,cAAc/I,IAAI,UAAS,uBACtEm4B,WAAU,SAAArsC,GACTyQ,EAAKm8B,iBAAiB,CACpBC,IAAKp8B,EAAKwM,cAAc/I,IAAI,iBAC5BhO,KAAMlG,EAAOkG,KACb4mC,UAAW9sC,EAAO8sC,UAClB5L,MAAOlhC,EAAOkhC,MACd6L,WAAY,CAAC,eAEft8B,EAAKu8B,WAAWZ,UAChB37B,EAAKu8B,WAAWC,GAAG,WAAW,WAC5Bx8B,EAAKi8B,wBAAwBhxC,MAAK,GAClC+U,EAAKs7B,iBAAiBrwC,MAAK,MAE7B+U,EAAKu8B,WAAWC,GAAG,cAAc,WAC/Bx8B,EAAKs7B,iBAAiBrwC,MAAK,UAK5BvC,KAAKuzC,yBAGdd,EAAAvyC,UAAA6zC,QAAA,SAAQjB,EAAiB/tB,GAAzB,IAAAzN,EAAAtX,KACE,OAAO,IAAIg0C,EAAAA,YAAgB,SAAAC,GACzB38B,EAAK27B,UAAUC,WAAU,WAClB57B,EAAKq7B,cAAcG,KACtBx7B,EAAKq7B,cAAcG,GAAWx7B,EAAK87B,sBAAsBN,IAE3Dx7B,EAAKq7B,cAAcG,GAASiB,QAAQhvB,GAASniB,MAAK,SAAAsxC,GAChDD,EAAS1xC,KAAK2xC,GACdD,EAASt4B,cACR,SAAArX,GACD,MAAMA,YAMdmuC,EAAAvyC,UAAAi0C,WAAA,WACEn0C,KAAK6zC,WAAWM,aAChBn0C,KAAKuzC,6BAA0BhsC,EAC/BvH,KAAK0yC,UAAY,GACjB1yC,KAAK2yC,cAAgB,IAGfF,EAAAvyC,UAAAuzC,iBAAR,SAAyB5sC,GAOvB7G,KAAK6zC,WAAa,IAAIO,EAAWvtC,IAG3B4rC,EAAAvyC,UAAAkzC,sBAAR,SAA8BN,GAC5B,OAAO9yC,KAAK6zC,WAAWX,UAAUJ,EAAS9yC,KAAKq0C,eAAeC,KAAKt0C,QAG7DyyC,EAAAvyC,UAAAm0C,eAAR,SAAuBhvB,GACrB,IAAMytB,EAAUztB,EAASytB,QACpB9yC,KAAK0yC,UAAUI,IAIpB9yC,KAAK0yC,UAAUI,GAASvwC,KAAK8iB,EAASvgB,gDArGlBqf,EAAAA,kBACG/H,0IAbdq2B,EAAiB3xC,EAAA,CAD7Bob,EAAAA,WAAW,CAACC,WAAY,UACZs2B,oBCZX,SAAA8B,EAAYC,EAA8B5uC,GAAA5F,KAAA4F,WAAAA,EACxC5F,KAAKw0C,aAAeA,EAgBxB,OAbED,EAAAr0C,UAAAgF,QAAA,SAAQ7C,GACN,OAAIrC,KAAK4F,WACA5F,KAAK4F,WAAWV,QAAQ7C,GAE1BA,GAGTkyC,EAAAr0C,UAAAkF,OAAA,SAAO/C,GACL,OAAIrC,KAAK4F,WACA5F,KAAK4F,WAAWR,OAAO/C,GAEzBA,GAEXkyC,mBAGE,SAAAE,EAAsBlsC,EAAwBqvB,GAAxB53B,KAAAuI,KAAAA,EAAwBvI,KAAA43B,OAAAA,EA6ChD,OA1CE6c,EAAAv0C,UAAAw0C,SAAA,SAASzzC,EAAa0zC,GACpB30C,KAAK43B,OAAO32B,GAAO0zC,GAGrBF,EAAAv0C,UAAAgb,KAAA,SAAKja,EAAaoB,GACXrC,KAAK43B,OAAO32B,IAGjBjB,KAAK40C,QAAW50C,KAAKuI,KAAI,IAAItH,EAAOjB,KAAK43B,OAAO32B,GAAKmE,OAAO/C,KAG9DoyC,EAAAv0C,UAAA6a,IAAA,SAAI9Z,GACF,GAAKjB,KAAK43B,OAAO32B,GAAjB,CAGA,IAAIoB,EAAQrC,KAAK60C,QAAW70C,KAAKuI,KAAI,IAAItH,GAIzC,OAHc,OAAVoB,IACFA,EAAQrC,KAAK43B,OAAO32B,GAAKuzC,cAEvBnyC,MAAAA,EACKA,EAEFrC,KAAK43B,OAAO32B,GAAKiE,QAAQ7C,KAGlCoyC,EAAAv0C,UAAA2b,MAAA,uBACE,IAAoB,IAAA9W,EAAAd,EAAAzE,OAAOwF,KAAKhF,KAAK43B,SAAO3yB,EAAAF,EAAAxC,QAAA0C,EAAAtC,KAAAsC,EAAAF,EAAAxC,OAAE,CAAzC,IAAMoyC,EAAK1vC,EAAA5C,MACdrC,KAAK80C,WAAWH,uGAIVF,EAAAv0C,UAAA20C,QAAV,SAAkB5zC,GAChB,MAAM,IAAI8zC,MAAM,4CAA4C/0C,KAAI,qBAGxDy0C,EAAAv0C,UAAA00C,QAAV,SAAkB3zC,EAAaoB,GAC7B,MAAM,IAAI0yC,MAAM,4CAA4C/0C,KAAI,qBAGxDy0C,EAAAv0C,UAAA40C,WAAV,SAAqB7zC,GACnB,MAAM,IAAI8zC,MAAM,+CAA+C/0C,KAAI,qBAEvEy0C,oBCpEA,SAAAO,mDAgBA,OAhBwCl1C,EAAAk1C,EAAAjvC,GAC5BivC,EAAA90C,UAAA00C,QAAV,SAAkB3zC,EAAaoB,GAC7B4yC,aAAaL,QAAQ3zC,EAAKi0C,KAAKC,UAAU9yC,KAGjC2yC,EAAA90C,UAAA20C,QAAV,SAAkB5zC,GAChB,IACE,OAAOi0C,KAAKE,MAAMH,aAAaJ,QAAQ5zC,IACvC,MAAOuB,GACP,SAIMwyC,EAAA90C,UAAA40C,WAAV,SAAqB7zC,GACnBg0C,aAAaH,WAAW7zC,IAE5B+zC,GAhBwCP,aCFxBY,GAAU9sC,GACxB,IACM+sC,GADQ,KAAKC,SAASC,QACRxtC,MAAM,KAAKO,EAAI,KACnC,OAAqB,IAAjB+sC,EAAM30C,OACD20C,EAAMvxC,MAAMiE,MAAM,KAAKytC,QAEzB,cCEOC,GAAaC,GAC3B,MAAO,CACL,CAACC,IAAK,mBAAoBC,MAAO,UAAWC,KAAM,mBAAmBH,EAAM,wBAC3E,CAACC,IAAK,OAAQ3jC,KAAM,YAAa4jC,MAAO,QAASC,KAAM,mBAAmBH,EAAM,qBAChF,CAACC,IAAK,OAAQ3jC,KAAM,YAAa4jC,MAAO,QAASC,KAAM,mBAAmBH,EAAM,qBAChF,CAACC,IAAK,gBAAiBE,KAAM,mBAAmBH,EAAM,eACtD,CAACC,IAAK,WAAYE,KAAM,mBAAmBH,EAAM,oBACjD,CAACC,IAAK,YAAaE,KAAM,mBAAmBH,EAAM,wBAAyBI,MAAO,8BCJpF,SAAAC,EACUC,EACAnyB,EACqBoyB,GAFrBl2C,KAAAi2C,SAAAA,EACAj2C,KAAA8jB,cAAAA,EACqB9jB,KAAAk2C,WAAAA,EALvBl2C,KAAAm2C,UAAYC,EAAAA,kBAAkBp2C,KAAKk2C,YAyB7C,OAhBEF,EAAA91C,UAAAm2C,UAAA,SAAUC,EAAuB/zC,GAC/B,IAAKvC,KAAKm2C,UACR,OAAO5zC,EAAKg0C,OAAOD,GAErB,IAAMrX,EAASj/B,KAAK8jB,cAAc/I,IAAI,UAClCkkB,IAAWqX,EAAI5C,IAAItmC,OAAO,EAAG6xB,EAAOt+B,UACtC21C,EAAMA,EAAIE,MAAM,CAACC,iBAAiB,KAEpC,IAAMC,EAAOrB,GAAU,aAMvB,OALIqB,IACFJ,EAAMA,EAAIE,MAAM,CACdG,WAAY,CAACC,cAAeF,MAGzBn0C,EAAKg0C,OAAOD,6CApBDO,EAAAA,gBACKz6B,mCACtBK,EAAAA,OAAM9U,KAAA,CAACmvC,EAAAA,kBANCd,EAAqBl1C,EAAA,CADjCob,EAAAA,aAOIza,EAAA,EAAAgb,EAAAA,OAAOq6B,EAAAA,eANCd,+Q/FHc,89C5BHa,wCACN,iCAED,iCADC,kqC4HiBLe,GAC3B,IAWA9kC,EAXM+kC,GAWN/kC,EAXmB8kC,GAaeE,MAAShlC,EAA0BilC,KAZ/DC,EAAYH,EAAYI,UAC9BL,EAAQM,sBAAwB,IAAItE,EAAAA,QACnCiE,EAAYI,UAAY,WACvBL,EAAQM,sBAAsB90C,OAC9Bw0C,EAAQM,sBAAsB17B,WAC9Bw7B,EAASt2C,MAAMb,2ZFTYu1C,EAAoB+B,eAC7C3B,EAAS,GACO,cAAhB2B,IACF3B,EAAS,QAEX,IAAM7wC,EAAO4wC,GAAaC,OAC1B,IAAmB,IAAA4B,EAAAtzC,EAAAa,GAAI0yC,EAAAD,EAAAh1C,QAAAi1C,EAAA70C,KAAA60C,EAAAD,EAAAh1C,OAAE,CAApB,IAAMmD,EAAI8xC,EAAAn1C,MACP2N,EAAOulC,EAASkC,cAAc,YACpC,IAAkB,IAAAxyC,GAAAyyC,OAAA,EAAAzzC,EAAAzE,OAAOwF,KAAKU,KAAK6qC,EAAAtrC,EAAA1C,QAAAguC,EAAA5tC,KAAA4tC,EAAAtrC,EAAA1C,OAAE,CAAhC,IAAMtB,EAAGsvC,EAAAluC,MACZ2N,EAAK2nC,aAAa12C,EAAKyE,EAAKzE,sGAE9Bs0C,EAASqC,KAAKC,YAAY7nC,qIEhBK8nC,GACjC,GAAKA,EAAU73C,YAAoBo3C,sBACjC,OAAQS,EAAU73C,YAAoBo3C,sBAExC,MAAM,IAAItC,MAAM,6GCsCgBgD,GAChC,OAAO,SAACC,GACN,IAAKA,EAAQ31C,MACX,OAAO,oD9DpDkB41C,EAAct3C,GAC3C,IAAMu3C,EAAS,GACTC,EAAc3qC,KAAK4qC,KAAKH,EAAMt3C,OAASA,GAC7C,GAAoB,IAAhBw3C,EACF,MAAO,CAACF,GAEV,IAAK,IAAIz3C,EAAI,EAAGA,EAAI23C,EAAa33C,IAC/B03C,EAAOl0C,KAAKi0C,EAAMvxC,MAAMlG,EAAIG,GAASH,EAAI,GAAKG,IAEhD,OAAOu3C,4C+DhBsB5yC,GAC7B,OAAO9F,OAAOwF,KAAKM,GAChB4B,KAAI,SAAAtD,GAAK,OAAA0B,EAAU1B,MACnBsJ,QAAO,SAAAtJ,GAAK,OAAc,IAAd2B,OAAO3B,MACnBsD,KAAI,SAAAtD,GAAK,OAACA,+CCFaU,EAAOyV,EAAes+B,QAAf,IAAAt+B,IAAAA,GAAA,QAAe,IAAAs+B,IAAAA,GAAA,KAC1C/zC,GAA2B,IAAjBA,EAAM8M,QAAiC,MAAjB9M,EAAM8M,QAAqB2I,GAA0B,IAAjBzV,EAAM8M,SAC9EknC,EAAAA,iBAAiBh0C,GAGd+zC,GACHE,QAAQj0C,MAAMA,+BCPhB,IAAMk0C,EAAW,4BAA4BxwC,MAAM,KAKnD,GAAK,iBAAkBywC,QAAYA,OAAeC,eAAiBnD,oBAAqBkD,OAAeC,cACrG,OAAO,EAKT,IAVYC,EAUNhhB,EAAQ,CAAC,IAAK6gB,EAASrrC,KAAK,oBAAqB,SAAU,KAAKA,KAAK,IAC3E,OAXYwrC,EAWFhhB,EAVD8gB,OAAOG,WAAWD,GAAGE,uDCDhBC,EAAqBC,GAClCv5C,OAAeqiC,OAAOkX,EAAUC,UAAU3+B,SAAQ,SAAA29B,GACjDA,EAAQiB,gBACRjB,EAAQkB,cAEJlB,aAAmBmB,EAAAA,UACrBL,EAAqBd,GACZA,EAAQgB,UACjBhB,EAAQgB,SAAS3+B,SAAQ,SAAAlZ,GACnBA,aAAag4C,EAAAA,UACfL,EAAqB33C,IAErBA,EAAE83C,gBACF93C,EAAE+3C,gDJP2B,SAACE,GACtC,OAAO,SAACj4C,GACN,OAAOA,EAAEkB,MAAM1B,OAASy4C,EACpB,CAACC,eAAgB,CAACC,OAAO,IACzB,mCrGcyBx0C,EAAaY,EAAWsU,GACvD,OAAKra,MAAMkG,QAAQf,GAGZA,EAAKoC,KAAI,SAAAtD,GACd,GAAIoW,GAAiBC,GAAWD,IAC9B,IAAKA,EAAcpW,GACjB,OAAOA,OAEJ,GAAIA,EAAEc,KAAOgB,EAAKhB,GACvB,OAAOd,EAET,OAAOpE,OAAOa,OAAOuD,EAAG8B,MAVjBZ,sFqGJiB,SAACkzC,GAE3B,OAAKA,EAAQ31C,OADF,wBACck3C,KAAKvB,EAAQ31C,OAC7B,KAEF,CAACm3C,YAAa,CAACF,OAAO,qBAGF,SAACG,EAAyCC,EAAkBC,QAAlB,IAAAD,IAAAA,GAAA,QAAkB,IAAAC,IAAAA,EAAA,IACvF,IAAMC,EAAUC,EAAAA,GAAG,MAAM5+B,KACvB6+B,EAAAA,MAAM,MAER,OAAO,SAAC9B,GACN,OAAI2B,EAAOp3B,QAAQy1B,EAAQ31C,QAAU,EAC5Bw3C,EAAAA,GAAG,MAELD,EAAQ3+B,KACb8+B,EAAAA,WAAU,WAAM,OAAAN,EAAYO,WAAWhC,EAAQ31C,MAAOq3C,GAAWz+B,KAC/D/T,EAAAA,KAAI,SAAAoyC,GAAS,OAAAA,EAAQ,KAAO,CAACW,YAAY,6BA1BpB,SAACjC,GAC5B,OAAKA,EAAQ31C,MAIW,MADV,GAAG21C,EAAQ31C,OAAQ63C,QAAQ,OAAQ,IACpCv5C,OAAgB,KAAO,CAACw5C,aAAc,CAACb,OAAO,IAHlD,oBA8BgB,SAACtB,GAE1B,OAAKA,EAAQ31C,OADF,gFACck3C,KAAKvB,EAAQ31C,OAC7B,KAEF,CAAC+3C,YAAY","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export const HockeyPenaltyTypes = [\n {id: 1, code: 'ÐÐÐ ÐС', title: 'ÐгÑеÑÑÐ¾Ñ Ð² дÑаке'},\n {id: 2, code: 'ÐТ-Ð-ÐÐÐ', title: 'ÐÑака в Ð³Ð¾Ð»Ð¾Ð²Ñ Ð¸Ð»Ð¸ ÑеÑ'},\n {id: 3, code: 'ÐТ-ÐÐ ', title: 'ÐÑака вÑаÑаÑÑ'},\n {id: 4, code: 'ÐТ-СÐ', title: 'ÐÑака Ñзади'},\n {id: 5, code: 'ÐÐÐÐ', title: 'ÐлокиÑовка'},\n {id: 6, code: 'ÐÐ -ÐÐ', title: 'ÐÑоÑок клÑÑки'},\n {id: 7, code: 'ÐÐ-ШÐ', title: 'ÐÑбÑÐ¾Ñ ÑайбÑ'},\n {id: 8, code: 'ÐРУÐ', title: 'ÐÑÑбоÑÑÑ'},\n {id: 9, code: 'ÐÐСЦ', title: 'ÐиÑÑиплинаÑнÑй ÑÑÑаÑ'},\n {id: 10, code: 'ÐÐС-ÐÐ', title: 'ÐиÑÑиплинаÑнÑй до конÑа маÑÑа'},\n {id: 11, code: 'ÐÐ ÐÐÐ', title: 'ÐÑака'},\n {id: 12, code: 'ÐÐЧÐÐ', title: 'ÐаÑинÑик дÑаки'},\n {id: 13, code: 'ÐÐ-ÐÐ', title: 'ÐадеÑжка игÑÑ'},\n {id: 14, code: 'ÐÐ-ÐÐ-СÐ', title: 'ÐадеÑжка клÑÑки ÑопеÑника'},\n {id: 15, code: 'ÐÐ-ÐÐ', title: 'ÐадеÑжка клÑÑкой'},\n {id: 16, code: 'ÐÐ-СÐ', title: 'ÐадеÑжка ÑопеÑника'},\n {id: 17, code: 'ÐÐ-ШÐ', title: 'ÐадеÑжка ÑÐ°Ð¹Ð±Ñ ÑÑками'},\n {id: 18, code: 'СÐ-ÐÐ', title: 'ÐгÑа Ñо Ñломанной клÑÑкой'},\n {id: 19, code: 'ÐÐ-ÐÐ', title: 'ÐгÑа вÑÑоко поднÑÑой клÑÑкой'},\n {id: 20, code: 'ÐÐ-УÐ', title: 'ÐолÑÑий ÑдаÑ'},\n {id: 21, code: 'СÐ-ШТ', title: 'ÐалÑй ÑкамееÑнÑй ÑÑÑаÑ'},\n {id: 22, code: 'ÐШ', title: 'ÐаÑÑ-ÑÑÑаÑ'},\n {id: 23, code: 'ÐÐ-ÐТ', title: 'ÐепÑавилÑÐ½Ð°Ñ Ð°Ñака'},\n {id: 24, code: 'ЧС-СТ', title: 'ÐаÑÑÑение ÑиÑленного ÑоÑÑава'},\n {id: 25, code: 'ÐС-ÐÐ', title: 'ÐеÑÑандаÑÑÐ½Ð°Ñ ÐºÐ»ÑÑка'},\n {id: 26, code: 'ÐÐÐ -ÐÐ', title: 'ÐпаÑное ÑнаÑÑжение'},\n {id: 27, code: 'ÐС-ÐÐ', title: 'ÐÑкоÑбление ÑÑдей и неÑпоÑÑивное поведение'},\n {id: 28, code: 'ÐТ-ÐÐ', title: 'ÐÑказ наÑаÑÑ Ð¸Ð³ÑÑ'},\n {id: 29, code: 'ÐТСЧ', title: 'ÐÑÑеÑение'},\n {id: 30, code: 'ÐÐÐÐÐÐ', title: 'Ðлевок'},\n {id: 31, code: 'ÐÐÐÐ', title: 'Ðодножка'},\n {id: 32, code: 'ÐÐÐС', title: 'ÐодÑеÑка'},\n {id: 33, code: 'ÐÐ -ÐÐ', title: 'ÐÑедÑпÑеждение инÑекÑий'},\n {id: 34, code: 'ÐÐ-СÐ', title: 'Ðокидание Ñкамейки во вÑÐµÐ¼Ñ ÐºÐ¾Ð½ÑликÑа'},\n {id: 35, code: 'СÐ-ÐÐ ', title: 'Сдвиг воÑоÑ'},\n {id: 36, code: 'СÐÐ', title: 'СимÑлÑÑиÑ'},\n {id: 37, code: 'ТÐ-ÐÐ ', title: 'ТолÑок на боÑÑ'},\n {id: 38, code: 'ТÐ-ÐÐ', title: 'ТолÑок клÑÑкой'},\n {id: 39, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ Ð³Ð¾Ð»Ð¾Ð²Ð¾Ð¹'},\n {id: 40, code: 'УÐ-ÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ»ÑÑкой'},\n {id: 41, code: 'УÐ-Ð-ÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ¾Ð½Ñом клÑÑки'},\n {id: 42, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ ÐºÐ¾Ð»ÐµÐ½Ð¾Ð¼'},\n {id: 43, code: 'УÐ-ÐÐÐ', title: 'Ð£Ð´Ð°Ñ Ð»Ð¾ÐºÑем'},\n {id: 44, code: 'УÐ-ÐÐ', title: 'Ð£Ð´Ð°Ñ Ð½Ð¾Ð³Ð¾Ð¹'},\n {id: 45, code: 'УÐУС', title: 'УкÑÑ'},\n {id: 46, code: 'ÐÐ-ÐÐ ', title: 'ФизиÑеÑкий конÑÐ°ÐºÑ Ñо зÑиÑелем'},\n {id: 47, code: 'ШТ-ÐÐ ', title: 'ШÑÑÐ°Ñ Ð²ÑаÑаÑÑ'}\n];\n","import { HockeyPenaltyTypes } from '../localization/hockey-penalty-types';\n\nexport const MODEL_MAPPING_FIELDS_KEY = '_mapping_fields_';\nexport const MODEL_RELATION_KEY = '_relation_';\nexport const MODEL_TO_FRONT_KEY = '_to_front_';\nexport const MODEL_TO_BACK_KEY = '_to_back_';\n\ntype ParserInterface = (dto: any, path?: GraphPathInterface) => any;\n\ninterface ModelTypeInterface {\n new(data?: any);\n}\n\nexport interface ModelInterface {\n toFront(dto: any): any;\n toBack(dto: any): any;\n}\n\nexport abstract class BaseModel {\n constructor(data?: {[key: string]: any}) {\n if (data) {\n for (const key of Object.keys(data)) {\n this[key] = data[key];\n }\n }\n }\n\n static toFront(dto: any): any {\n return undefined;\n }\n\n static toBack(dto: any): any {\n return undefined;\n }\n}\n\ninterface GraphPathInterface {\n [key: string]: any;\n}\n\nexport function enumField(enumClass) {\n return {\n toFront: (value) => {\n if (isNaN(+value)) {\n return enumClass[value];\n } else {\n return value;\n }\n },\n toBack: (value) => {\n if (isNaN(+value)) {\n return value;\n } else {\n return enumClass[value];\n }\n }\n };\n}\n\nexport function penaltyTypeField() {\n return {\n toFront: (data) => {\n if (!data) {\n return null;\n }\n if (typeof data === 'object') {\n return data;\n }\n return HockeyPenaltyTypes.find(item => item.id === data);\n },\n toBack: (data) => {\n if (!data) {\n return null;\n }\n if (typeof data === 'object') {\n return data.id;\n }\n return data;\n }\n };\n}\n\nexport function listField(modelClass) {\n return {\n toFront: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return modelClass.toFront(value);\n },\n toBack: (value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return modelClass.toBack(value);\n }\n };\n}\n\nexport class DateField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return dateUtc.toISOString().slice(0, 10);\n } else {\n return undefined;\n }\n }\n}\n\nexport class DateTimeField extends BaseModel {\n static toFront(date: any): any {\n if (date) {\n return new Date(date);\n } else {\n return undefined;\n }\n }\n static toBack(date: Date): any {\n if (date) {\n const dateUtc = new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds())\n );\n return date.toISOString();\n } else {\n return undefined;\n }\n }\n}\n\nexport function ModelInstance(\n config: {\n mappingFields?: { [key: string]: string },\n relation?: { [key: string]: BaseModel }\n }\n) {\n return (target: ModelTypeInterface) => {\n if (config) {\n if (config.mappingFields) {\n target[MODEL_MAPPING_FIELDS_KEY] = config.mappingFields;\n }\n if (config.relation) {\n target[MODEL_RELATION_KEY] = config.relation;\n }\n target[MODEL_TO_FRONT_KEY] = (dto: any, path: GraphPathInterface) => {\n return toFront(target, dto, path);\n };\n target[MODEL_TO_BACK_KEY] = (dto: any, path: GraphPathInterface) => {\n return toBack(target, dto, path);\n };\n }\n };\n}\n\nexport const ToFrontHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_FRONT_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0], (args.length > 1 ? args[1] : undefined));\n }\n return undefined;\n }\n };\n};\n\nexport const ToBackHook = (target: ModelTypeInterface, key: string | symbol, descriptor: TypedPropertyDescriptor<Function>) => {\n return {\n value: (...args: any[]) => {\n const parseMethod = target[MODEL_TO_BACK_KEY] as ParserInterface;\n if (parseMethod) {\n return parseMethod(args[0]);\n }\n return undefined;\n }\n };\n};\n\nfunction extractValue(key, data) {\n if (!data) {\n return undefined;\n }\n\n const keyParts = key.split('.');\n if (keyParts.length === 1) {\n if (key in data) {\n return data[key];\n } else {\n return undefined;\n }\n }\n\n for (const k of keyParts) {\n if (data && k in data) {\n data = data[k];\n } else {\n return undefined;\n }\n }\n\n return data;\n}\n\nfunction toFront(modelType: ModelTypeInterface, data: any, path?: GraphPathInterface): any {\n // Check if recursion is required\n if (Array.isArray(data)) {\n return data.map(item => {\n return toFront(modelType, item);\n });\n }\n\n const instance = new modelType();\n\n // Mapping fields\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n const value = extractValue(backField, data);\n if (relation && relation.hasOwnProperty(frontField)) {\n instance[frontField] = relation[frontField].toFront(value);\n } else {\n instance[frontField] = value;\n }\n }\n }\n\n return instance;\n}\n\nfunction toBack(modelType: ModelTypeInterface, instance: any, path?: GraphPathInterface): any {\n if (!instance) {\n return instance;\n }\n\n // Check if recursion is required\n if (Array.isArray(instance)) {\n return instance.map(item => {\n return toBack(modelType, item);\n });\n }\n\n const data = {};\n const mappingFields = modelType[MODEL_MAPPING_FIELDS_KEY] as string[];\n const relation = modelType[MODEL_RELATION_KEY] as { [key: string]: ModelInterface };\n if (mappingFields) {\n for (const backField of Object.keys(mappingFields)) {\n const frontField = mappingFields[backField];\n if (relation && relation.hasOwnProperty(frontField) && instance[frontField] !== undefined) {\n data[backField] = relation[frontField].toBack(instance[frontField]);\n } else {\n data[backField] = instance[frontField];\n }\n }\n }\n\n return data;\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n original_name: 'originalName',\n path: 'path',\n resized_path: 'resizedPath',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n created_at: 'createdAt',\n },\n relation: {\n engine: enumField(FileEngine),\n createdAt: DateTimeField,\n }\n})\nexport class File {\n id: number;\n name: string;\n _originalName: string;\n _path: string;\n resizedPath: string;\n mimeType: string;\n size: number;\n engine: FileEngine;\n createdAt: Date;\n\n set originalName(name: string) {\n this._originalName = name;\n }\n\n get originalName(): string {\n return this._originalName || this.name;\n }\n\n set path(filePath: string) {\n this._path = filePath;\n }\n\n get path(): string {\n return this.resizedPath || this._path;\n }\n\n @ToFrontHook\n static toFront(data: any): File {\n return null;\n }\n\n @ToBackHook\n static toBack(file: File): any {\n return null;\n }\n}\n","import {ModelInstance, ToFrontHook, ToBackHook, BaseModel} from './util';\n\nexport enum SportTypes {\n basketball = 1,\n volleyball = 2,\n classic_basketball = 3,\n streetball = 4,\n classic_volleyball = 5,\n beach_volleyball = 6,\n hockey = 7,\n ice_hockey = 8,\n ball_hockey = 9,\n football = 10,\n classic_football = 11,\n mini_football = 12,\n handball = 13,\n handball_classic = 14\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n parent_id: 'parentId',\n sub_sports: 'subSports'\n }\n})\nexport class Sport extends BaseModel {\n id: number;\n name: string;\n parentId: number;\n subSports: Sport[];\n\n isBasketball() {\n return this.id === SportTypes.basketball || this.parentId === SportTypes.basketball;\n }\n\n isClassicBasketball() {\n return this.id === SportTypes.classic_basketball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\n }\n\n isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isClassicVolleyball() {\n return this.id === SportTypes.classic_volleyball;\n }\n\n isBeachVolleyball() {\n return this.id === SportTypes.beach_volleyball;\n }\n\n isHockey(): boolean {\n return this.id === SportTypes.hockey || this.parentId === SportTypes.hockey;\n }\n\n isIceHockey(): boolean {\n return this.id === SportTypes.ice_hockey;\n }\n\n isBallHockey(): boolean {\n return this.id === SportTypes.ball_hockey;\n }\n\n isFootball() {\n return this.id === SportTypes.football || this.parentId === SportTypes.football;\n }\n\n isClassicFootball() {\n return this.id === SportTypes.classic_football;\n }\n\n isMiniFootball() {\n return this.id === SportTypes.mini_football;\n }\n\n isHandball() {\n return this.id === SportTypes.handball || this.parentId === SportTypes.handball;\n }\n\n isHandballClassic() {\n return this.id === SportTypes.handball_classic;\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(sport: Sport): any {\n return null;\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameBasketballPosition {\n point_guard = 1,\n shooting_guard,\n small_forward,\n power_forward,\n center\n}\n\nexport enum WorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameBasketballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class BasketballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameBasketballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n height: 'height',\n weight: 'weight'\n }\n})\nexport class UserProfile {\n id: number;\n userId: number;\n height: number;\n weight: number;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name'\n }\n})\nexport class City extends BaseModel {\n id: number;\n name: string;\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameVolleyballPosition {\n setter = 1,\n libero,\n middle_player,\n receiver_attacker,\n dioganal\n}\n\nexport enum VolleyballWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameVolleyballPosition),\n workHand: enumField(VolleyballWorkHand)\n }\n})\nexport class VolleyballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameVolleyballPosition;\n workHand: VolleyballWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameHockeyPosition {\n defensemen = 1,\n forward,\n goaltender\n}\n\nexport enum HockeyWorkHand {\n left = 1,\n right\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHockeyPosition),\n workHand: enumField(HockeyWorkHand)\n }\n})\nexport class HockeyProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHockeyPosition;\n workHand: HockeyWorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum GameFootballPosition {\n defensemen = 1,\n midfielder,\n forward,\n goalkeeper\n}\n\nexport enum FootballWorkFoot {\n left = 1,\n right,\n both\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_foot: 'workFoot'\n },\n relation: {\n position: enumField(GameFootballPosition),\n workFoot: enumField(FootballWorkFoot)\n }\n})\nexport class FootballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameFootballPosition;\n workFoot: FootballWorkFoot;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { WorkHand } from './basketball-profile';\n\nexport enum GameHandballPosition {\n goalkeeper = 1,\n winger,\n pivot,\n centre_back,\n fullback\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n position: 'position',\n work_hand: 'workHand'\n },\n relation: {\n position: enumField(GameHandballPosition),\n workHand: enumField(WorkHand)\n }\n})\nexport class HandballProfile extends BaseModel {\n id: number;\n userId: number;\n position: GameHandballPosition;\n workHand: WorkHand;\n\n @ToFrontHook\n static toFront(value: any): any {\n }\n\n @ToBackHook\n static toBack(value: any): any {\n }\n}\n","import { BaseModel, DateField, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { UserProfile } from './user-profile';\nimport { File } from './file';\nimport { City } from './city';\nimport { BasketballProfile } from './basketball-profile';\nimport { VolleyballProfile } from './volleyball-profile';\nimport { HockeyProfile } from './hockey-profile';\nimport { FootballProfile } from './football-profile';\nimport { HandballProfile } from './handball-profile';\n\nexport enum UserGender {\n male = 1,\n female\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n last_name: 'lastName',\n first_name: 'firstName',\n middle_name: 'middleName',\n email: 'email',\n phone: 'phone',\n birth_date: 'birthDate',\n photo: 'photo',\n profile: 'profile',\n basketball_profile: 'basketballProfile',\n volleyball_profile: 'volleyballProfile',\n hockey_profile: 'hockeyProfile',\n football_profile: 'footballProfile',\n handball_profile: 'handballProfile',\n wizards: 'wizards',\n city: 'city',\n gender: 'gender',\n is_active: 'isActive',\n },\n relation: {\n birthDate: DateField,\n photo: File,\n profile: UserProfile,\n basketballProfile: BasketballProfile,\n volleyballProfile: VolleyballProfile,\n hockeyProfile: HockeyProfile,\n footballProfile: FootballProfile,\n handballProfile: HandballProfile,\n city: City,\n gender: enumField(UserGender)\n }\n})\nexport class User extends BaseModel {\n id: number;\n lastName: string;\n firstName: string;\n middleName: string;\n email: string;\n phone: string;\n birthDate: Date;\n profile: UserProfile;\n basketballProfile: BasketballProfile;\n volleyballProfile: VolleyballProfile;\n hockeyProfile: HockeyProfile;\n footballProfile: FootballProfile;\n handballProfile: HandballProfile;\n photo: File;\n wizards: string[];\n city: City;\n gender: UserGender;\n isActive: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(user: User): any {\n return null;\n }\n\n get fullName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n get age(): number {\n if (!this.birthDate) {\n return null;\n }\n const diff = (new Date()).getTime() - this.birthDate.getTime();\n return Math.floor(diff / (365 * 86400 * 1000));\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, enumField, DateField } from './util';\nimport { File } from './file';\n\nexport enum TournamentSeasonStatuses {\n open,\n in_progress,\n closed,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n status: 'status',\n start_date: 'startDate',\n closed_date: 'closedDate',\n tournaments: 'tournaments',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n status: enumField(TournamentSeasonStatuses),\n startDate: DateField,\n closedDate: DateField,\n }\n})\nexport class TournamentSeason extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n status: TournamentSeasonStatuses;\n startDate: Date;\n closedDate: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateField } from './util';\nimport { File } from './file';\nimport { Sport } from './sport';\nimport { User } from './user';\nimport { City } from './city';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n sport: 'sport',\n logo: 'logo',\n owner: 'owner',\n city: 'city',\n users_count: 'usersCount',\n won_games_count: 'wonGamesCount',\n games_count: 'gamesCount',\n score_sum: 'scoreSum',\n closest_game_datetime: 'closestGameDatetime',\n },\n relation: {\n sport: Sport,\n logo: File,\n owner: User,\n city: City,\n closestGameDatetime: DateField,\n }\n})\nexport class Team extends BaseModel {\n id: number;\n name: string;\n sport: Sport;\n logo: File;\n owner: User;\n city: City;\n usersCount: number;\n wonGamesCount: number;\n gamesCount: number;\n scoreSum: number;\n closestGameDatetime: Date;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n if (this.sport.isHandball()) {\n classList.push('empty-logo-handball');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(team: Team): any {\n return null;\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n owner_id: 'ownerId',\n owner: 'owner',\n },\n relation: {\n owner: User,\n }\n})\nexport class Organization extends BaseModel {\n id: number;\n ownerId: number;\n owner: User;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n logo: 'logo',\n contact_email: 'contactEmail',\n contact_phone: 'contactPhone',\n name: 'name',\n alias: 'alias',\n sport: 'sport',\n description: 'description',\n social_links: 'socialLinks',\n links: 'links',\n organization: 'organization',\n tournaments_count: 'tournamentsCount',\n closest_game_datetime: 'closestGameDatetime',\n cover: 'cover',\n about: 'about',\n },\n relation: {\n organization: Organization,\n logo: File,\n cover: File,\n sport: Sport,\n }\n})\nexport class League extends BaseModel {\n id: number;\n logo: File;\n contactEmail: string;\n contactPhone: string;\n name: string;\n alias: string;\n sport: Sport;\n description: string;\n socialLinks: string[];\n links: string[];\n organization: Organization;\n tournamentsCount: number;\n closestGameDatetime: string;\n cover: File;\n about: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get vkLink(): string {\n return this.socialLinks.find(link => link.substr(0, 15) === 'https://vk.com/');\n }\n\n get fbLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.facebook.com/');\n }\n\n get instaLink(): string {\n return this.socialLinks.find(link => link.substr(0, 25) === 'https://www.instagram.com');\n }\n}\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { City } from './city';\nimport { File } from './file';\nimport { League } from './league';\nimport { Sport } from './sport';\nimport { Team } from './team';\nimport { TournamentSeason } from './tournament-season';\n\nexport enum TournamentTypes {\n group = 'group',\n elimination = 'elimination',\n fiba = 'fiba'\n}\n\nexport enum TournamentStatuses {\n open,\n in_progress,\n closed,\n}\n\nexport enum TournamentGender {\n male= 1,\n female,\n all\n}\n\nexport enum BasketballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum VolleyballStatisticTypes {\n standard = 1,\n light,\n advanced\n}\n\nexport enum GameTimeTypes {\n clean = 1,\n dirty,\n}\n\nexport enum OvertimeTypes {\n to_score_total = 1,\n to_score_diff,\n time,\n without_overtime,\n to_first_goal,\n to_first_goal_and_bullitts,\n bullitts,\n penalties,\n time_and_penalties\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n gender: 'gender',\n age_from: 'ageFrom',\n age_to: 'ageTo',\n max_team_players: 'maxTeamPlayers',\n max_game_players: 'maxGamePlayers',\n type: 'type',\n tours_count: 'toursCount',\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n game_up_to_score: 'gameUpToScore',\n volleyball_score_in_set: 'volleyballScoreInSet',\n volleyball_score_in_last_set: 'volleyballScoreInLastSet',\n manage_team_application: 'manageTeamApplication',\n recruitment_is_open: 'recruitmentIsOpen',\n transfer_is_open: 'transferIsOpen',\n basketball_statistic_type: 'basketballStatisticType',\n volleyball_statistic_type: 'volleyballStatisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n with_result_table: 'withResultTable'\n },\n relation: {\n type: enumField(TournamentTypes),\n gender: enumField(TournamentGender),\n basketballStatisticType: enumField(BasketballStatisticTypes),\n volleyballStatisticType: enumField(VolleyballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n overtimeType: enumField(OvertimeTypes),\n }\n})\nexport class TournamentSettings extends BaseModel {\n id: number;\n gender: TournamentGender;\n ageFrom: number;\n ageTo: number;\n maxTeamPlayers: number;\n maxGamePlayers: number;\n type: TournamentTypes;\n toursCount: number;\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n gameType: string;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n gameUpToScore: number;\n volleyballScoreInSet: number;\n volleyballScoreInLastSet: number;\n manageTeamApplication: boolean;\n recruitmentIsOpen: boolean;\n transferIsOpen: boolean;\n basketballStatisticType: BasketballStatisticTypes;\n volleyballStatisticType: VolleyballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n withResultTable: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n team: 'team',\n points: 'points',\n },\n relation: {\n team: Team,\n }\n})\nexport class TournamentTeamWinner extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n team: Team;\n points: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n alias: 'alias',\n logo: 'logo',\n cover: 'cover',\n preview_image: 'previewImage',\n city: 'city',\n sport: 'sport',\n location: 'location',\n description: 'description',\n date: 'date',\n price: 'price',\n regulation_files: 'regulationFiles',\n settings: 'settings',\n league: 'league',\n teams_count: 'teamsCount',\n closest_game_datetime: 'closestGameDatetime',\n status: 'status',\n team_winner: 'teamWinner',\n team_second: 'teamSecond',\n team_third: 'teamThird',\n season: 'season',\n season_id: 'seasonId',\n },\n relation: {\n logo: File,\n cover: File,\n previewImage: File,\n city: City,\n sport: Sport,\n regulationFile: File,\n settings: TournamentSettings,\n date: DateTimeField,\n league: League,\n status: enumField(TournamentStatuses),\n teamWinner: TournamentTeamWinner,\n teamSecond: TournamentTeamWinner,\n teamThird: TournamentTeamWinner,\n season: TournamentSeason,\n }\n})\nexport class Tournament extends BaseModel {\n id: number;\n name: string;\n alias: string;\n logo: File;\n cover: File;\n previewImage: File;\n city: City;\n sport: Sport;\n location: string;\n description: string;\n date: Date;\n price: number;\n regulationFiles: File[];\n settings: TournamentSettings;\n league: League;\n teamsCount: number;\n closestGameDatetime: string;\n status: TournamentStatuses;\n teamWinner: TournamentTeamWinner;\n teamSecond: TournamentTeamWinner;\n teamThird: TournamentTeamWinner;\n season: TournamentSeason;\n seasonId: number;\n\n getEmptyLogoClass(): string {\n const classList = ['empty-logo'];\n if (this.sport.isBasketball()) {\n classList.push('empty-logo-basketball');\n }\n if (this.sport.isVolleyball()) {\n classList.push('empty-logo-volleyball');\n }\n if (this.sport.isHockey()) {\n classList.push('empty-logo-hockey');\n }\n if (this.sport.isFootball()) {\n classList.push('empty-logo-football');\n }\n return classList.join(' ');\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { VolleyballStatisticTypes } from './tournament';\n\nexport enum VolleyballGameTypes {\n best_of_five = 1,\n best_of_three\n}\n\n@ModelInstance({\n mappingFields: {\n game_type: 'gameType',\n timeout_count: 'timeoutCount',\n timeout_time: 'timeoutTime',\n substitute_count: 'substituteCount',\n score_in_set: 'scoreInSet',\n score_in_last_set: 'scoreInLastSet',\n statistic_type: 'statisticType'\n },\n relation: {\n gameType: enumField(VolleyballGameTypes),\n statisticType: enumField(VolleyballStatisticTypes),\n }\n})\nexport class VolleyballGameConfig extends BaseModel {\n gameType: VolleyballGameTypes;\n timeoutCount: number;\n timeoutTime: number;\n substituteCount: number;\n scoreInSet: number;\n scoreInLastSet: number;\n statisticType: VolleyballStatisticTypes;\n\n get setsCount(): number {\n return this.gameType === VolleyballGameTypes.best_of_three ? 3 : 5;\n }\n\n getSetMaxScore(set: number) {\n return set === this.setsCount ? this.scoreInLastSet : this.scoreInSet;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n game_up_to_score: 'gameUpToScore',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n overtime_score: 'overtimeScore',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n statistic_type: 'statisticType',\n shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n statisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class BasketballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n gameUpToScore: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n overtimeScore: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n statisticType: BasketballStatisticTypes;\n shotClockEnabled: boolean;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField, listField } from './util';\nimport { Team } from './team';\nimport { BasketballGameConfig } from './basketball-game-config';\nimport { VolleyballGameConfig } from './volleyball-game-config';\nimport { LeagueCourt } from './league-court';\nimport { MediaItem } from './media-item';\nimport { HockeyGameConfig } from './hockey-game-config';\nimport { Tournament } from './tournament';\nimport { FootballGameConfig } from './football-game-config';\nimport { HandballGameConfig } from './handball-game-config';\n\nexport enum GameStatuses {\n open = 1,\n in_progress,\n closed,\n archived,\n draft\n}\n\nexport enum GameResultTypes {\n team_won = 1,\n competitor_team_won,\n team_technical_defeat,\n competitor_team_technical_defeat\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n status: 'status',\n team: 'team',\n tournament_team_id: 'tournamentTeamId',\n team_id: 'teamId',\n competitor_team: 'competitorTeam',\n competitor_tournament_team_id: 'competitorTournamentTeamId',\n competitor_team_id: 'competitorTeamId',\n competitor_team_name: 'competitorTeamName',\n datetime: 'datetime',\n location: 'location',\n team_score: 'teamScore',\n competitor_team_score: 'competitorTeamScore',\n result_type: 'resultType',\n playoff_number: 'playoffNumber',\n tournament_id: 'tournamentId',\n tournament_tour: 'tournamentTour',\n basketball_game_config: 'basketballGameConfig',\n volleyball_game_config: 'volleyballGameConfig',\n hockey_game_config: 'hockeyGameConfig',\n football_game_config: 'footballGameConfig',\n handball_game_config: 'handballGameConfig',\n score_by_period: 'scoreByPeriod',\n playoff_stage: 'playoffStage',\n tournament_stage_id: 'tournamentStageId',\n tournament_playoff_id: 'tournamentPlayoffId',\n tournament_court: 'tournamentCourt',\n media_count: 'mediaCount',\n media_live_count: 'mediaLiveCount',\n media: 'media',\n tournament: 'tournament',\n },\n relation: {\n status: enumField(GameStatuses),\n team: Team,\n competitorTeam: Team,\n datetime: DateTimeField,\n resultType: enumField(GameResultTypes),\n basketballGameConfig: BasketballGameConfig,\n volleyballGameConfig: VolleyballGameConfig,\n hockeyGameConfig: HockeyGameConfig,\n footballGameConfig: FootballGameConfig,\n handballGameConfig: HandballGameConfig,\n tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\n tournament: Tournament,\n }\n})\nexport class Game extends BaseModel {\n id: number;\n status: GameStatuses;\n team: Team;\n teamId: number;\n tournamentTeamId: number;\n competitorTeam: Team;\n competitorTeamId: number;\n competitorTournamentTeamId: number;\n competitorTeamName: string;\n datetime: Date;\n location: string;\n teamScore: number;\n competitorTeamScore: number;\n archive: boolean;\n playoffNumber: string;\n tournamentId: number;\n tournamentTour: number;\n basketballGameConfig: BasketballGameConfig;\n volleyballGameConfig: VolleyballGameConfig;\n hockeyGameConfig: HockeyGameConfig;\n footballGameConfig: FootballGameConfig;\n handballGameConfig: HandballGameConfig;\n scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n mediaLiveCount: number;\n media: MediaItem[];\n tournament: Tournament;\n\n get scoreByPeriodList(): {period: number, teamScore: number, competitorTeamScore: number}[] {\n if (!this.scoreByPeriod) {\n return [];\n }\n return Object.keys(this.scoreByPeriod).map(period => ({\n period: +period,\n teamScore: this.scoreByPeriod[period][0],\n competitorTeamScore: this.scoreByPeriod[period][1]\n }));\n }\n\n get isClosed(): boolean {\n return this.status === GameStatuses.closed;\n }\n\n get isTeamWon() {\n return this.teamScore > this.competitorTeamScore;\n }\n\n get isCompetitorTeamWon() {\n return this.competitorTeamScore > this.teamScore;\n }\n\n get teamWinnerId() {\n if (this.status !== GameStatuses.closed) {\n return null;\n }\n if (this.teamScore === this.competitorTeamScore) {\n return null;\n }\n if (this.team.id) {\n return this.teamScore > this.competitorTeamScore ? this.team.id : this.competitorTeam.id;\n } else {\n return this.teamScore > this.competitorTeamScore ? this.teamId : this.competitorTeamId;\n }\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n address: 'address',\n league_id: 'leagueId'\n }\n})\nexport class LeagueCourt extends BaseModel {\n id: number;\n name: string;\n address: string;\n leagueId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n original_photo: 'originalPhoto',\n list_photo: 'listPhoto',\n detail_photo: 'detailPhoto',\n game: 'game',\n tournament: 'tournament',\n game_id: 'gameId',\n tournament_id: 'tournament_id',\n video_url: 'videoUrl',\n video_preview: 'videoPreview',\n is_live: 'isLive',\n },\n relation: {\n originalPhoto: File,\n listPhoto: File,\n detailPhoto: File,\n videoPreview: File\n }\n})\nexport class MediaItem extends BaseModel {\n id: number;\n originalPhoto: File;\n listPhoto: File;\n detailPhoto: File;\n gameId: number;\n tournamentId: number;\n videoUrl: string;\n videoPreview: File;\n isLive: boolean;\n\n get isVideo(): boolean {\n return Boolean(this.videoUrl);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HockeyGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class FootballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { GameTimeTypes, OvertimeTypes } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n periods_count: 'periodsCount',\n period_time: 'periodTime',\n overtime_type: 'overtimeType',\n overtime_time: 'overtimeTime',\n max_game_players: 'maxGamePlayers',\n timeout_count: 'timeoutCount',\n overtime_timeout_count: 'overtimeTimeoutCount',\n timeout_time: 'timeoutTime',\n game_time_type: 'gameTimeType',\n },\n relation: {\n overtimeType: enumField(OvertimeTypes),\n gameTimeType: enumField(GameTimeTypes),\n }\n})\nexport class HandballGameConfig extends BaseModel {\n periodsCount: number;\n periodTime: number;\n overtimeType: OvertimeTypes;\n overtimeTime: number;\n maxGamePlayers: number;\n timeoutCount: number;\n overtimeTimeoutCount: number;\n timeoutTime: number;\n gameTimeType: GameTimeTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n","export function updateItemInArray(data: any[], item: any, force = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n if (v.updatedAt && item.updatedAt && !force) {\n return v.updatedAt > item.updatedAt ? v : item;\n }\n return item;\n });\n}\n\nexport function updateItemsInArray(data: any[], items: any[], force: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n items.forEach(item => {\n data = updateItemInArray(data, item, force, checkFunction);\n });\n return data;\n}\n\nexport function patchItemInArray(data: any[], item: any, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return data;\n }\n return data.map(v => {\n if (checkFunction && isFunction(checkFunction)) {\n if (!checkFunction(v)) {\n return v;\n }\n } else if (v.id !== item.id) {\n return v;\n }\n return Object.assign(v, item);\n });\n}\n\nexport function addItemInArray(data: any[], item: any, atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n if (!Array.isArray(data)) {\n return [item];\n }\n if (data.find(i => isFunction(checkFunction) ? checkFunction(i) : i.id === item.id)) {\n return data;\n }\n\n return atEnd\n ? [...data, item]\n : [item, ...data];\n}\n\nexport function addItemsInArray(data: any[], items: any[], atEnd: boolean = false, checkFunction?: (item: any) => boolean): any[] {\n (!atEnd\n ? Object.assign([], items).reverse()\n : items\n ).forEach(item => {\n data = addItemInArray(data, item, atEnd, checkFunction);\n });\n return data;\n}\n\nexport function deleteItemFromArray(data: any[], item: any): any[] {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isFunction(item)) {\n return data.filter(i => !item(i));\n } else {\n return data.filter(v => v.id !== item.id);\n }\n}\n\nfunction isFunction(functionToCheck) {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n}\n","import { BaseModel, enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\nexport enum TeamUserRole {\n member = 1,\n moderator,\n admin,\n coach,\n head_coach,\n playing_coach,\n manager,\n head_manager,\n captain,\n assistant,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n user: 'user',\n role: 'role',\n number: 'number',\n team: 'team',\n },\n relation: {\n user: User,\n team: Team,\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamUser extends BaseModel {\n id: number;\n teamId: number;\n user: User;\n team: Team;\n number: number;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(teamPlayer: TeamUser): any {\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { addItemInArray, addItemsInArray, deleteItemFromArray, updateItemInArray, updateItemsInArray } from '../utils/data';\nimport { StorageEngine } from './storage-engine';\n\nexport class Store {\n private data: {[key: string]: BehaviorSubject<any>} = {};\n\n constructor(private engine?: StorageEngine) {\n }\n\n get(key: string): Observable<any> {\n return this.getSubject(key).pipe(filter(item => item !== undefined));\n }\n\n value(key: string): any {\n return this.getSubject(key).value;\n }\n\n save(key: string, value: any): void {\n this.getSubject(key).next(value);\n if (this.engine) {\n this.engine.save(key, value);\n }\n }\n\n appendItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, true, checkFunction));\n }\n\n appendItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, true));\n }\n\n prependItem(key: string, value: any, checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n prependItems(key: string, value: any[], checkFunction?: (item: any) => boolean): void {\n this.save(key, addItemsInArray(this.value(key) || [], value, false, checkFunction));\n }\n\n updateItem(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n updateItems(key: string, value: any, force?: boolean, checkFunction?: (item: any) => boolean): void {\n this.save(key, updateItemsInArray(this.value(key) || [], value, force, checkFunction));\n }\n\n deleteItem(key: string, value: any): void {\n this.save(key, deleteItemFromArray(this.value(key) || [], value));\n }\n\n dispose(): void {\n for (const key of Object.keys(this.data)) {\n this.data[key].complete();\n delete this.data[key];\n }\n }\n\n clearStorageData(): void {\n if (this.engine) {\n this.engine.clear();\n }\n }\n\n getEngine(): StorageEngine {\n return this.engine;\n }\n\n private getSubject(key: string): BehaviorSubject<any> {\n if (!this.data[key]) {\n this.data[key] = new BehaviorSubject<any>(this.engine ? this.engine.get(key) : undefined);\n }\n return this.data[key];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '../storage/store';\n\n@Injectable({providedIn: 'root'})\nexport class BaseService {\n protected store = new Store();\n\n dispose(): void {\n this.store.dispose();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BaseService } from './base.service';\n\nconst CONFIG_STORE_KEY = 'config';\n\nexport const CONFIG_DATA = 'mtg-core-config-data';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigService extends BaseService {\n constructor(\n @Optional() @Inject(CONFIG_DATA) private configData: any\n ) {\n super();\n if (configData) {\n this.initialize(configData);\n }\n }\n\n get config$() {\n return this.store.get(CONFIG_STORE_KEY);\n }\n\n get config() {\n return this.store.value(CONFIG_STORE_KEY) || {};\n }\n\n initialize(data: any): void {\n this.store.save(CONFIG_STORE_KEY, data);\n }\n\n set(key: string, value: any): void {\n this.store.save(CONFIG_STORE_KEY, {\n ...this.config,\n [key]: value\n });\n }\n\n get(key: string): any {\n return this.store.value(CONFIG_STORE_KEY) && this.store.value(CONFIG_STORE_KEY)[key];\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n tournament_stage_id: 'tournamentStageId'\n }\n})\nexport class TournamentGroup extends BaseModel {\n id: number;\n name: string;\n tournamentStageId: number;\n teams: TournamentTeam[];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { TournamentGroup } from './tournament-group';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n tournament_id: 'tournamentId',\n tournament: 'tournament',\n team: 'team',\n group: 'group',\n final_standing: 'finalStanding',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n draw_games_count: 'drawGamesCount',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n score_points_sum: 'scorePointsSum',\n missed_points_sum: 'missedPointsSum',\n points: 'points',\n users_count: 'usersCount',\n games: 'games',\n notifications_count: 'notificationsCount',\n win_normal_time_games_count: 'winNormalTimeGamesCount',\n lose_normal_time_games_count: 'loseNormalTimeGamesCount',\n win_overtime_games_count: 'winOvertimeGamesCount',\n lose_overtime_games_count: 'loseOvertimeGamesCount',\n last_five_games: 'lastFiveGames'\n },\n relation: {\n tournament: Tournament,\n team: Team,\n group: TournamentGroup,\n games: Game,\n lastFiveGames: Game,\n }\n})\nexport class TournamentTeam extends BaseModel {\n id: number;\n teamId: number;\n tournamentId: number;\n tournament: Tournament;\n team: Team;\n group: TournamentGroup;\n finalStanding: number;\n gamesCount: number;\n wonGamesCount: number;\n drawGamesCount: number;\n lastGamesCount: number;\n lastGamesWon: number;\n scoreSum: number;\n missedSum: number;\n scorePointsSum: number;\n missedPointsSum: number;\n points: number;\n usersCount: number;\n games: Game[];\n notificationsCount: number;\n winNormalTimeGamesCount: number;\n loseNormalTimeGamesCount: number;\n winOvertimeGamesCount: number;\n loseOvertimeGamesCount: number;\n lastFiveGames: Game[];\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum BasketballGameLogTypes {\n enter_game = 1,\n exit_game,\n remove_game,\n two_point_made,\n three_point_made,\n free_throw_made,\n two_point_attempt,\n three_point_attempt,\n free_throw_attempt,\n assist,\n block,\n rebound,\n offensive_rebound,\n defensive_rebound,\n steal,\n turnover,\n personal_foul,\n technical_foul,\n unsportsmanlike_foul,\n one_point_attempt,\n one_point_made,\n timeout,\n team_rebound,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(BasketballGameLogTypes),\n }\n})\nexport class BasketballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: BasketballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n combined: BasketballGameLog;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n\n isPointsType() {\n return [\n BasketballGameLogTypes.two_point_made,\n BasketballGameLogTypes.three_point_made,\n BasketballGameLogTypes.free_throw_made,\n BasketballGameLogTypes.one_point_made,\n ].indexOf(this.logType) > -1;\n }\n\n isReboundType() {\n return [\n BasketballGameLogTypes.rebound,\n BasketballGameLogTypes.offensive_rebound,\n BasketballGameLogTypes.defensive_rebound\n ].indexOf(this.logType) > -1;\n }\n\n isFoulType() {\n return [\n BasketballGameLogTypes.personal_foul,\n BasketballGameLogTypes.technical_foul,\n BasketballGameLogTypes.unsportsmanlike_foul\n ].indexOf(this.logType) > -1;\n }\n\n getScore() {\n const scoreMapping = {\n [BasketballGameLogTypes.one_point_made]: 1,\n [BasketballGameLogTypes.free_throw_made]: 1,\n [BasketballGameLogTypes.two_point_made]: 2,\n [BasketballGameLogTypes.three_point_made]: 3\n };\n return scoreMapping[this.logType];\n }\n\n compare(model: BasketballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_user_id: 'tournamentTeamUserId',\n date_from: 'dateFrom',\n date_to: 'dateTo',\n matches_count: 'matchesCount',\n },\n relation: {\n dateFrom: DateField,\n dateTo: DateField,\n }\n})\nexport class TournamentDisqualification extends BaseModel {\n id: number;\n tournamentTeamUserId: number;\n dateFrom: Date;\n dateTo: Date;\n matchesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n league_id: 'leagueId',\n first_name: 'firstName',\n last_name: 'lastName',\n middle_name: 'middleName',\n photo: 'photo',\n has_changes: 'hasChanges',\n rating: 'rating'\n },\n relation: {\n photo: File,\n }\n})\nexport class LeaguePlayer extends BaseModel {\n\n id: number;\n userId: number;\n leagueId: number;\n firstName: string;\n lastName: string;\n middleName: string;\n photo: File;\n hasChanges: boolean;\n rating: number;\n\n get fullName(): string {\n return [this.lastName, this.firstName, this.middleName].filter(s => s).join(' ');\n }\n\n get shortName(): string {\n return [this.lastName, this.firstName].filter(s => s).join(' ');\n }\n\n get initials(): string {\n return [this.lastName, this.firstName].filter(s => s).map(s => s.substr(0, 1)).join('');\n }\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TeamUser } from './team-user';\nimport { TournamentDisqualification } from './tournament-disqualification';\nimport { LeaguePlayer } from './league-player';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n team_user: 'teamUser',\n disqualified: 'disqualified',\n disqualification: 'disqualification',\n league_player: 'leaguePlayer',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n teamUser: TeamUser,\n disqualification: TournamentDisqualification,\n leaguePlayer: LeaguePlayer,\n }\n})\nexport class TournamentTeamUser extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n teamUser: TeamUser;\n disqualified: boolean;\n disqualification: TournamentDisqualification;\n leaguePlayer: LeaguePlayer;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n free_throws_made: 'freeThrowsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n two_point_percent: 'twoPointPercent',\n three_point_percent: 'threePointPercent',\n free_throw_percent: 'freeThrowPercent',\n one_point_percent: 'onePointPercent',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n game_time: 'gameTime',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class BasketballStatistic extends BaseModel implements BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n twoPointsMade: number;\n threePointsMade: number;\n freeThrowsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n twoPointPercent: number;\n threePointPercent: number;\n freeThrowPercent: number;\n onePointPercent: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n gameTime: number;\n newbie: boolean;\n rank: number;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { BasketballStatistic } from './basketball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: BasketballStatistic,\n competitorTeam: BasketballStatistic\n }\n})\nexport class BasketballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: BasketballStatistic;\n competitorTeam: BasketballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n free_throws_made: 'freeThrowsMade',\n two_points_made: 'twoPointsMade',\n three_points_made: 'threePointsMade',\n one_points_made: 'onePointsMade',\n two_point_attempts: 'twoPointAttempts',\n three_point_attempts: 'threePointAttempts',\n free_throw_attempts: 'freeThrowAttempts',\n one_point_attempts: 'onePointAttempts',\n assists: 'assists',\n blocks: 'blocks',\n rebounds: 'rebounds',\n offensive_rebounds: 'offensiveRebounds',\n defensive_rebounds: 'defensiveRebounds',\n steals: 'steals',\n turnovers: 'turnovers',\n personal_fouls: 'personalFouls',\n technical_fouls: 'technicalFouls',\n unsportsmanlike_fouls: 'unsportsmanlikeFouls',\n updated_at: 'updatedAt',\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class BasketballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n freeThrowsMade: number;\n twoPointsMade: number;\n threePointsMade: number;\n onePointsMade: number;\n twoPointAttempts: number;\n threePointAttempts: number;\n freeThrowAttempts: number;\n onePointAttempts: number;\n assists: number;\n blocks: number;\n rebounds: number;\n offensiveRebounds: number;\n defensiveRebounds: number;\n steals: number;\n turnovers: number;\n personalFouls: number;\n technicalFouls: number;\n unsportsmanlikeFouls: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get totalFouls(): number {\n return (this.personalFouls || 0) + (this.technicalFouls || 0) + (this.unsportsmanlikeFouls || 0);\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum HockeyGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n shootout_attempt,\n shootout_goal,\n assist,\n block_shot ,\n minor_penalty ,\n major_penalty ,\n misconduct_penalty ,\n game_misconduct_penalty ,\n match_penalty ,\n penalty_shot ,\n face_off_lose ,\n face_off_win ,\n save ,\n timeout,\n penalty_start,\n penalty_end,\n}\n\nexport enum HockeyAdvantageTypes {\n power_play = 1,\n shorthanded,\n even_strength\n}\n\nexport interface PenaltyType {\n id: number;\n code: string;\n title: string;\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n advantage: 'advantage',\n advantage_num: 'advantageNum',\n is_goalie: 'isGoalie',\n penalty_type: 'penaltyType',\n penalized_game_user_id: 'penalizedGameUserId',\n mutual_penalty: 'mutualPenalty',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HockeyGameLogTypes),\n advantage: enumField(HockeyAdvantageTypes),\n penaltyType: penaltyTypeField()\n }\n})\nexport class HockeyGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HockeyGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n advantage: HockeyAdvantageTypes;\n advantageNum: number;\n isGoalie: boolean;\n penaltyType: PenaltyType;\n _penalizedGameUserId: number;\n mutualPenalty: boolean;\n\n get penalizedGameUserId(): number {\n if (this._penalizedGameUserId) {\n return this._penalizedGameUserId;\n }\n return this.gameUserId;\n }\n\n set penalizedGameUserId(value: number) {\n this._penalizedGameUserId = value;\n }\n\n compare(model: HockeyGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HockeyGameLogTypes.goal, HockeyGameLogTypes.shootout_goal].indexOf(this.logType) > -1;\n }\n\n isPenaltyType(): boolean {\n return [\n HockeyGameLogTypes.minor_penalty, HockeyGameLogTypes.major_penalty,\n HockeyGameLogTypes.misconduct_penalty, HockeyGameLogTypes.game_misconduct_penalty,\n HockeyGameLogTypes.penalty_shot, HockeyGameLogTypes.match_penalty\n ].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HockeyGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { TeamUser } from './team-user';\nimport { TournamentTeamUser } from './tournament-team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game_id: 'gameId',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n is_mvp: 'isMvp',\n updated_at: 'updatedAt'\n },\n relation: {\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n updatedAt: DateTimeField,\n }\n})\nexport class GameUser extends BaseModel {\n id: number;\n gameId: number;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n isMvp: boolean;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { GameUser } from '../models/game-user';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService,\n ) {\n }\n\n async getUsers(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/users/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n\n async getMvp(gameId: number): Promise<GameUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/mvp/`).pipe(\n map(result => GameUser.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { BasketballGameTeamStatistic } from '../models/basketball-game-team-statistic';\nimport { BasketballGameStatistic } from '../models/basketball-game-statistic';\nimport { BasketballGameLog } from '../models/basketball-game-log';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<BasketballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/team_statistic/`).pipe(\n map(result => BasketballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<BasketballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/user_statistic/`).pipe(\n map(result => BasketballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<BasketballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/logs/`).pipe(\n map(result => BasketballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n\n async downloadFibaProtocol(gameId: number, fileType: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_basketball_game/${gameId}/game_protocol_fiba/?file_type=${fileType}`,\n {responseType: 'blob'}\n )\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n theme: 'theme',\n message: 'message',\n files: 'files',\n email: 'email',\n captcha: 'captcha',\n },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: string;\n email: string;\n captcha: string;\n files: File[];\n\n @ToFrontHook\n static toFront(data: any): any {\n return null;\n }\n\n @ToBackHook\n static toBack(value: any): any {\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Feedback } from '../models/feedback';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class FeedbackApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async sendFeedback(data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n\n async sendLeagueFeedback(leagueId: number, data: any): Promise<Feedback> {\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/feedback/`, Feedback.toBack(data))\n .pipe(map(response => Feedback.toFront(response)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { File } from '../models/file';\n\n@Injectable({providedIn: 'root'})\nexport class FileApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async upload(fileData: any, filename?: string, width?: number, height?: number): Promise<File> {\n let params = new HttpParams();\n if (width && height) {\n params = params.set('width', width.toString()).set('height', height.toString());\n }\n\n const formData = new FormData();\n formData.append('file', fileData, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData, {params})\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async createZipArchive(files: {file: any, filename: string}[]): Promise<any> {\n const formData = new FormData();\n for (const file of files) {\n formData.append('files', file.file, file.filename);\n }\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/zip_archive/`, formData, {responseType: 'blob'})\n .toPromise();\n }\n}\n","import { enumField, ModelInstance, ToFrontHook, ToBackHook, BaseModel, DateTimeField, penaltyTypeField } from './util';\nimport { GameUser } from './game-user';\nimport { GameLogBase } from './game-log-base';\n\nexport enum FootballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n penalty_attempt,\n penalty_goal,\n penalty_save,\n small_penalty_attempt,\n small_penalty_goal,\n small_penalty_save,\n assist,\n block_shot,\n corner,\n free_kick,\n foul,\n save,\n yellow_card,\n red_card,\n perfect_pass,\n loss,\n steal,\n out,\n timeout,\n}\n\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(FootballGameLogTypes)\n }\n})\nexport class FootballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: FootballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: FootballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [FootballGameLogTypes.goal, FootballGameLogTypes.penalty_goal, FootballGameLogTypes.small_penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: FootballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals: 'ppGoals',\n ev_goals: 'evGoals',\n sh_goals: 'shGoals',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class HockeyGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoals: number;\n evGoals: number;\n shGoals: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shotsOnGoal(): number {\n return (this.evShotsOnGoal || 0) + (this.ppShotsOnGoal || 0) + (this.shShotsOnGoal || 0);\n }\n\n get shotsBlocked(): number {\n return (this.evShotsBlocked || 0) + (this.ppShotsBlocked || 0) + (this.shShotsBlocked || 0);\n }\n\n get shotMisses(): number {\n return (this.evShotMisses || 0) + (this.ppShotMisses || 0) + (this.shShotMisses || 0);\n }\n\n get ppShots(): number {\n return (this.ppShotMisses || 0) + (this.ppShotsOnGoal || 0) + (this.ppShotsBlocked || 0);\n }\n\n get evShots(): number {\n return (this.evShotMisses || 0) + (this.evShotsOnGoal || 0) + (this.evShotsBlocked || 0);\n }\n\n get shShots(): number {\n return (this.shShotMisses || 0) + (this.shShotsOnGoal || 0) + (this.shShotsBlocked || 0);\n }\n\n get shots(): number {\n return this.ppShots + this.evShots + this.shShots;\n }\n\n get goals(): number {\n return (this.ppGoals || 0) + (this.shGoals || 0) + (this.evGoals || 0);\n }\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.evAssists || 0) + (this.shAssists || 0);\n }\n\n get faceOffs(): number {\n return (this.faceOffWins || 0) + (this.faceOffLosses || 0);\n }\n\n get shootOuts(): number {\n return (this.shootoutAttempts || 0) + (this.shootoutGoals || 0);\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n lose_games_count: 'loseGamesCount',\n points: 'points',\n pp_shots: 'ppShots',\n pp_shot_misses: 'ppShotMisses',\n pp_shots_on_goal: 'ppShotsOnGoal',\n pp_shots_blocked: 'ppShotsBlocked',\n ev_shots: 'evShots',\n ev_shot_misses: 'evShotMisses',\n ev_shots_on_goal: 'evShotsOnGoal',\n ev_shots_blocked: 'evShotsBlocked',\n sh_shots: 'shShots',\n sh_shot_misses: 'shShotMisses',\n sh_shots_on_goal: 'shShotsOnGoal',\n sh_shots_blocked: 'shShotsBlocked',\n pp_goals_percent: 'ppGoalsPercent',\n pp_goals: 'ppGoals',\n ev_goals_percent: 'evGoalsPercent',\n ev_goals: 'evGoals',\n sh_goals_percent: 'shGoalsPercent',\n goals: 'goals',\n sh_goals: 'shGoals',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n pp_assists: 'ppAssists',\n ev_assists: 'evAssists',\n sh_assists: 'shAssists',\n shootout_attempts: 'shootoutAttempts',\n shootout_goals: 'shootoutGoals',\n block_shots: 'blockShots',\n face_off_losses: 'faceOffLosses',\n face_off_wins: 'faceOffWins',\n face_offs: 'faceOffs',\n face_off_percent: 'faceOffPercent',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n penalty_minutes: 'penaltyMinutes',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HockeyStatistic extends BaseModel implements BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n loseGamesCount: number;\n points: number;\n ppShots: number;\n ppShotMisses: number;\n ppShotsOnGoal: number;\n ppShotsBlocked: number;\n evShots: number;\n evShotMisses: number;\n evShotsOnGoal: number;\n evShotsBlocked: number;\n shShots: number;\n shShotMisses: number;\n shShotsOnGoal: number;\n shShotsBlocked: number;\n ppGoalsPercent: number;\n ppGoals: number;\n evGoalsPercent: number;\n evGoals: number;\n shGoalsPercent: number;\n shGoals: number;\n goals: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shots: number;\n goalsPercent: number;\n ppAssists: number;\n evAssists: number;\n shAssists: number;\n shootoutAttempts: number;\n shootoutGoals: number;\n blockShots: number;\n faceOffLosses: number;\n faceOffWins: number;\n faceOffs: number;\n faceOffPercent: number;\n savesPercent: number;\n saves: number;\n shotsAgainst: number;\n goalsAgainst: number;\n safetyRate: number;\n penaltyMinutes: number;\n gameTime: number;\n plusMinus: number;\n newbie: boolean;\n rank: number;\n\n get assists(): number {\n return (this.ppAssists || 0) + (this.shAssists || 0) + (this.evAssists || 0);\n }\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HockeyStatistic } from './hockey-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HockeyStatistic,\n competitorTeam: HockeyStatistic\n }\n})\nexport class HockeyGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HockeyStatistic;\n competitorTeam: HockeyStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyGameLog } from '../models/hockey-game-log';\nimport { HockeyGameStatistic } from '../models/hockey-game-statistic';\nimport { HockeyGameTeamStatistic } from '../models/hockey-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HockeyGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HockeyGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/team_statistic/`).pipe(\n map(result => HockeyGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HockeyGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/user_statistic/`).pipe(\n map(result => HockeyGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HockeyGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/logs/`).pipe(\n map(result => HockeyGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user'|'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_hockey_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum HandballGameLogTypes {\n enter_game = 1,\n exit_game,\n shot_miss,\n shot_on_goal,\n shot_blocked,\n goal,\n assist,\n penalty_miss,\n penalty_shot_on_goal,\n penalty_goal,\n save,\n penalty_save,\n foul,\n yellow_card,\n red_card,\n two_minute_foul,\n turnover,\n steal,\n block_shot,\n timeout\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n team_id: 'teamId',\n log_type: 'logType',\n datetime: 'datetime',\n time: 'time',\n period: 'period',\n active: 'active',\n is_highlight: 'isHighlight',\n is_goalie: 'isGoalie',\n },\n relation: {\n datetime: DateTimeField,\n logType: enumField(HandballGameLogTypes)\n }\n})\nexport class HandballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n gameId: number;\n gameUserId: number;\n gameUser: GameUser;\n teamId: number;\n logType: HandballGameLogTypes;\n datetime: Date;\n time: number;\n period: number;\n active = true;\n teamScore: number;\n competitorTeamScore: number;\n isHighlight: boolean;\n isGoalie: boolean;\n\n compare(model: HandballGameLog): number {\n if (this.time === model.time && this.period === model.period) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n }\n if (this.period === model.period) {\n return this.time < model.time ? 1 : -1;\n }\n return this.period < model.period ? 1 : -1;\n }\n\n get timeFormatted(): string {\n const minutes = Math.floor(this.time / 60);\n const seconds = this.time - minutes * 60;\n return `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n }\n\n isScoreType(): boolean {\n return [HandballGameLogTypes.goal, HandballGameLogTypes.penalty_goal].indexOf(this.logType) > -1;\n }\n\n isAfter(log: HandballGameLog): boolean {\n if (this.time === log.time && this.period === log.period) {\n return this.id > log.id;\n }\n if (this.period === log.period) {\n return this.time > log.time;\n }\n return this.period > log.period;\n }\n\n isFoulType(): boolean {\n return [HandballGameLogTypes.foul, HandballGameLogTypes.yellow_card, HandballGameLogTypes.red_card].indexOf(this.logType) > -1;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n updated_at: 'updatedAt',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n corners: 'corners',\n free_kicks: 'freeKicks',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_saves: 'penaltySaves',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_saves: 'smallPenaltySaves',\n saves: 'saves',\n goals_against: 'goalsAgainst',\n safety_rate: 'safetyRate',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots'\n },\n relation: {\n updatedAt: DateTimeField,\n }\n})\nexport class FootballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsAgainst: number;\n penaltySaves: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltySaves: number;\n saves: number;\n goalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n updatedAt: Date;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0) + (this.smallPenaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penalties(): number {\n return (this.penaltyGoals || 0) + (this.penaltyAttempts || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyAttempts || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyAttempts) / 10;\n }\n\n get smallPenalties(): number {\n return (this.smallPenaltyGoals || 0) + (this.smallPenaltyAttempts || 0);\n }\n\n get smallPenaltyGoalsPercent(): number {\n if (!this.smallPenaltyAttempts || !this.smallPenaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.smallPenaltyGoals / this.smallPenaltyAttempts) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get smallPenaltyShotsAgainst(): number {\n return (this.smallPenaltySaves || 0) + (this.smallPenaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0) + (this.smallPenaltyGoalsAgainst || 0);\n }\n\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0) + (this.smallPenaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get smallPenaltySavesPercent(): number {\n if (!this.smallPenaltyShotsAgainst || !this.smallPenaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.smallPenaltySaves / this.smallPenaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n shots_on_goal_percent: 'shotsOnGoalPercent',\n shots: 'shots',\n goals: 'goals',\n goals_percent: 'goalsPercent',\n total_goals: 'totalGoals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_attempts: 'penaltyAttempts',\n penalty_goals_percent: 'penaltyGoalsPercent',\n penalty_saves: 'penaltySaves',\n penalty_goals_against: 'penaltyGoalsAgainst',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n small_penalty_goals: 'smallPenaltyGoals',\n small_penalty_attempts: 'smallPenaltyAttempts',\n small_penalty_goals_percent: 'smallPenaltyGoalsPercent',\n small_penalty_saves: 'smallPenaltySaves',\n small_penalty_goals_against: 'smallPenaltyGoalsAgainst',\n small_penalty_shots_against: 'smallPenaltyShotsAgainst',\n small_penalty_saves_percent: 'smallPenaltySavesPercent',\n saves: 'saves',\n saves_percent: 'savesPercent',\n total_saves: 'totalSaves',\n goals_against: 'goalsAgainst',\n total_goals_against: 'totalGoalsAgainst',\n shots_against: 'shotsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n perfect_passes: 'perfectPasses',\n losses: 'losses',\n steals: 'steals',\n outs: 'outs',\n block_shots: 'blockShots',\n corners: 'corners',\n free_kicks: 'freeKicks',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class FootballStatistic extends BaseModel implements BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n shotsOnGoalPercent: number;\n shots: number;\n goals: number;\n totalGoals: number;\n goalsPercent: number;\n assists: number;\n penaltyGoals: number;\n penaltyAttempts: number;\n penaltyGoalsPercent: number;\n penaltySaves: number;\n penaltyGoalsAgainst: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n smallPenaltyGoals: number;\n smallPenaltyAttempts: number;\n smallPenaltyGoalsPercent: number;\n smallPenaltySaves: number;\n smallPenaltyGoalsAgainst: number;\n smallPenaltyShotsAgainst: number;\n smallPenaltySavesPercent: number;\n saves: number;\n savesPercent: number;\n totalSaves: number;\n goalsAgainst: number;\n totalGoalsAgainst: number;\n shotsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n perfectPasses: number;\n losses: number;\n steals: number;\n outs: number;\n gameTime: number;\n plusMinus: number;\n blockShots: number;\n corners: number;\n freeKicks: number;\n newbie: boolean;\n rank: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { FootballStatistic } from './football-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: FootballStatistic,\n competitorTeam: FootballStatistic\n }\n})\nexport class FootballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: FootballStatistic;\n competitorTeam: FootballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { FootballGameLog } from '../models/football-game-log';\nimport { FootballGameStatistic } from '../models/football-game-statistic';\nimport { FootballGameTeamStatistic } from '../models/football-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class FootballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<FootballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/team_statistic/`).pipe(\n map(result => FootballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<FootballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/user_statistic/`).pipe(\n map(result => FootballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<FootballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/logs/`).pipe(\n map(result => FootballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_football_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateField } from './util';\n\nexport enum TournamentStageStatuses {\n open,\n in_progress,\n closed\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n date: 'date',\n tournament_id: 'tournamentId',\n status: 'status',\n },\n relation: {\n date: DateField,\n status: enumField(TournamentStageStatuses)\n }\n})\nexport class TournamentStage extends BaseModel {\n id: number;\n name: string;\n date: Date;\n tournamentId: number;\n status: TournamentStageStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_misses: 'penaltyMisses',\n penalty_shots_on_goal: 'penaltyShotsOnGoal',\n saves: 'saves',\n penalty_saves: 'penaltySaves',\n goals_against: 'goalsAgainst',\n penalty_goals_against: 'penaltyGoalsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellowCards: 'yellowCards',\n red_cards: 'redCards',\n two_minute_fouls: 'twoMinuteFouls',\n turnovers: 'turnovers',\n steals: 'steals',\n block_shots: 'blockShots',\n game_time: 'gameTime',\n plus_minus: 'plusMinus'\n }\n})\nexport class HandballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n penaltyGoals: number;\n penaltyMisses: number;\n penaltyShotsOnGoal: number;\n saves: number;\n penaltySaves: number;\n goalsAgainst: number;\n penaltyGoalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n twoMinuteFouls: number;\n turnovers: number;\n steals: number;\n blockShots: number;\n gameTime: number;\n plusMinus: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get shots(): number {\n return (this.shotMisses || 0) + (this.shotsOnGoal || 0) + (this.shotsBlocked || 0);\n }\n\n\n get totalGoals(): number {\n return (this.goals || 0) + (this.penaltyGoals || 0);\n }\n\n get goalsPercent(): number {\n if (!this.shots || !this.totalGoals) {\n return 0;\n }\n return Math.round(1000 * this.totalGoals / this.shots) / 10;\n }\n\n get shotsOnGoalPercent(): number {\n if (!this.shotsOnGoal || !this.shots) {\n return 0;\n }\n return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;\n }\n\n get penaltyShots(): number {\n return (this.penaltyShotsOnGoal || 0) + (this.penaltyMisses || 0);\n }\n\n get penaltyGoalsPercent(): number {\n if (!this.penaltyShots || !this.penaltyGoals) {\n return 0;\n }\n return Math.round(1000 * this.penaltyGoals / this.penaltyShots) / 10;\n }\n\n get shotsAgainst(): number {\n return (this.saves || 0) + (this.goalsAgainst || 0);\n }\n\n get penaltyShotsAgainst(): number {\n return (this.penaltySaves || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get totalGoalsAgainst(): number {\n return (this.goalsAgainst || 0) + (this.penaltyGoalsAgainst || 0);\n }\n\n get totalSaves(): number {\n return (this.saves || 0) + (this.penaltySaves || 0);\n }\n\n get savesPercent(): number {\n if (!this.shotsAgainst || !this.saves) {\n return 0;\n }\n return Math.round(1000 * this.saves / this.shotsAgainst) / 10;\n }\n\n get penaltySavesPercent(): number {\n if (!this.penaltyShotsAgainst || !this.penaltySaves) {\n return 0;\n }\n return Math.round(1000 * this.penaltySaves / this.penaltyShotsAgainst) / 10;\n }\n\n get gameMinutes(): number {\n return Math.floor(this.gameTime / 60);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateField } from './util';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { Team } from './team';\nimport { TeamUser } from './team-user';\nimport { User } from './user';\nimport { TournamentTeam } from './tournament-team';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n tournament_team_user: 'tournamentTeamUser',\n team: 'team',\n team_user: 'teamUser',\n user: 'user',\n tournament_team: 'tournamentTeam',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n points: 'points',\n shot_misses: 'shotMisses',\n shots_on_goal: 'shotsOnGoal',\n shots_blocked: 'shotsBlocked',\n goals: 'goals',\n assists: 'assists',\n penalty_goals: 'penaltyGoals',\n penalty_misses: 'penaltyMisses',\n penalty_shots_on_goal: 'penaltyShotsOnGoal',\n saves: 'saves',\n penalty_saves: 'penaltySaves',\n goals_against: 'goalsAgainst',\n penalty_goals_against: 'penaltyGoalsAgainst',\n safety_rate: 'safetyRate',\n fouls: 'fouls',\n yellow_cards: 'yellowCards',\n red_cards: 'redCards',\n two_minute_fouls: 'twoMinuteFouls',\n turnovers: 'turnovers',\n steals: 'steals',\n block_shots: 'blockShots',\n game_time: 'gameTime',\n plus_minus: 'plusMinus',\n shots: 'shots',\n goals_percent: 'goalsPercent',\n penalty_shots: 'penaltyShots',\n penalty_goals_percent: 'penaltyGoalsPercent',\n shots_against: 'shotsAgainst',\n saves_percent: 'savesPercent',\n penalty_shots_against: 'penaltyShotsAgainst',\n penalty_saves_percent: 'penaltySavesPercent',\n total_goals: 'totalGoals',\n total_saves: 'totalSaves',\n total_goals_against: 'totalGoalsAgainst',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n tournamentTeamUser: TournamentTeamUser,\n team: Team,\n teamUser: TeamUser,\n user: User,\n tournamentTeam: TournamentTeam,\n month: DateField\n }\n})\nexport class HandballStatistic extends BaseModel implements BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n points: number;\n shotMisses: number;\n shotsOnGoal: number;\n shotsBlocked: number;\n goals: number;\n assists: number;\n penaltyGoals: number;\n penaltyMisses: number;\n penaltyShotsOnGoal: number;\n saves: number;\n penaltySaves: number;\n goalsAgainst: number;\n penaltyGoalsAgainst: number;\n safetyRate: number;\n fouls: number;\n yellowCards: number;\n redCards: number;\n twoMinuteFouls: number;\n turnovers: number;\n steals: number;\n blockShots: number;\n gameTime: number;\n plusMinus: number;\n shots: number;\n goalsPercent: number;\n penaltyShots: number;\n penaltyGoalsPercent: number;\n shotsAgainst: number;\n savesPercent: number;\n penaltyShotsAgainst: number;\n penaltySavesPercent: number;\n totalGoals: number;\n totalSaves: number;\n totalGoalsAgainst: number;\n newbie: boolean;\n rank: number;\n\n get userMinutes(): string {\n if (!this.gameTime) {\n return '00:00';\n }\n const minutes = Math.floor(this.gameTime / 60);\n const seconds = Math.floor(this.gameTime - minutes * 60);\n return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook } from './util';\nimport { HandballStatistic } from './handball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam'\n },\n relation: {\n team: HandballStatistic,\n competitorTeam: HandballStatistic\n }\n})\nexport class HandballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: HandballStatistic;\n competitorTeam: HandballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { ConfigService } from '../services/config.service';\nimport { HandballGameLog } from '../models/handball-game-log';\nimport { HandballGameStatistic } from '../models/handball-game-statistic';\nimport { HandballGameTeamStatistic } from '../models/handball-game-team-statistic';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class HandballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<HandballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/team_statistic/`).pipe(\n map(result => HandballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<HandballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/user_statistic/`).pipe(\n map(result => HandballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<HandballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/logs/`).pipe(\n map(result => HandballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n\n async downloadApplication(gameId: number, format: 'pdf' | 'xlsx' | 'html', type: 'game_user' | 'tournament_user'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_handball_game/${gameId}/game_application_file/`, {\n params: new HttpParams().set('file_type', format).set('application_type', type),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { File } from './file';\nimport { User } from './user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n text: 'text',\n author: 'author',\n created_at: 'createdAt',\n },\n relation: {\n picture: File,\n author: User,\n createdAt: DateTimeField,\n }\n})\nexport class TournamentNews extends BaseModel {\n id: number;\n title: string;\n picture: File;\n text: string;\n author: User;\n createdAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\n\n@ModelInstance({\n mappingFields: {\n stage_id: 'stageId',\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n }\n})\nexport class GameTimelineStageItem {\n stageId: number;\n toursCount: number;\n playoffStagesCount: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n tours_count: 'toursCount',\n playoff_stages_count: 'playoffStagesCount',\n current_tour: 'currentTour',\n current_playoff_stage: 'currentPlayoffStage',\n stages: 'stages',\n tournament_stage_id: 'tournamentStageId',\n },\n relation: {\n stages: listField(GameTimelineStageItem)\n }\n})\nexport class GameTimelineStages extends BaseModel {\n toursCount: number;\n playoffStagesCount: number;\n currentTour: number;\n currentPlayoffStage: number;\n stages: GameTimelineStageItem[];\n tournamentStageId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { generateArray } from '../utils/array';\n\nexport enum PlayoffTypes {\n double_elimination = 'double_elimination',\n elimination = 'elimination'\n}\n\n@ModelInstance({\n mappingFields: {\n rounds: 'rounds',\n final_rounds: 'finalRounds',\n third_place_rounds: 'thirdPlaceRounds',\n teams_count: 'teamsCount',\n type: 'type',\n },\n relation: {\n type: enumField(PlayoffTypes)\n }\n})\nexport class PlayoffSettings extends BaseModel {\n rounds: number;\n finalRounds: number;\n thirdPlaceRounds: number;\n teamsCount: number;\n type: PlayoffTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n settings: 'settings',\n tournament_id: 'tournamentId',\n tournament_stage_id: 'tournamentStageId',\n is_official: 'isOfficial'\n },\n relation: {\n settings: PlayoffSettings\n }\n})\nexport class Playoff extends BaseModel {\n id: number;\n name: string;\n settings: PlayoffSettings;\n tournamentId: number;\n tournamentStageId: number;\n isOfficial: boolean;\n private stages: {title: string, value: number}[] = [];\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n\n get stagesCount(): number {\n return Math.log(this.settings.teamsCount) / Math.log(2);\n }\n\n getPlayoffStages() {\n if (this.stages.length === 0 && this.settings.teamsCount) {\n const stagesCount = Math.log(this.settings.teamsCount) / Math.log(2);\n this.stages = generateArray(stagesCount).map(stage => {\n const playoffStage = this.settings.teamsCount / 2 ** stage;\n let title = '';\n if (playoffStage === 1) {\n title = 'Финал';\n } else {\n title = `1 / ${playoffStage}`;\n }\n return {\n value: stage,\n title\n };\n });\n }\n return this.stages;\n }\n}\n","export function generateArray(length: number): number[] {\n if (length <= 0) {\n return [];\n }\n return Array.apply(null, Array(length)).map((_, i) => i + 1);\n}\n\nexport function getArrayChunks(array: any[], length: number): any[][] {\n const chunks = [];\n const chunkLength = Math.ceil(array.length / length);\n if (chunkLength === 0) {\n return [array];\n }\n for (let i = 0; i < chunkLength; i++) {\n chunks.push(array.slice(i * length, (i + 1) * length));\n }\n return chunks;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField, enumField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\n\nexport enum LeagueNewsType {\n text = 1,\n video\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n datetime: 'datetime',\n preview_text: 'previewText',\n detail_text: 'detailText',\n picture: 'picture',\n cover: 'cover',\n mobile_picture: 'mobilePicture',\n is_main: 'isMain',\n tournaments: 'tournaments',\n type: 'type',\n video_link: 'videoLink',\n tag: 'tag',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n mobilePicture: File,\n tournaments: listField(Tournament),\n type: enumField(LeagueNewsType),\n }\n})\nexport class LeagueNews extends BaseModel {\n id: number;\n title: string;\n datetime: Date;\n previewText: string;\n detailText: string;\n picture: File;\n cover: File;\n mobilePicture: File;\n isMain: boolean;\n tournaments: Tournament[];\n type: LeagueNewsType;\n videoLink: string;\n tag: string;\n\n @ToFrontHook\n static toFront(data: any): any {\n return undefined;\n }\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField } from './util';\nimport { Team } from './team';\nimport { TournamentTeamUser } from './tournament-team-user';\nimport { TeamUser } from './team-user';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\nimport { BaseStatistic, WinLoseType } from './base-statistic';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n team_user: 'teamUser',\n tournament_team_user: 'tournamentTeamUser',\n tournament_team: 'tournamentTeam',\n user: 'user',\n month: 'month',\n win_lose: 'winLose',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n serve_percent: 'servePercent',\n ace_percent: 'acePercent',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n block_percent: 'blockPercent',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n attack_percent: 'attackPercent',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n receive_percent: 'receivePercent',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n serve_receive_percent: 'serveReceivePercent',\n points: 'points',\n faults: 'faults',\n newbie: 'newbie',\n rank: 'rank',\n },\n relation: {\n team: Team,\n teamUser: TeamUser,\n tournamentTeamUser: TournamentTeamUser,\n tournamentTeam: TournamentTeam,\n user: User,\n month: DateField,\n }\n})\nexport class VolleyballStatistic extends BaseModel implements BaseStatistic {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: WinLoseType;\n gamesCount: number;\n wonGamesCount: number;\n newbie: boolean;\n rank: number;\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n servePercent: number;\n acePercent: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n blockPercent: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n attackPercent: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n receivePercent: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n serveReceivePercent: number;\n points: number;\n faults: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { TournamentTeam } from './tournament-team';\nimport { TournamentGroup } from './tournament-group';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n group: 'group',\n tournament_stage_id: 'tournamentStageId',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n missed_sum: 'missedSum',\n last_games_count: 'lastGamesCount',\n last_games_won: 'lastGamesWon',\n points: 'points',\n final_standing: 'finalStanding',\n received_points: 'receivedPoints',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n group: TournamentGroup\n }\n})\nexport class TournamentStageTeam extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n group: TournamentGroup;\n tournamentStageId: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n missedSum: number;\n lastGamesCount: number;\n lastGamesWon: number;\n points: number;\n finalStanding: number;\n receivedPoints: number;\n\n get gamesWonPercent(): number {\n if (!this.gamesCount) {\n return 0;\n }\n return Math.floor(1000 * this.wonGamesCount / this.gamesCount) / 10;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateField, enumField, listField } from './util';\nimport { Game } from './game';\nimport { Tournament } from './tournament';\nimport { League } from './league';\nimport { LeagueNews } from './league-news';\n\nexport enum TournamentEventTypes {\n game_closed = 1,\n media_added,\n news\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n game: 'game',\n news: 'news',\n league: 'league',\n tournaments: 'tournaments',\n event: 'event',\n datetime: 'datetime'\n },\n relation: {\n game: Game,\n news: LeagueNews,\n league: League,\n tournaments: listField(Tournament),\n datetime: DateField,\n event: enumField(TournamentEventTypes)\n }\n})\nexport class TournamentEvent extends BaseModel {\n id: number;\n game: Game;\n news: LeagueNews;\n tournaments: Tournament[];\n event: TournamentEventTypes;\n datetime: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { User } from './user';\nimport { BaseModel, enumField, listField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\n\nexport enum LeagueUserRoles {\n admin = 1,\n moderator,\n game_manager\n}\n\nexport enum LeagueUserPermissions {\n settings = 1,\n users,\n teams,\n media,\n news,\n game_export,\n schedule,\n game_management\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user: 'user',\n role: 'role',\n permissions: 'permissions'\n },\n relation: {\n user: User,\n permissions: listField(enumField(LeagueUserPermissions))\n }\n})\nexport class LeagueUser extends BaseModel {\n id: number;\n user: User;\n _role: LeagueUserRoles;\n permissions: LeagueUserPermissions[];\n\n set role(value: LeagueUserRoles|string) {\n this._role = LeagueUserRoles[value];\n }\n\n get role(): LeagueUserRoles|string {\n return this._role;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Tournament } from '../models/tournament';\nimport { map } from 'rxjs/operators';\nimport { TournamentNews } from '../models/tournament-news';\nimport { Game, GameStatuses } from '../models/game';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { Playoff } from '../models/playoff';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { ConfigService } from '../services/config.service';\nimport { HockeyStatistic } from '../models/hockey-statistic';\nimport { FootballStatistic } from '../models/football-statistic';\nimport { LeagueUserPermissions } from '../models/league-user';\nimport { HandballStatistic } from '../models/handball-statistic';\n\nexport interface TournamentGamesFilters {\n tournamentIds?: number[];\n tournamentSeasonId?: number;\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\n statuses?: GameStatuses[];\n tournamentCourtId?: number;\n userId?: number;\n query?: string;\n}\n\nexport type StatisticGroupByTypes = 'team' | 'user' | 'team_user' | 'tournament_team' | 'tournament_team_user' | 'month' | 'win_loses';\n\nexport interface StatisticFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n tournament_team_user_id?: number;\n team_id?: number;\n team_user_id?: number;\n user_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n date_from?: string;\n date_to?: string;\n query?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n order_by?: string;\n page?: number;\n size?: number;\n}\n\nexport interface StatisticLeadersFilters {\n tournament_id?: number;\n tournament_ids?: number[];\n tournament_season_id?: number;\n tournament_team_id?: number;\n team_id?: number;\n tournament_stage_id?: number;\n tournament_tour?: number;\n playoff_stage?: number;\n playoff_id?: number;\n date_from?: string;\n date_to?: string;\n per_game?: boolean;\n group_by: StatisticGroupByTypes;\n size?: number;\n fields: string[];\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n tournamentTour?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(tournamentId: number): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/${alias}/`)\n .pipe(map(result => Tournament.toFront(result)))\n .toPromise();\n }\n\n async getNews(tournamentId: number): Promise<TournamentNews[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)\n .pipe(map(result => TournamentNews.toFront(result)))\n .toPromise();\n }\n\n async getEvents(tournamentId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getTournamentStages(tournamentId: number): Promise<TournamentStage[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(\n map(data => TournamentStage.toFront(data))\n ).toPromise();\n }\n\n async getPlayoff(tournamentId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(\n map(result => Playoff.toFront(result))\n ).toPromise();\n }\n\n async getPlayoffGames(playoffId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(tournamentId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n\n async getGames(tournamentId: number, page: number, size: number, filters: TournamentGamesFilters = {}): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))).toPromise();\n }\n\n async getTeams(tournamentId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getStageTeams(tournamentId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n\n async getTeamById(tournamentTeamId: number): Promise<TournamentTeam> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)\n .pipe(map(result => TournamentTeam.toFront(result)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<TournamentTeamUser> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)\n .pipe(map(result => TournamentTeamUser.toFront(result)))\n .toPromise();\n }\n\n async getUserGames(tournamentUserId: number): Promise<Game[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)\n .pipe(map(result => Game.toFront(result)))\n .toPromise();\n }\n\n async getBasketballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: BasketballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = BasketballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getVolleyballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: VolleyballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = VolleyballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHockeyStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HockeyStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HockeyStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getFootballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: FootballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = FootballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getHandballStatisticLeaders(filters: StatisticLeadersFilters): Promise<{[key: string]: HandballStatistic[]}> {\n let params = new HttpParams();\n params = applyStatisticLeadersFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic_leaders/`, {params}).pipe(\n map((result: {[key: string]: any[]}) => {\n for (const key of Object.keys(result)) {\n result[key] = HandballStatistic.toFront(result[key]);\n }\n return result;\n })\n ).toPromise();\n }\n\n async getBasketballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<BasketballStatistic[]>> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: BasketballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<VolleyballStatistic[]>> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: VolleyballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHockeyStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HockeyStatistic[]>> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HockeyStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getFootballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<FootballStatistic[]>> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: FootballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getHandballStatistic(filters?: StatisticFilters): Promise<PaginatedResponse<HandballStatistic[]>> {\n let params = new HttpParams();\n if (filters) {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n }\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: HandballStatistic.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getTournamentTeamUsers(tournamentTeamId: number): Promise<TournamentTeamUser[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n\n async myPermission(tournamentId: number): Promise<LeagueUserPermissions[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/permission/`).pipe(\n map((data: any) => (data.permissions || []).map(item => LeagueUserPermissions[item]))\n ).toPromise();\n }\n\n async getTournamentTeamTournaments(tournamentTeamId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getTournamentUserTournaments(tournamentTeamUserId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentTeamUserId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n}\n\nexport function applyGamesFilters(filters: TournamentGamesFilters, params: HttpParams): HttpParams {\n if (filters.tournamentIds) {\n params = params.set('tournament_ids', filters.tournamentIds.join(','));\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.statuses) {\n const statuses = filters.statuses.map(i => GameStatuses[i]);\n params = params.set('statuses', statuses.join(','));\n }\n if (filters.tournamentCourtId) {\n params = params.set('tournament_court_id', filters.tournamentCourtId.toString());\n }\n if (filters.userId) {\n params = params.set('user_id', filters.userId.toString());\n }\n if (filters.query) {\n params = params.set('query', filters.query);\n }\n return params;\n}\n\nexport function applyStatisticFilters(filters: StatisticFilters, params: HttpParams): HttpParams {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n return params;\n}\n\nexport function applyStatisticLeadersFilters(filters: StatisticLeadersFilters, params: HttpParams): HttpParams {\n for (const key of Object.keys(filters)) {\n if (filters[key]) {\n params = params.set(key, filters[key]);\n }\n }\n\n if (filters.per_game !== undefined) {\n params = params.set('per_game', filters.per_game ? '1' : '0');\n }\n\n if (filters.tournament_ids) {\n params = params.set('tournament_ids', filters.tournament_ids.join(','));\n }\n if (filters.fields) {\n params = params.set('fields', filters.fields.join(','));\n }\n return params;\n}\n","import {ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField} from './util';\nimport {File} from './file';\n\nexport enum BannerLocation {\n slider = 'slider',\n central = 'central',\n media = 'media',\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n location: 'location',\n },\n relation: {\n picture: File,\n location: enumField(BannerLocation),\n }\n})\nexport class LeagueBanner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n location: BannerLocation;\n\n\n @ToFrontHook\n static toFront(data: any): any {\n }\n\n @ToBackHook\n static toBack(data: any): any {\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n title: 'title',\n picture: 'picture',\n link: 'link',\n sort: 'sort',\n },\n relation: {\n picture: File\n }\n})\nexport class LeaguePartner extends BaseModel {\n id: number;\n title: string;\n picture: File;\n link: string;\n sort: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { User } from './user';\n\nexport enum PollStatuses {\n open = 1,\n closed,\n archived,\n}\n\n@ModelInstance({\n mappingFields: {\n uuid: 'uuid',\n name: 'name'\n }\n})\nexport class PollVariant extends BaseModel {\n uuid: string;\n name: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n answer_uuid: 'answerUuid',\n user: 'user',\n poll_id: 'pollId',\n },\n relation: {\n user: User\n }\n})\nexport class PollAnswer extends BaseModel {\n id: number;\n answerUuid: string;\n user: User;\n pollId: number;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n active: 'active',\n status: 'status',\n team_id: 'teamId',\n name: 'name',\n description: 'description',\n variants: 'variants',\n author: 'author',\n answers: 'answers',\n multiple_answer: 'multipleAnswer',\n anonymous: 'anonymous',\n created_at: 'createdAt'\n },\n relation: {\n status: enumField(PollStatuses),\n variants: PollVariant,\n author: User,\n answers: PollAnswer,\n createdAt: DateTimeField,\n }\n})\nexport class Poll extends BaseModel {\n id: number;\n active: boolean;\n teamId: number;\n status: PollStatuses;\n name: string;\n description: string;\n _variants: PollVariant[];\n author: User;\n _answers: PollAnswer[];\n multipleAnswer: boolean;\n anonymous: boolean;\n createdAt: Date;\n variantsWithAnswers: {variant: PollVariant, percent: number}[] = [];\n\n set variants(value: PollVariant[]) {\n this._variants = value || [];\n if (this._answers) {\n this.calculateAnswersPercentage();\n }\n }\n get variants(): PollVariant[] {\n return this._variants;\n }\n\n set answers(value: PollAnswer[]) {\n this._answers = value || [];\n if (this._variants) {\n this.calculateAnswersPercentage();\n }\n }\n get answers(): PollAnswer[] {\n return this._answers;\n }\n\n calculateAnswersPercentage() {\n if (!this._answers.length) {\n return;\n }\n\n const variants = this._variants.map(v => v.uuid);\n const answersByVariant = this._answers.reduce((acc, item) => {\n if (variants.indexOf(item.answerUuid) < 0) {\n return acc;\n }\n if (!acc[item.answerUuid]) {\n acc[item.answerUuid] = 0;\n }\n acc[item.answerUuid]++;\n return acc;\n }, {});\n this.variantsWithAnswers = this._variants.map(item => ({\n variant: item,\n percent: answersByVariant[item.uuid] ? Math.round(100 * answersByVariant[item.uuid] / this._answers.length) : 0\n }))\n .sort((a, b) => a.percent > b.percent ? -1 : 1);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n file: 'file',\n },\n relation: {\n file: File,\n }\n})\nexport class LeagueDocument extends BaseModel {\n id: number;\n file: File;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { League } from '../models/league';\nimport { map } from 'rxjs/operators';\nimport { Tournament, TournamentStatuses } from '../models/tournament';\nimport { ConfigService } from '../services/config.service';\nimport { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { Game, GameStatuses } from '../models/game';\nimport { LeaguePartner } from '../models/league-partner';\nimport { LeagueCourt } from '../models/league-court';\nimport { BannerLocation, LeagueBanner } from '../models/league-banner';\nimport { LeagueDocument } from '../models/league-document';\n\nexport interface TournamentListFilters {\n statuses: TournamentStatuses[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class LeagueApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getByAlias(alias: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${alias}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getByDomain(domain: string): Promise<League> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/by_domain/${domain}/`).pipe(\n map(result => League.toFront(result))\n ).toPromise();\n }\n\n async getTournaments(leagueId: number, filters?: TournamentListFilters): Promise<Tournament[]> {\n let params = new HttpParams();\n if (filters) {\n if (filters.statuses) {\n params = params.set('statuses', filters.statuses.map(s => TournamentStatuses[s]).join(','));\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getEvents(leagueId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/events/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getTournamentSeasons(leagueId: number): Promise<TournamentSeason[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/`).pipe(\n map(result => TournamentSeason.toFront(result))\n ).toPromise();\n }\n\n async getGames(leagueId: number, page: number, size: number, filters: TournamentGamesFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/games/`, {params, observe: 'response'}).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getSeasons(leagueId: number, page = 1, size = 20, notClosed?: boolean, include?: string[]): Promise<PaginatedResponse<TournamentSeason[]>> {\n const params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString())\n .set('not_closed', notClosed ? '1' : '')\n .set('include', include ? include.join(',') : '');\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/`, {params, observe: 'response'})\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentSeason.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getPartners(leagueId: number): Promise<LeaguePartner[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/partners/`).pipe(\n map(result => LeaguePartner.toFront(result))\n ).toPromise();\n }\n\n async getBanners(leagueId: number, location?: BannerLocation): Promise<LeagueBanner[]> {\n const params = location ? new HttpParams().set('location', location) : new HttpParams();\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/banners/`, {params}).pipe(\n map(result => LeagueBanner.toFront(result))\n ).toPromise();\n }\n\n async getCourts(leagueId: number): Promise<LeagueCourt[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/courts/`).pipe(\n map(result => LeagueCourt.toFront(result))\n ).toPromise();\n }\n\n async getGraphicSettings(leagueId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/graphic_settings/`)\n .toPromise();\n }\n\n async getDocuments(leagueId: number): Promise<LeagueDocument[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/documents/`).pipe(\n map(result => LeagueDocument.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews, LeagueNewsType } from '../models/league-news';\nimport { map } from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class LeagueNewsApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\n }\n\n async getLeagueNewsList(leagueId: number, page: number, size: number, type: LeagueNewsType = LeagueNewsType.text): Promise<PaginatedResponse<LeagueNews[]>> {\n const params = new HttpParams().set('page', page.toString())\n .set('size', size.toString())\n .set('type', LeagueNewsType[type]);\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n\n async getMainLeagueNews(leagueId: number): Promise<LeagueNews> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => response && response.length > 0 ? LeagueNews.toFront(response[0]) : null))\n .toPromise();\n }\n\n async getMainLeagueNewsList(leagueId: number): Promise<LeagueNews[]> {\n return this.httpClient.get<any[]>(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/news/?is_main=true`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getNewsById(newsId: number): Promise<LeagueNews> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league_news/${newsId}/`)\n .pipe(map(response => LeagueNews.toFront(response)))\n .toPromise();\n }\n\n async getTournamentNewsList(tournamentId: number): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`, {observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: LeagueNews.toFront(response.body)\n })))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { MediaItem } from '../models/media-item';\nimport { Game, GameStatuses } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\nimport { applyGamesFilters, TournamentGamesFilters } from './tournament-api';\n\nexport interface GameMediaFilters extends TournamentGamesFilters {\n mediaCount?: number;\n}\n\nexport interface MediaFilters {\n mediaType?: 'photo' | 'video' | 'live_video';\n sort?: string;\n teamId?: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MediaApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getMedia(mediaId: number): Promise<MediaItem> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async getTournamentGameMedia(tournamentId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueGameMedia(leagueId: number, page: number, size: number, filters?: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/game_media/`, {observe: 'response', params}).pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getLeagueMedia(leagueId: number, page: number, size: number, filters: MediaFilters = {}): Promise<PaginatedResponse<MediaItem[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n if (filters.mediaType) {\n params = params.set('media_type', filters.mediaType);\n }\n if (filters.sort) {\n params = params.set('sort', filters.sort);\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/media/`, {params, observe: 'response'})\n .pipe(map(response => ({\n total: +response.headers.get('X-Page-Count'),\n data: MediaItem.toFront(response.body)\n }))).toPromise();\n }\n\n async getGameMediaById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/game_media/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getGameMedia(gameId: number): Promise<MediaItem[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_game/${gameId}/media/`).pipe(\n map(result => MediaItem.toFront(result))\n ).toPromise();\n }\n\n async createZip(mediaIds: number[]): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/media/zip/`, mediaIds, { responseType: 'blob' })\n .toPromise();\n }\n\n async downloadMedia(mediaId: number): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/media/${mediaId}/download/`,{responseType: 'blob'})\n .toPromise();\n }\n}\n\nexport function applyGameMediaFilters(filters: GameMediaFilters, params: HttpParams, ): HttpParams {\n if (filters) {\n params = applyGamesFilters(filters, params);\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n if (filters.teamId) {\n params = params.set('team_id', filters.teamId.toString());\n }\n if (filters.tournamentStageId) {\n params = params.set('tournament_stage_id', filters.tournamentStageId.toString());\n }\n if (filters.playoffId) {\n params = params.set('playoff_id', filters.playoffId.toString());\n }\n if (filters.playoffStage) {\n params = params.set('playoff_stage', filters.playoffStage.toString());\n }\n if (filters.status) {\n params = params.set('status', GameStatuses[filters.status]);\n }\n if (filters.mediaCount) {\n params = params.set('media_count', filters.mediaCount.toString());\n }\n }\n return params;\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUser } from './team-user';\nimport { Game } from './game';\n\nexport enum GameInviteStatus {\n accepted = 1,\n declined,\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_user: 'teamUser',\n game_id: 'gameId',\n game: 'game',\n status: 'status',\n },\n relation: {\n game: Game,\n teamUser: TeamUser,\n status: enumField(GameInviteStatus),\n }\n})\nexport class GameInvite extends BaseModel {\n id: number;\n teamUser: TeamUser;\n gameId: number;\n game: Game;\n status: GameInviteStatus;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';\nimport { User } from './user';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n user_id: 'userId',\n user: 'user',\n team: 'team',\n team_id: 'teamId',\n user_accept: 'userAccept',\n team_accept: 'teamAccept',\n users_count: 'usersCount',\n games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\n score_sum: 'scoreSum',\n created_at: 'createdAt',\n updated_at: 'updatedAt',\n },\n relation: {\n user: User,\n team: Team,\n createdAt: DateTimeField,\n updateAt: DateTimeField,\n }\n})\nexport class TeamInvite extends BaseModel {\n id: number;\n userId: number;\n user: User;\n teamId: number;\n team: Team;\n userAccept: boolean;\n teamAccept: boolean;\n usersCount: number;\n gamesCount: number;\n wonGamesCount: number;\n scoreSum: number;\n createdAt: Date;\n updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","export enum TeamEventTypes {\n training = 1,\n other = 2,\n}\n","import { enumField, ModelInstance, ToBackHook, ToFrontHook } from './util';\n\nexport enum TeamEventInviteStatuses {\n accepted = 1,\n declined = 2\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_event_id: 'teamEventId',\n team_user_id: 'teamUserId',\n status: 'status',\n },\n relation: {\n status: enumField(TeamEventInviteStatuses)\n }\n})\nexport class TeamEventInvite {\n id: number;\n teamEventId: number;\n teamUserId: number;\n status: TeamEventInviteStatuses;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { TeamEventTypes } from '../models/team-event-type';\n\nexport const TeamEventTypeLocalization = {\n [TeamEventTypes.training]: 'ТÑениÑовка',\n [TeamEventTypes.other]: 'ÐÑÑгое'\n};\n","import { BaseModel, enumField, ModelInstance, DateTimeField, ToBackHook, ToFrontHook } from './util';\nimport { Team } from './team';\nimport { TeamEventTypeLocalization } from '../localization/team-event-type';\nimport { TeamEventTypes } from './team-event-type';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n team: 'team',\n event_type: 'eventType',\n event_custom_name: 'eventCustomName',\n description: 'description',\n datetime: 'datetime',\n location: 'location',\n },\n relation: {\n eventType: enumField(TeamEventTypes),\n team: Team,\n datetime: DateTimeField,\n }\n})\nexport class TeamEvent extends BaseModel {\n id: number;\n teamId: number;\n team: Team;\n eventType: TeamEventTypes;\n eventCustomName: string;\n description: string;\n datetime: Date;\n location: string;\n\n get name(): string {\n if (this.eventType === TeamEventTypes.other) {\n return this.eventCustomName;\n }\n return TeamEventTypeLocalization[this.eventType];\n }\n\n get isClosed(): boolean {\n return this.datetime.getTime() < new Date().getTime();\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField, enumField } from './util';\nimport { Team } from './team';\nimport { Poll } from './poll';\nimport { Game } from './game';\nimport { TeamInvite } from './team-invite';\nimport { TeamUser } from './team-user';\nimport { GameInvite } from './game-invite';\nimport { TeamEvent } from './team-event';\nimport { TeamEventInvite } from './team-event-invite';\nimport { Tournament } from './tournament';\nimport { TournamentInvite } from './tournament-invite';\nimport { TournamentTeam } from './tournament-team';\nimport { User } from './user';\n\nexport enum NotificationType {\n team_updated = 1,\n team_invited,\n team_join_request,\n team_join_declined_by_team,\n team_join_declined_by_user,\n team_join_canceled_by_team,\n team_join_canceled_by_user,\n team_joined_for_user,\n team_joined_for_team,\n team_user_role_changed_for_user,\n team_user_role_changed_for_team,\n team_user_number_changed,\n team_user_deleted_for_user,\n team_user_deleted_for_team,\n team_user_left,\n\n game_updated,\n game_invited,\n game_invite_accepted,\n game_invite_declined,\n game_remind,\n game_won,\n game_losing,\n game_tech_defeat,\n game_tech_victory,\n\n poll_created,\n poll_closed,\n\n team_event_invited,\n team_event_accepted,\n team_event_declined,\n team_event_remind,\n\n tournament_invited,\n tournament_joined,\n tournament_join_declined,\n tournament_join_canceled,\n tournament_user_invited,\n tournament_user_accepted_for_team,\n tournament_user_accepted_for_user,\n tournament_user_added,\n tournament_user_declined_for_team,\n tournament_user_declined_for_user,\n tournament_user_invite_deleted,\n tournament_user_deleted,\n tournament_user_disqualified_for_team,\n tournament_user_disqualified_for_user,\n tournament_user_disqualification_updated_for_team,\n tournament_user_disqualification_updated_for_user,\n tournament_team_deleted,\n\n org_tournament_invite_created,\n org_tournament_invite_declined,\n org_tournament_invite_deleted,\n org_tournament_invite_changed,\n org_tournament_user_deleted,\n org_tournament_user_invited,\n org_tournament_user_has_changes,\n org_tournament_team_leave,\n}\n\nexport enum NotificationServiceEnum {\n public = 1,\n org\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n event_type: 'event',\n data: 'data',\n initiator: 'initiator',\n team: 'team',\n team_invite: 'teamInvite',\n team_user: 'teamUser',\n poll: 'poll',\n game: 'game',\n game_invite: 'gameInvite',\n team_event: 'teamEvent',\n team_event_invite: 'teamEventInvite',\n tournament: 'tournament',\n tournament_invite: 'tournamentInvite',\n tournament_team: 'tournamentTeam',\n viewed: 'viewed',\n protected: 'protected',\n service: 'service',\n created_at: 'createdAt',\n },\n relation: {\n event: enumField(NotificationType),\n initiator: User,\n team: Team,\n teamInvite: TeamInvite,\n teamUser: TeamUser,\n poll: Poll,\n game: Game,\n gameInvite: GameInvite,\n teamEvent: TeamEvent,\n teamEventInvite: TeamEventInvite,\n tournament: Tournament,\n tournamentInvite: TournamentInvite,\n tournamentTeam: TournamentTeam,\n service: enumField(NotificationServiceEnum),\n createdAt: DateTimeField,\n }\n})\nexport class Notification extends BaseModel {\n id: number;\n event: NotificationType;\n data: any;\n initiator: User;\n team: Team;\n teamInvite: TeamInvite;\n teamUser: TeamUser;\n poll: Poll;\n game: Game;\n gameInvite: GameInvite;\n teamEvent: TeamEvent;\n teamEventInvite: TeamEventInvite;\n tournament: Tournament;\n tournamentInvite: TournamentInvite;\n tournamentTeam: TournamentTeam;\n viewed: boolean;\n protected: boolean;\n service: NotificationServiceEnum;\n createdAt: Date;\n\n get important(): boolean {\n return true;\n }\n\n @ToFrontHook\n static toFront(value: any): any {}\n\n @ToBackHook\n static toBack(value: any): any {}\n}\n","import { BaseModel, ModelInstance, ToFrontHook, ToBackHook } from './util';\nimport { TeamUser } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team_invite_id: 'tournamentTeamInviteId',\n tournament_team_id: 'tournamentTeamId',\n team_user: 'teamUser',\n accepted: 'accepted'\n },\n relation: {\n teamUser: TeamUser\n }\n})\nexport class TournamentTeamUserInvite extends BaseModel {\n id: number;\n tournamentTeamInviteId: number;\n tournamentTeamId: number;\n teamUser: TeamUser;\n accepted: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\nimport { Tournament } from './tournament';\nimport { TournamentTeamUserInvite } from './tournament-team-user-invite';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team: 'team',\n tournament: 'tournament',\n team_accept: 'teamAccept',\n organization_accept: 'organizationAccept',\n user_invites_count: 'userInvitesCount',\n user_invites: 'userInvites',\n notifications_count: 'notificationsCount',\n },\n relation: {\n team: Team,\n tournament: Tournament,\n userInvites: TournamentTeamUserInvite,\n }\n})\nexport class TournamentInvite extends BaseModel {\n id: number;\n team: Team;\n tournament: Tournament;\n teamAccept: boolean;\n organizationAccept: boolean;\n userInvitesCount: number;\n userInvites: TournamentTeamUserInvite[];\n notificationsCount: number;\n\n get isOpen(): boolean {\n return (this.teamAccept === null || this.organizationAccept === null) && this.teamAccept !== false && this.organizationAccept !== false;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum NotificationAllowTypes {\n all = 1,\n important,\n none\n}\n\n@ModelInstance({\n mappingFields: {\n user_id: 'userId',\n popup: 'popup',\n sound: 'sound',\n browser: 'browser',\n email: 'email'\n },\n relation: {\n sound: enumField(NotificationAllowTypes),\n browser: enumField(NotificationAllowTypes),\n }\n})\nexport class NotificationSettings extends BaseModel {\n userId: number;\n popup: boolean;\n sound: NotificationAllowTypes;\n browser: NotificationAllowTypes;\n email: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToBackHook, ToFrontHook, enumField } from './util';\n\nexport enum TeamPermissionTypes {\n for_all = 1,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n players: 'players',\n games: 'games',\n statistic: 'statistic',\n polls: 'polls',\n events: 'events'\n },\n relation: {\n players: enumField(TeamPermissionTypes),\n games: enumField(TeamPermissionTypes),\n statistic: enumField(TeamPermissionTypes),\n polls: enumField(TeamPermissionTypes),\n events: enumField(TeamPermissionTypes)\n }\n})\nexport class TeamPermission extends BaseModel {\n players: TeamPermissionTypes;\n games: TeamPermissionTypes;\n statistic: TeamPermissionTypes;\n polls: TeamPermissionTypes;\n events: TeamPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Notification } from '../models/notification';\nimport { NotificationSettings } from '../models/notification-settings';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { ConfigService } from '../services/config.service';\n\nexport interface NotificationFilters {\n protected?: boolean;\n not_viewed?: boolean;\n important?: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class NotificationBaseApi {\n protected apiUrl: string;\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCount(): Promise<number> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/count/`)\n .pipe(map(data => +data))\n .toPromise();\n }\n\n async getList(page: number, size: number, filters: NotificationFilters = {}): Promise<PaginatedResponse<Notification[]>> {\n let params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString());\n for (const key of Object.keys(filters)) {\n params = params.set(key, filters[key]);\n }\n\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/`, {params, observe: 'response'})\n .pipe(\n map(response => {\n const data: Notification[] = Notification.toFront(response.body);\n return {\n total: +response.headers.get('x-page-count'),\n data\n };\n }),\n ).toPromise();\n }\n\n async markViewed(notificationId: number, viewed: boolean): Promise<Notification> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/${notificationId}/viewed/`, {viewed})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async markAllViewed(): Promise<Notification[]> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}${this.apiUrl}/notification/viewed/`, {})\n .pipe(map(data => Notification.toFront(data)))\n .toPromise();\n }\n\n async getNotificationSettings(): Promise<NotificationSettings> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`)\n .pipe(map(data => NotificationSettings.toFront(data)))\n .toPromise();\n }\n\n async updateNotificationSettings(data: NotificationSettings): Promise<NotificationSettings> {\n return this.httpClient.post(\n `${this.configService.get('apiUrl')}${this.apiUrl}/notification_settings/`,\n NotificationSettings.toBack(data)\n )\n .pipe(map(result => NotificationSettings.toFront(result)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class NotificationApi extends NotificationBaseApi {\n protected apiUrl = '/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationBaseApi } from './notification-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class OrgNotificationApi extends NotificationBaseApi {\n protected apiUrl = '/org/api/v1';\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\nimport { City } from '../models/city';\nimport { Sport } from '../models/sport';\n\n@Injectable({providedIn: 'root'})\nexport class ReferenceApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCities(): Promise<City[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/reference/cities/`)\n .pipe(\n map(data => City.toFront(data))\n ).toPromise();\n }\n\n async getSports(): Promise<Sport[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/sport/`)\n .pipe(\n map(data => Sport.toFront(data))\n ).toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n team_id: 'teamId',\n email: 'email',\n first_name: 'firstName',\n last_name: 'lastName',\n },\n})\nexport class TeamInviteExternal extends BaseModel {\n id: number;\n teamId: number;\n email: string;\n firstName: string;\n lastName: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\n\nexport enum UserPermissionTypes {\n denied = 1,\n for_all,\n for_users,\n for_team\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n personal_data: 'personalData',\n games: 'games',\n teams: 'teams',\n statistic: 'statistic'\n },\n relation: {\n personalData: enumField(UserPermissionTypes),\n games: enumField(UserPermissionTypes),\n teams: enumField(UserPermissionTypes),\n statistic: enumField(UserPermissionTypes)\n }\n})\nexport class UserPermission extends BaseModel {\n id: number;\n personalData: UserPermissionTypes;\n games: UserPermissionTypes;\n teams: UserPermissionTypes;\n statistic: UserPermissionTypes;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { TeamUserRole } from './team-user';\n\n@ModelInstance({\n mappingFields: {\n can_edit: 'canEdit',\n can_view_users: 'canViewUsers',\n can_manage_permission: 'canManagePermission',\n can_change_owner: 'canChangeOwner',\n can_delete: 'canDelete',\n can_manage_invites: 'canManageInvites',\n can_view_invites: 'canViewInvites',\n can_manage_polls: 'canManagePolls',\n can_view_polls: 'canViewPolls',\n can_answer_poll: 'canAnswerPoll',\n can_manage_games: 'canManageGames',\n can_view_games: 'canViewGames',\n can_view_statistic: 'canViewStatistic',\n can_promote_users: 'canPromoteUsers',\n can_edit_users: 'canEditUsers',\n can_delete_users: 'canDeleteUsers',\n can_view_events: 'canViewEvents',\n can_manage_events: 'canManageEvents',\n can_view_tournaments: 'canViewTournaments',\n can_manage_tournaments: 'canManageTournaments',\n role: 'role'\n },\n relation: {\n role: enumField(TeamUserRole)\n }\n})\nexport class TeamAccess extends BaseModel {\n canEdit: boolean;\n canViewUsers: boolean;\n canManagePermission: boolean;\n canChangeOwner: boolean;\n canDelete: boolean;\n canManageInvites: boolean;\n canViewInvites: boolean;\n canManagePolls: boolean;\n canViewPolls: boolean;\n canAnswerPoll: boolean;\n canManageGames: boolean;\n canViewGames: boolean;\n canViewStatistic: boolean;\n canPromoteUsers: boolean;\n canEditUsers: boolean;\n canDeleteUsers: boolean;\n canViewEvents: boolean;\n canManageEvents: boolean;\n canViewTournaments: boolean;\n canManageTournaments: boolean;\n role: TeamUserRole;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser, TeamUserRole } from '../models/team-user';\nimport { User } from '../models/user';\nimport { TeamInvite } from '../models/team-invite';\nimport { TeamInviteExternal } from '../models/team-invite-external';\nimport { Poll } from '../models/poll';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { TeamEvent } from '../models/team-event';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { TeamPermission } from '../models/team-permission';\nimport { TeamAccess } from '../models/team-access';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async search(query: string, sportId?: number): Promise<Team[]> {\n let params = (new HttpParams()).set('search', query);\n if (sportId) {\n params = params.set('sport', sportId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/`, {params})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async create(team: Team): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/`, Team.toBack(team))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getById(teamId: number): Promise<Team> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getTeamAccess(teamId: number): Promise<TeamAccess> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/access/`)\n .pipe(map(data => TeamAccess.toFront(data)))\n .toPromise();\n }\n\n async update(teamId: number, values: any): Promise<Team> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/`, Team.toBack(values))\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async delete(team: Team): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${team.id}/`)\n .toPromise();\n }\n\n async getPermission(teamId: number): Promise<TeamPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`)\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async updatePermission(teamId: number, permission: TeamPermission): Promise<TeamPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/permission/`, TeamPermission.toBack(permission))\n .pipe(map(data => TeamPermission.toFront(data)))\n .toPromise();\n }\n\n async getUsers(teamId: number, tournamentId?: number): Promise<TeamUser[]> {\n let params = new HttpParams();\n if (tournamentId) {\n params = params.set('tournament_id', tournamentId.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`, {params})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserRole(teamId: number, teamUserId: number, role: TeamUserRole): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/role/`, {role: TeamUserRole[role]})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateUserNumber(teamId: number, teamUserId: number, gameNumber: number): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/${teamUserId}/number/`, {number: gameNumber.toString()})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteUser(teamUser: TeamUser): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team/${teamUser.teamId}/users/${teamUser.id}/`)\n .toPromise();\n }\n\n async changeOwner(teamId: number, user: User): Promise<Team> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/owner/`, {id: user.id})\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(teamId: number): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async sendInvite(teamId: number, user: User): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites/`, {user})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async resendInvite(invite: TeamInvite): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_invite/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getInvitesExternal(teamId: number): Promise<TeamInviteExternal[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`)\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async sendInviteExternal(teamId: number, invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/invites_external/`, TeamInviteExternal.toBack(invite))\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async deleteInviteExternal(invite: TeamInviteExternal): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/`)\n .toPromise();\n }\n\n async resendInviteExternal(invite: TeamInviteExternal): Promise<TeamInviteExternal> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/invites_external/${invite.id}/resend/`, {})\n .pipe(map(data => TeamInviteExternal.toFront(data)))\n .toPromise();\n }\n\n async getPolls(teamId: number, archive: boolean = false): Promise<Poll[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async createPoll(teamId: number, poll: Poll): Promise<Poll> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/polls/`, Poll.toBack(poll))\n .pipe(map(data => Poll.toFront(data)))\n .toPromise();\n }\n\n async getUsersStatistic(teamId: number): Promise<BasketballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(teamId: number): Promise<VolleyballStatistic[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async joinTeam(teamId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/join/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async leaveTeam(teamId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/leave/`, {})\n .toPromise();\n }\n\n async getGames(teamId: number, archive = false): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/${archive ? '?archive=1' : ''}`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async createGame(teamId: number, game: Game): Promise<Game> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/games/`, Game.toBack(game))\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(teamId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async createTeamEvent(teamId: number, teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/events/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async getTournaments(teamId: number): Promise<Tournament[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/`)\n .pipe(map(data => Tournament.toFront(data)))\n .toPromise();\n }\n\n async getTournamentTeams(teamId: number): Promise<TournamentTeam[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_teams/`)\n .pipe(map(data => TournamentTeam.toFront(data)))\n .toPromise();\n }\n\n async getTournamentInvites(teamId: number): Promise<TournamentInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournament_invites/`)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async getTournamentGames(teamId: number, tournamentId: number, page: number, size?: number): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/tournaments/${tournamentId}/games/`, {params, observe: 'response'})\n .pipe(map((response: HttpResponse<any>) => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n }))\n .toPromise();\n }\n\n async acceptTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/accept/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTournamentInvite(inviteId: number): Promise<TournamentInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/tournament_invite/${inviteId}/decline/`, {})\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n\n async registerLazyUser(teamId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/lazy_user/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async getLazyUser(teamUserId: number): Promise<TeamUser> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async updateLazyUser(teamUserId: number, userData: User): Promise<TeamUser> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`, {user: User.toBack(userData)})\n .pipe(map(data => TeamUser.toFront(data)))\n .toPromise();\n }\n\n async deleteLazyUser(teamUserId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/`)\n .toPromise();\n }\n\n async resendLazyUserEmail(teamUserId: number): Promise<any> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/lazy_user/${teamUserId}/resend_email/`, {})\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { TeamEvent } from '../models/team-event';\nimport { TeamEventInvite } from '../models/team-event-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TeamEventApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getTeamEvent(teamEventId: number): Promise<TeamEvent> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async updateTeamEvent(teamEvent: TeamEvent): Promise<TeamEvent> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEvent.id}/`, TeamEvent.toBack(teamEvent))\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n\n async deleteTeamEvent(teamEventId: number): Promise<any> {\n return this.httpClient\n .delete(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/`)\n .toPromise();\n }\n\n async getTeamEventInvites(teamEventId: number): Promise<TeamEventInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`)\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async createTeamEventInvite(teamEventId: number, teamUserId: number): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event/${teamEventId}/invites/`, {team_user_id: teamUserId})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/accept/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n\n async declineTeamEventInvite(teamEventInvite: TeamEventInvite): Promise<TeamEventInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/team_event_invite/${teamEventInvite.id}/decline/`, {})\n .pipe(map(data => TeamEventInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { Team } from './team';\n\n@ModelInstance({\n mappingFields: {\n valid_users_count: 'validUsersCount',\n invalid_users_count: 'invalidUsersCount',\n has_access: 'hasAccess',\n invite_sent: 'inviteSent',\n already_in_tournament: 'alreadyInTournament'\n }\n})\nexport class TournamentJoinData extends BaseModel {\n validUsersCount: number;\n invalidUsersCount: number;\n hasAccess: boolean;\n inviteSent: boolean;\n alreadyInTournament: boolean;\n\n get usersCount(): number {\n return this.validUsersCount + this.invalidUsersCount;\n }\n\n get valid() {\n return this.hasAccess && !this.inviteSent && !this.alreadyInTournament;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n join_data: 'joinData'\n },\n relation: {\n team: Team,\n joinData: TournamentJoinData\n }\n})\nexport class TournamentJoinTeam extends BaseModel {\n team: Team;\n joinData: TournamentJoinData;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentJoinTeam } from '../models/tournament-join-team';\nimport { map } from 'rxjs/operators';\nimport { TeamUser } from '../models/team-user';\nimport { TournamentTeamUserInvite } from '../models/tournament-team-user-invite';\nimport { TournamentInvite } from '../models/tournament-invite';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentJoinApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getTeamsForJoin(tournamentId: number): Promise<TournamentJoinTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams_for_join/`).pipe(\n map(response => TournamentJoinTeam.toFront(response))\n ).toPromise();\n }\n\n async getTeamUsers(teamId: number): Promise<TeamUser[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`)\n .pipe(\n map(data => TeamUser.toFront(data))\n ).toPromise();\n }\n\n async joinTournament(tournamentId: number, teamId: number, invites: TournamentTeamUserInvite[]): Promise<TournamentInvite> {\n const body = {\n team: {id: teamId},\n user_invites: TournamentTeamUserInvite.toBack(invites)\n };\n return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join/`, body)\n .pipe(map(data => TournamentInvite.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { TournamentSeason } from '../models/tournament-season';\nimport { ConfigService } from '../services/config.service';\nimport { map } from 'rxjs/operators';\nimport { Game, GameStatuses } from '../models/game';\nimport { Tournament } from '../models/tournament';\nimport { applyGamesFilters, TournamentEventsListFilter, TournamentGamesFilters } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { applyGameMediaFilters, GameMediaFilters } from './media-api';\nimport { TournamentTeam } from '../models/tournament-team';\nimport { GameTimelineStages } from '../models/game-timeline-stages';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentSeasonApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getByAlias(leagueId: number, alias: string): Promise<TournamentSeason> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournament_seasons/${alias}/`).pipe(\n map(result => TournamentSeason.toFront(result))\n ).toPromise();\n }\n\n async getTournaments(seasonId: number): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/tournaments/`).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n async getGames(seasonId: number, page: number, size: number, filters: TournamentGamesFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString());\n if (size) {\n params = params.set('size', size.toString());\n }\n params = applyGamesFilters(filters, params);\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games/`,\n {params, observe: 'response'}\n ).pipe(\n map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: Game.toFront(result.body)\n }))\n ).toPromise();\n }\n\n async getEvents(seasonId: number, page: number, size: number, filters?: TournamentEventsListFilter): Promise<PaginatedResponse<TournamentEvent[]>> {\n let params = new HttpParams().set('page', page.toString())\n .set('size', size.toString());\n if (filters) {\n if (filters.event) {\n params = params.set('event', TournamentEventTypes[filters.event]);\n }\n if (filters.search) {\n params = params.set('search', filters.search);\n }\n if (filters.tournamentTour) {\n params = params.set('tournament_tour', filters.tournamentTour.toString());\n }\n }\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/events/`,\n {params, observe: 'response'}\n )\n .pipe(map(result => ({\n total: +result.headers.get('X-Page-Count'),\n data: TournamentEvent.toFront(result.body)\n })))\n .toPromise();\n }\n\n async getGameMedia(seasonId: number, page: number, size: number, filters: GameMediaFilters): Promise<PaginatedResponse<Game[]>> {\n let params = new HttpParams().set('page', page.toString()).set('size', size.toString());\n params = applyGameMediaFilters(filters, params);\n\n return this.httpClient.get(\n `${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/game_media/`,\n {observe: 'response', params})\n .pipe(\n map(response => {\n return {\n total: +response.headers.get('X-Page-Count'),\n data: Game.toFront(response.body)\n };\n })\n ).toPromise();\n }\n\n async getTeams(seasonId: number): Promise<TournamentTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/teams/`).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n\n async getGamesStages(seasonId: number): Promise<GameTimelineStages> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_season/${seasonId}/games_stages/`)\n .pipe(map(data => GameTimelineStages.toFront(data)))\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TournamentStage } from '../models/tournament-stage';\nimport { map } from 'rxjs/operators';\nimport { TournamentGroup } from '../models/tournament-group';\nimport { Playoff } from '../models/playoff';\nimport { TournamentStageTeam } from '../models/tournament-stage-team';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class TournamentStageApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getById(id: number): Promise<TournamentStage> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${id}/`)\n .pipe(map(result => TournamentStage.toFront(result)))\n .toPromise();\n }\n\n async getGroups(stageId: number): Promise<TournamentGroup[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/groups/`)\n .pipe(map(result => TournamentGroup.toFront(result)))\n .toPromise();\n }\n\n async getPlayoffs(stageId: number): Promise<Playoff[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/playoff/`)\n .pipe(map(result => Playoff.toFront(result)))\n .toPromise();\n }\n\n async getTeams(stageId: number): Promise<TournamentStageTeam[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_stage/${stageId}/teams/`)\n .pipe(map(result => TournamentStageTeam.toFront(result)))\n .toPromise();\n }\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\n\n@ModelInstance({\n mappingFields: {\n edit: 'edit',\n personal_data: 'personalData',\n teams: 'teams',\n statistic: 'statistic',\n games: 'games'\n }\n})\nexport class UserAccess extends BaseModel {\n edit: boolean;\n personalData: boolean;\n teams: boolean;\n statistic: boolean;\n games: boolean;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField, DateTimeField } from './util';\nimport { GameLogBase } from './game-log-base';\nimport { GameUser } from './game-user';\n\nexport enum VolleyballGameLogType {\n enter_game = 1,\n exit_game,\n remove_game,\n serve_hit,\n serve_fault,\n serve_ace,\n stuff_block,\n block_fault,\n block_rebound,\n attack_spike,\n attack_fault,\n attack_shot,\n receive,\n receive_fault,\n excellent_receive,\n point,\n fault,\n serve_receive,\n serve_receive_fault,\n excellent_serve_receive,\n timeout,\n yellow_card,\n}\n\nexport const SCORE_LOG_TYPES = [\n VolleyballGameLogType.serve_ace, VolleyballGameLogType.stuff_block,\n VolleyballGameLogType.attack_spike, VolleyballGameLogType.point\n];\nexport const FAULT_LOG_TYPES = [\n VolleyballGameLogType.serve_fault, VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.block_fault, VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.fault, VolleyballGameLogType.serve_receive_fault\n];\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n unique_id: 'uniqueId',\n game_id: 'gameId',\n game_user_id: 'gameUserId',\n log_type: 'logType',\n set: 'set',\n rally: 'rally',\n position: 'position',\n team_id: 'teamId',\n datetime: 'datetime',\n },\n relation: {\n logType: enumField(VolleyballGameLogType),\n datetime: DateTimeField\n }\n})\nexport class VolleyballGameLog extends BaseModel implements GameLogBase {\n id: number;\n uniqueId: string;\n active = true;\n gameId: number;\n gameUserId: number;\n logType: VolleyballGameLogType;\n set: number;\n rally: number;\n position: number;\n teamId: number;\n datetime: Date;\n gameUser: GameUser;\n\n compare(model: VolleyballGameLog): number {\n if (this.rally === model.rally && this.set === model.set) {\n if (this.datetime && model.datetime) {\n return this.datetime.getTime() < model.datetime.getTime() ? 1 : -1;\n } else {\n return this.id < model.id ? 1 : -1;\n }\n }\n if (this.set === model.set) {\n return this.rally < model.rally ? 1 : -1;\n }\n return this.set < model.set ? 1 : -1;\n }\n\n isScoreType() {\n return SCORE_LOG_TYPES.includes(this.logType);\n }\n\n isFaultType() {\n return FAULT_LOG_TYPES.includes(this.logType);\n }\n\n isServe() {\n return [\n VolleyballGameLogType.serve_hit,\n VolleyballGameLogType.serve_ace,\n VolleyballGameLogType.serve_fault\n ].includes(this.logType);\n }\n\n isAttack() {\n return [\n VolleyballGameLogType.attack_fault,\n VolleyballGameLogType.attack_spike,\n VolleyballGameLogType.attack_shot\n ].includes(this.logType);\n }\n\n isReceive() {\n return [\n VolleyballGameLogType.receive_fault,\n VolleyballGameLogType.receive,\n VolleyballGameLogType.excellent_receive\n ].includes(this.logType);\n }\n\n isServeReceive() {\n return [\n VolleyballGameLogType.serve_receive_fault,\n VolleyballGameLogType.serve_receive,\n VolleyballGameLogType.excellent_serve_receive\n ].includes(this.logType);\n }\n\n isBlock() {\n return [\n VolleyballGameLogType.block_fault,\n VolleyballGameLogType.block_rebound,\n VolleyballGameLogType.stuff_block\n ].includes(this.logType);\n }\n\n isEnterExit() {\n return [\n VolleyballGameLogType.enter_game,\n VolleyballGameLogType.exit_game,\n VolleyballGameLogType.timeout\n ].includes(this.logType);\n }\n\n isComboType() {\n return ![\n VolleyballGameLogType.receive,\n VolleyballGameLogType.serve_receive\n ].includes(this.logType);\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { User } from '../models/user';\nimport { File } from '../models/file';\nimport { map } from 'rxjs/operators';\nimport { UserProfile } from '../models/user-profile';\nimport { BasketballProfile } from '../models/basketball-profile';\nimport { VolleyballProfile } from '../models/volleyball-profile';\nimport { Team } from '../models/team';\nimport { TeamInvite } from '../models/team-invite';\nimport { BasketballStatistic } from '../models/basketball-statistic';\nimport { VolleyballStatistic } from '../models/volleyball-statistic';\nimport { Game } from '../models/game';\nimport { GameInvite } from '../models/game-invite';\nimport { TeamEvent } from '../models/team-event';\nimport { UserAccess } from '../models/user-access';\nimport { UserPermission } from '../models/user-permission';\nimport { ConfigService } from '../services/config.service';\n\n@Injectable({providedIn: 'root'})\nexport class UserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {}\n\n async getCurrentUser(): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getUserById(userId: number): Promise<User> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`)\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getAccess(userId?: number): Promise<UserAccess> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/access/`)\n .pipe(map(data => UserAccess.toFront(data)))\n .toPromise();\n }\n\n async updateUser(userId: number, data: any): Promise<User> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/`, User.toBack(data))\n .pipe(map(result => User.toFront(result)))\n .toPromise();\n }\n\n async updateUserPhoto(file: any, filename?: string): Promise<File> {\n const formData = new FormData();\n formData.append('file', file, filename);\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/photo/`, formData)\n .pipe(map(data => File.toFront(data)))\n .toPromise();\n }\n\n async changePassword(userId: number, oldPassword: string, password: string, passwordConfirm: string): Promise<any> {\n const payload = {\n old_password: oldPassword,\n password,\n password_confirm: passwordConfirm\n };\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_password/`, payload)\n .toPromise();\n }\n\n async changeEmail(userId: number, email: string, password: string): Promise<any> {\n const payload = {email, password};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email/`, payload)\n .toPromise();\n }\n\n async changeEmailConfirm(userId, email: string, password: string, token: number): Promise<any> {\n const payload = {email, password, token};\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/change_email_confirm/`, payload)\n .toPromise();\n }\n\n async getUserProfile(userId: number): Promise<UserProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/profile/`)\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async getBasketballProfile(userId: number): Promise<BasketballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/basketball_profile/`)\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballProfile(userId: number): Promise<VolleyballProfile> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_profile/`)\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserProfile(userProfile: UserProfile): Promise<UserProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${userProfile.userId}/profile/`, UserProfile.toBack(userProfile))\n .pipe(map(data => UserProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserBasketballProfile(basketballProfile: BasketballProfile): Promise<BasketballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${basketballProfile.userId}/basketball_profile/`, BasketballProfile.toBack(basketballProfile))\n .pipe(map(data => BasketballProfile.toFront(data)))\n .toPromise();\n }\n\n async updateUserVolleyballProfile(volleyballProfile: VolleyballProfile): Promise<VolleyballProfile> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/${volleyballProfile.userId}/volleyball_profile/`, VolleyballProfile.toBack(volleyballProfile))\n .pipe(map(data => VolleyballProfile.toFront(data)))\n .toPromise();\n }\n\n async getUserPermissions(userId?: number): Promise<UserPermission> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId || 'current'}/permission/`)\n .pipe(map(data => UserPermission.toFront(data)))\n .toPromise();\n }\n\n async updateUserPermission(data: any): Promise<UserPermission> {\n return this.httpClient\n .patch(`${this.configService.get('apiUrl')}/api/v1/user/current/permission/`, UserPermission.toBack(data))\n .pipe(map(result => UserPermission.toFront(result)))\n .toPromise();\n }\n\n async getTeams(userId: number): Promise<Team[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/teams/`)\n .pipe(map(data => Team.toFront(data)))\n .toPromise();\n }\n\n async getInvites(): Promise<TeamInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/`)\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/accept/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async declineInvite(inviteId: number): Promise<TeamInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/invites/${inviteId}/decline/`, {})\n .pipe(map(data => TeamInvite.toFront(data)))\n .toPromise();\n }\n\n async getStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getStreetballStatistics(userId: number): Promise<BasketballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/streetball_statistics/`)\n .pipe(map(data => BasketballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getVolleyballStatistic(userId: number): Promise<VolleyballStatistic> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/volleyball_statistics/`)\n .pipe(map(data => VolleyballStatistic.toFront(data)))\n .toPromise();\n }\n\n async getGames(userId: number): Promise<Game[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/${userId}/games/`)\n .pipe(map(data => Game.toFront(data)))\n .toPromise();\n }\n\n async getGameInvites(): Promise<GameInvite[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/`)\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async acceptGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/accept/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async declineGameInvite(inviteId: number): Promise<GameInvite> {\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/user/current/game_invites/${inviteId}/decline/`, {})\n .pipe(map(data => GameInvite.toFront(data)))\n .toPromise();\n }\n\n async searchUsers(query: string): Promise<User[]> {\n const params = (new HttpParams()).set('search', query);\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/`, {params})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async setWizardShowed(wizard: string): Promise<User> {\n return this.httpClient\n .put(`${this.configService.get('apiUrl')}/api/v1/user/current/wizards/`, {wizard})\n .pipe(map(data => User.toFront(data)))\n .toPromise();\n }\n\n async getTeamEvents(userId: number): Promise<TeamEvent[]> {\n return this.httpClient\n .get(`${this.configService.get('apiUrl')}/api/v1/user/current/team_events/`)\n .pipe(map(data => TeamEvent.toFront(data)))\n .toPromise();\n }\n}\n","import { ModelInstance, ToBackHook, ToFrontHook, BaseModel } from './util';\nimport { VolleyballStatistic } from './volleyball-statistic';\nimport { GameTeamStatisticBase } from './game-team-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n team: 'team',\n competitor_team: 'competitorTeam',\n },\n relation: {\n team: VolleyballStatistic,\n competitorTeam: VolleyballStatistic,\n }\n})\nexport class VolleyballGameTeamStatistic extends BaseModel implements GameTeamStatisticBase {\n team: VolleyballStatistic;\n competitorTeam: VolleyballStatistic;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook } from './util';\nimport { GameStatisticBase } from './game-statistic-base';\n\n@ModelInstance({\n mappingFields: {\n game_user_id: 'gameUserId',\n serve_hits: 'serveHits',\n serve_faults: 'serveFaults',\n serve_aces: 'serveAces',\n stuff_blocks: 'stuffBlocks',\n block_faults: 'blockFaults',\n block_rebounds: 'blockRebounds',\n attack_spikes: 'attackSpikes',\n attack_faults: 'attackFaults',\n attack_shots: 'attackShots',\n receives: 'receives',\n receive_faults: 'receiveFaults',\n excellent_receives: 'excellentReceives',\n serve_receives: 'serveReceives',\n serve_receive_faults: 'serveReceiveFaults',\n excellent_serve_receives: 'excellentServeReceives',\n points: 'points',\n faults: 'faults',\n yellow_cards: 'yellowCards',\n }\n})\nexport class VolleyballGameStatistic extends BaseModel implements GameStatisticBase {\n gameUserId: number;\n serveHits: number;\n serveFaults: number;\n serveAces: number;\n stuffBlocks: number;\n blockFaults: number;\n blockRebounds: number;\n attackSpikes: number;\n attackFaults: number;\n attackShots: number;\n receives: number;\n receiveFaults: number;\n excellentReceives: number;\n serveReceives: number;\n serveReceiveFaults: number;\n excellentServeReceives: number;\n points: number;\n faults: number;\n yellowCards: number;\n\n get id(): number {\n return this.gameUserId;\n }\n\n get attacks(): number {\n return this.attackSpikes + this.attackShots;\n }\n\n get blocks(): number {\n return this.stuffBlocks + this.blockRebounds;\n }\n\n get totalReceives(): number {\n return this.receives + this.excellentReceives;\n }\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { VolleyballGameTeamStatistic } from '../models/volleyball-game-team-statistic';\nimport { VolleyballGameStatistic } from '../models/volleyball-game-statistic';\nimport { VolleyballGameLog } from '../models/volleyball-game-log';\nimport { ConfigService } from '../services/config.service';\nimport { GameBaseApi } from './game-base-api';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi extends GameBaseApi {\n constructor(\n protected httpClient: HttpClient,\n protected configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n async getById(gameId: number): Promise<Game> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/`).pipe(\n map(result => Game.toFront(result))\n ).toPromise();\n }\n\n async getTeamStatistic(gameId: number): Promise<VolleyballGameTeamStatistic> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/team_statistic/`).pipe(\n map(result => VolleyballGameTeamStatistic.toFront(result))\n ).toPromise();\n }\n\n async getUserStatistic(gameId: number): Promise<VolleyballGameStatistic[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/user_statistic/`).pipe(\n map(result => VolleyballGameStatistic.toFront(result))\n ).toPromise();\n }\n\n async getLogs(gameId: number): Promise<VolleyballGameLog[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/logs/`).pipe(\n map(result => VolleyballGameLog.toFront(result))\n ).toPromise();\n }\n\n async downloadProtocol(gameId: number, format: 'pdf' | 'xlsx' | 'html'): Promise<any> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_volleyball_game/${gameId}/game_protocol/`, {\n params: new HttpParams().set('file_type', format),\n responseType: 'blob'\n }).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { Team } from '../models/team';\nimport { map } from 'rxjs/operators';\nimport { TournamentTeam } from '../models/tournament-team';\n\n@Injectable({providedIn: 'root'})\nexport class PublicTeamApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(teamId: number): Promise<Team> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/`).pipe(\n map(result => Team.toFront(result))\n ).toPromise();\n }\n\n getTournamentTeams(teamId: number, leagueId: number): Promise<TournamentTeam[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_team/${teamId}/tournament_teams/`, {params}).pipe(\n map(result => TournamentTeam.toFront(result))\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { User } from '../models/user';\nimport { map } from 'rxjs/operators';\nimport { Tournament } from '../models/tournament';\nimport { TournamentTeamUser } from '../models/tournament-team-user';\n\n@Injectable({providedIn: 'root'})\nexport class PublicUserApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n getById(userId: number): Promise<User> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/`).pipe(\n map(result => User.toFront(result))\n ).toPromise();\n }\n\n getTournaments(userId: number, leagueId: number): Promise<Tournament[]> {\n const params = new HttpParams().set('league_id', leagueId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournaments/`, {params}).pipe(\n map(result => Tournament.toFront(result))\n ).toPromise();\n }\n\n getTournamentUser(userId: number, seasonId: number): Promise<TournamentTeamUser> {\n const params = new HttpParams().set('season_id', seasonId.toString());\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/public_user/${userId}/tournament_user/`, {params}).pipe(\n map(result => TournamentTeamUser.toFront(result))\n ).toPromise();\n }\n}\n","import { BasketballGameLogTypes } from '../models/basketball-game-log';\n\nexport const BasketballGameLogTypeLocalization = {\n [BasketballGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [BasketballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.remove_game]: 'Удаление Ñ Ð¿Ð»Ð¾Ñадки',\n [BasketballGameLogTypes.two_point_attempt]: 'ÐÑоÑок 2 оÑка',\n [BasketballGameLogTypes.three_point_attempt]: 'ÐÑоÑок 3 оÑка',\n [BasketballGameLogTypes.free_throw_attempt]: 'ШÑÑаÑной бÑоÑок',\n [BasketballGameLogTypes.one_point_attempt]: 'ÐÑоÑок 1 оÑко',\n [BasketballGameLogTypes.two_point_made]: '2 оÑка',\n [BasketballGameLogTypes.three_point_made]: '3 оÑка',\n [BasketballGameLogTypes.free_throw_made]: '1 оÑко, ÑÑÑаÑной',\n [BasketballGameLogTypes.one_point_made]: '1 оÑко',\n [BasketballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [BasketballGameLogTypes.block]: 'ÐлокÑоÑ',\n [BasketballGameLogTypes.rebound]: 'ÐодбоÑ',\n [BasketballGameLogTypes.offensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² нападении',\n [BasketballGameLogTypes.defensive_rebound]: 'ÐÐ¾Ð´Ð±Ð¾Ñ Ð² заÑиÑе',\n [BasketballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [BasketballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [BasketballGameLogTypes.personal_foul]: 'Фол',\n [BasketballGameLogTypes.technical_foul]: 'ТеÑ
ниÑеÑкий Ñол',\n [BasketballGameLogTypes.unsportsmanlike_foul]: 'ÐеÑпоÑÑинÑй Ñол',\n [BasketballGameLogTypes.timeout]: 'ТаймаÑÑ',\n [BasketballGameLogTypes.team_rebound]: 'ÐоманднÑй подбоÑ',\n};\n","import { HockeyGameLogTypes } from '../models/hockey-game-log';\n\nexport const HockeyGameLogTypeLocalization = {\n [HockeyGameLogTypes.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [HockeyGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð»Ð¾Ñадки',\n [HockeyGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HockeyGameLogTypes.shot_on_goal]: 'ÐÑоÑок по воÑоÑам',\n [HockeyGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HockeyGameLogTypes.goal]: 'Ðол',\n [HockeyGameLogTypes.shootout_attempt]: 'ÐÑÐ»Ð¸Ñ Ð¿ÑомаÑ
',\n [HockeyGameLogTypes.shootout_goal]: 'ÐÑÐ»Ð¸Ñ Ð³Ð¾Ð»',\n [HockeyGameLogTypes.assist]: 'ÐеÑедаÑа',\n [HockeyGameLogTypes.block_shot]: 'ÐлокиÑовка бÑоÑка',\n [HockeyGameLogTypes.minor_penalty]: 'ÐалÑй ÑÑÑаÑ',\n [HockeyGameLogTypes.major_penalty]: 'ÐолÑÑой ÑÑÑаÑ',\n [HockeyGameLogTypes.misconduct_penalty]: 'ÐиÑÑиплинаÑнÑй ÑÑÑаÑ',\n [HockeyGameLogTypes.game_misconduct_penalty]: 'ÐиÑÑиплинаÑнÑй ÑÑÑÐ°Ñ Ð´Ð¾ конÑа игÑÑ',\n [HockeyGameLogTypes.match_penalty]: 'ÐаÑÑ-ÑÑÑаÑ',\n [HockeyGameLogTypes.penalty_shot]: 'ШÑÑаÑной бÑоÑок',\n [HockeyGameLogTypes.face_off_lose]: 'ÐÑоигÑÑÑ Ð² вбÑаÑÑвании',\n [HockeyGameLogTypes.face_off_win]: 'Ðобеда в вбÑаÑÑвании',\n [HockeyGameLogTypes.save]: 'ÐÑÑажен бÑоÑок',\n [HockeyGameLogTypes.timeout]: 'ТаймаÑÑ',\n [HockeyGameLogTypes.penalty_start]: 'ÐаÑало ÑÑÑаÑного вÑемени',\n [HockeyGameLogTypes.penalty_end]: 'ÐÐ¾Ð½ÐµÑ ÑÑÑаÑного вÑемени'\n};\n","import { FootballGameLogTypes } from '../models/football-game-log';\n\nexport const FootballGameLogTypeLocalization = {\n [FootballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [FootballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [FootballGameLogTypes.shot_miss]: 'Ð£Ð´Ð°Ñ Ð¼Ð¸Ð¼Ð¾',\n [FootballGameLogTypes.shot_on_goal]: 'Ð£Ð´Ð°Ñ Ð² ÑÑвоÑ',\n [FootballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй ÑдаÑ',\n [FootballGameLogTypes.goal]: 'Ðол',\n [FootballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [FootballGameLogTypes.penalty_attempt]: 'ÐеналÑÑи пÑомаÑ
',\n [FootballGameLogTypes.penalty_goal]: 'ÐеналÑÑи гол',\n [FootballGameLogTypes.small_penalty_attempt]: '10-меÑÑовÑй пÑомаÑ
',\n [FootballGameLogTypes.small_penalty_goal]: '10-меÑÑовÑй гол',\n [FootballGameLogTypes.block_shot]: 'ÐлокиÑовка ÑдаÑа',\n [FootballGameLogTypes.corner]: 'Угловой',\n [FootballGameLogTypes.free_kick]: 'ШÑÑаÑной ÑдаÑ',\n [FootballGameLogTypes.save]: 'ÐÑÑажен ÑдаÑ',\n [FootballGameLogTypes.penalty_save]: 'ÐÑÑажен пеналÑÑи',\n [FootballGameLogTypes.small_penalty_save]: 'ÐÑÑажен 10 меÑÑовÑй',\n [FootballGameLogTypes.foul]: 'Фол',\n [FootballGameLogTypes.yellow_card]: 'ÐелÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [FootballGameLogTypes.perfect_pass]: 'ÐаÑ',\n [FootballGameLogTypes.loss]: 'ÐоÑеÑÑ',\n [FootballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [FootballGameLogTypes.out]: 'ÐÑÑ',\n [FootballGameLogTypes.timeout]: 'ТаймаÑÑ'\n};\n","import { HandballGameLogTypes } from '../models/handball-game-log';\n\nexport const HandballGameLogTypeLocalization = {\n [HandballGameLogTypes.enter_game]: 'ÐÑÑ
од на поле',\n [HandballGameLogTypes.exit_game]: 'УÑел Ñ Ð¿Ð¾Ð»Ñ',\n [HandballGameLogTypes.shot_miss]: 'ÐÑоÑок мимо',\n [HandballGameLogTypes.shot_on_goal]: 'ÐÑоÑок в ÑÑвоÑ',\n [HandballGameLogTypes.shot_blocked]: 'ÐаблокиÑованнÑй бÑоÑок',\n [HandballGameLogTypes.goal]: 'Ðол',\n [HandballGameLogTypes.assist]: 'ÐеÑедаÑа',\n [HandballGameLogTypes.penalty_miss]: '7м пÑомаÑ
',\n [HandballGameLogTypes.penalty_shot_on_goal]: '7м в ÑÑвоÑ',\n [HandballGameLogTypes.penalty_goal]: '7м гол',\n [HandballGameLogTypes.save]: 'СÑйв',\n [HandballGameLogTypes.penalty_save]: 'СÑйв 7м',\n [HandballGameLogTypes.foul]: 'Фол',\n [HandballGameLogTypes.yellow_card]: 'ÐеллÑÐ°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.red_card]: 'ÐÑаÑÐ½Ð°Ñ ÐºÐ°ÑÑоÑка',\n [HandballGameLogTypes.two_minute_foul]: '2Ñ
минÑÑнÑй ÑÑÑаÑ',\n [HandballGameLogTypes.turnover]: 'ÐоÑеÑÑ',\n [HandballGameLogTypes.steal]: 'ÐеÑеÑ
ваÑ',\n [HandballGameLogTypes.block_shot]: 'Ðлок бÑоÑка',\n [HandballGameLogTypes.timeout]: 'ТаймаÑÑ'\n};\n","import { OvertimeTypes } from '../models/tournament';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'Ðо ÑазниÑÑ Ð² N мÑÑей',\n [OvertimeTypes.to_score_total]: 'Ðо N оÑков',\n [OvertimeTypes.time]: 'Ðо вÑемени',\n [OvertimeTypes.without_overtime]: 'Ðез овеÑÑайма',\n [OvertimeTypes.to_first_goal]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑайбÑ',\n [OvertimeTypes.to_first_goal_and_bullitts]: 'Ðа N минÑÑ Ð´Ð¾ пеÑвой ÑÐ°Ð¹Ð±Ñ + бÑллиÑÑ',\n [OvertimeTypes.bullitts]: 'ÐÑллиÑÑ',\n [OvertimeTypes.penalties]: 'ÐеналÑÑи',\n [OvertimeTypes.time_and_penalties]: 'ÐополниÑелÑное вÑÐµÐ¼Ñ + пеналÑÑи'\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.member]: 'ÐолÑзоваÑелÑ',\n [TeamUserRole.moderator]: 'ÐодеÑаÑоÑ',\n [TeamUserRole.admin]: 'ÐладелеÑ',\n [TeamUserRole.coach]: 'ТÑенеÑ',\n [TeamUserRole.head_coach]: 'ÐлавнÑй ÑÑенеÑ',\n [TeamUserRole.playing_coach]: 'ÐгÑаÑÑий ÑÑенеÑ',\n [TeamUserRole.manager]: 'ÐенеджеÑ',\n [TeamUserRole.head_manager]: 'ÐенеÑалÑнÑй менеджеÑ',\n [TeamUserRole.captain]: 'ÐапиÑан',\n [TeamUserRole.assistant]: 'ÐÑÑиÑÑенÑ',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-profile';\nimport { GameHockeyPosition } from '../models/hockey-profile';\nimport { FootballWorkFoot, GameFootballPosition } from '../models/football-profile';\nimport { GameHandballPosition } from '../models/handball-profile';\n\nexport const GameBasketballPositionLocalization = {\n [GameBasketballPosition.point_guard]: 'РазÑгÑÑваÑÑий заÑиÑник',\n [GameBasketballPosition.shooting_guard]: 'ÐÑакÑÑÑий заÑиÑник',\n [GameBasketballPosition.small_forward]: 'Ðегкий ÑоÑваÑд',\n [GameBasketballPosition.power_forward]: 'ÐоÑнÑй ÑоÑваÑд',\n [GameBasketballPosition.center]: 'ЦенÑÑовой',\n};\n\nexport const GameBasketballPositionShortLocalization = {\n [GameBasketballPosition.point_guard]: 'PG',\n [GameBasketballPosition.shooting_guard]: 'SG',\n [GameBasketballPosition.small_forward]: 'SF',\n [GameBasketballPosition.power_forward]: 'PF',\n [GameBasketballPosition.center]: 'C',\n};\n\nexport const WorkHandLocalization = {\n [WorkHand.left]: 'ÐеваÑ',\n [WorkHand.right]: 'ÐÑаваÑ'\n};\n\nexport const GameVolleyballPositionLocalization = {\n [GameVolleyballPosition.setter]: 'СвÑзÑÑÑий',\n [GameVolleyballPosition.libero]: 'ÐибеÑо',\n [GameVolleyballPosition.middle_player]: 'ЦенÑÑалÑнÑй блокиÑÑÑÑий',\n [GameVolleyballPosition.receiver_attacker]: 'ÐоигÑовÑик',\n [GameVolleyballPosition.dioganal]: 'ÐиагоналÑнÑй',\n};\n\nexport const GameVolleyballPositionShortLocalization = {\n [GameVolleyballPosition.setter]: 'S',\n [GameVolleyballPosition.libero]: 'L',\n [GameVolleyballPosition.middle_player]: 'MP',\n [GameVolleyballPosition.receiver_attacker]: 'RA',\n [GameVolleyballPosition.dioganal]: 'D',\n};\n\nexport const GameVolleyballPositionShortRuLocalization = {\n [GameVolleyballPosition.setter]: 'ÑвÑз.',\n [GameVolleyballPosition.libero]: 'либеÑо',\n [GameVolleyballPosition.middle_player]: 'блок.',\n [GameVolleyballPosition.receiver_attacker]: 'доигÑ.',\n [GameVolleyballPosition.dioganal]: 'диаг.',\n};\n\nexport const VolleyballWorkHandLocalization = {\n [VolleyballWorkHand.left]: 'ÐеваÑ',\n [VolleyballWorkHand.right]: 'ÐÑаваÑ'\n};\n\nexport const GameHockeyPositionLocalization = {\n [GameHockeyPosition.goaltender]: 'ÐÑаÑаÑÑ',\n [GameHockeyPosition.defensemen]: 'ÐаÑиÑник',\n [GameHockeyPosition.forward]: 'ÐападаÑÑий'\n};\n\nexport const GameFootballPositionLocalization = {\n [GameFootballPosition.goalkeeper]: 'ÐÑаÑаÑÑ',\n [GameFootballPosition.defensemen]: 'ÐаÑиÑник',\n [GameFootballPosition.midfielder]: 'ÐолÑзаÑиÑник',\n [GameFootballPosition.forward]: 'ÐападаÑÑий'\n};\n\nexport const FootballWorkFootLocalization = {\n [FootballWorkFoot.left]: 'ÐеваÑ',\n [FootballWorkFoot.right]: 'ÐÑаваÑ',\n [FootballWorkFoot.both]: 'Ðбе'\n};\n\nexport const GameHandballPositionLocalization = {\n [GameHandballPosition.goalkeeper]: 'ÐÑаÑаÑÑ',\n [GameHandballPosition.winger]: 'ÐÑайний',\n [GameHandballPosition.pivot]: 'ÐинейнÑй',\n [GameHandballPosition.centre_back]: 'ЦенÑÑалÑнÑй',\n [GameHandballPosition.fullback]: 'ÐолÑÑÑедний',\n};\n","import { VolleyballGameLogType } from '../models/volleyball-game-log';\n\nexport const VolleyballGameLogTypeLocalization = {\n [VolleyballGameLogType.enter_game]: 'ÐÑÑ
од на плоÑадкÑ',\n [VolleyballGameLogType.exit_game]: 'УÑ
од Ñ Ð¿Ð»Ð¾Ñадки',\n [VolleyballGameLogType.remove_game]: 'Удаление Ñ Ð¿Ð»Ð¾Ñадки',\n [VolleyballGameLogType.serve_ace]: 'ÐйÑ',\n [VolleyballGameLogType.serve_hit]: 'ÐодаÑа',\n [VolleyballGameLogType.serve_fault]: 'ÐÑибка на подаÑе',\n [VolleyballGameLogType.attack_spike]: 'РезÑлÑÑаÑÐ¸Ð²Ð½Ð°Ñ Ð°Ñака',\n [VolleyballGameLogType.attack_shot]: 'ÐÑака',\n [VolleyballGameLogType.attack_fault]: 'ÐÑибка аÑаки',\n [VolleyballGameLogType.stuff_block]: 'РезÑлÑÑаÑивнÑй блок',\n [VolleyballGameLogType.block_rebound]: 'Ðлок',\n [VolleyballGameLogType.block_fault]: 'ÐÑибка на блоке',\n [VolleyballGameLogType.excellent_receive]: 'ÐÑлиÑнÑй пÑием',\n [VolleyballGameLogType.receive]: 'ÐÑием',\n [VolleyballGameLogType.receive_fault]: 'ÐÑибка на пÑиеме',\n [VolleyballGameLogType.serve_receive]: 'ÐÑием подаÑи',\n [VolleyballGameLogType.excellent_serve_receive]: 'ÐÑлиÑнÑй пÑием подаÑи',\n [VolleyballGameLogType.serve_receive_fault]: 'ÐÑибка пÑиема подаÑи',\n [VolleyballGameLogType.point]: 'ÐÑко',\n [VolleyballGameLogType.fault]: 'ÐÑибка',\n [VolleyballGameLogType.timeout]: 'ТаймаÑÑ',\n [VolleyballGameLogType.yellow_card]: 'ÐÑедÑпÑеждение',\n};\n","import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField } from './util';\nimport { File } from './file';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n files: 'files',\n key_code: 'keyCode',\n },\n relation: {\n files: listField(File)\n }\n})\nexport class LeaguePlaylist extends BaseModel {\n id: number;\n name: string;\n files: File[];\n keyCode: string;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Subject } from 'rxjs/internal/Subject';\nimport { ReplaySubject } from 'rxjs/internal/ReplaySubject';\n\nimport * as Centrifuge from 'centrifuge';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\n\ninterface CentrifugoConfig {\n user: string;\n timestamp: string;\n token: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CentrifugoService {\n private channels$: { [key: string]: Subject<any> } = {};\n private subscriptions: { [key: string]: any } = {};\n private centrifuge;\n private initializeEngineSubject: ReplaySubject<boolean>;\n private connectedSubject = new BehaviorSubject<boolean>(false);\n\n get connected$(): Observable<boolean> {\n return this.connectedSubject;\n }\n\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) { }\n\n listen(channel): Observable<any> {\n if (channel in this.channels$) {\n return this.channels$[channel];\n }\n\n this.channels$[channel] = new Subject<any>();\n const subscription = this.connect().subscribe(connected => {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n setTimeout(() => {\n subscription.unsubscribe();\n });\n });\n\n return this.channels$[channel];\n }\n\n unsubscribe(channel): void {\n if (this.subscriptions[channel]) {\n this.subscriptions[channel].unsubscribe();\n delete this.subscriptions[channel];\n }\n if (this.channels$[channel]) {\n this.channels$[channel].complete();\n delete this.channels$[channel];\n }\n }\n\n connect(): Observable<boolean> {\n if (!this.initializeEngineSubject) {\n this.initializeEngineSubject = new ReplaySubject(1);\n\n this.httpClient.get<CentrifugoConfig>(`${this.configService.get('apiUrl')}/api/v1/centrifugo/`)\n .subscribe(config => {\n this.initializeEngine({\n url: this.configService.get('centrifugoUrl'),\n user: config.user,\n timestamp: config.timestamp,\n token: config.token,\n transports: ['websocket']\n });\n this.centrifuge.connect();\n this.centrifuge.on('connect', () => {\n this.initializeEngineSubject.next(true);\n this.connectedSubject.next(true);\n });\n this.centrifuge.on('disconnect', () => {\n this.connectedSubject.next(false);\n });\n });\n }\n\n return this.initializeEngineSubject;\n }\n\n publish(channel: string, message: any): Observable<any> {\n return new Observable<any>(observer => {\n this.connect().subscribe(() => {\n if (!this.subscriptions[channel]) {\n this.subscriptions[channel] = this.addEngineSubscription(channel);\n }\n this.subscriptions[channel].publish(message).then(res => {\n observer.next(res);\n observer.complete();\n }, error => {\n throw error;\n });\n });\n });\n }\n\n disconnect(): void {\n this.centrifuge.disconnect();\n this.initializeEngineSubject = undefined;\n this.channels$ = {};\n this.subscriptions = {};\n }\n\n private initializeEngine(config: {\n url: string,\n user: string,\n timestamp: string,\n token: string,\n transports: string[]\n }): void {\n this.centrifuge = new Centrifuge(config);\n }\n\n private addEngineSubscription(channel: string): Observable<any> {\n return this.centrifuge.subscribe(channel, this.resolveMessage.bind(this));\n }\n\n private resolveMessage(response: any): void {\n const channel = response.channel;\n if (!this.channels$[channel]) {\n return;\n }\n\n this.channels$[channel].next(response.data);\n }\n}\n","import { ModelInterface } from '../models/util';\n\nexport class StorageEngineField {\n defaultValue: any;\n\n constructor(defaultValue?: any, protected modelClass?: ModelInterface) {\n this.defaultValue = defaultValue;\n }\n\n toFront(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toFront(value);\n }\n return value;\n }\n\n toBack(value: any): any {\n if (this.modelClass) {\n return this.modelClass.toBack(value);\n }\n return value;\n }\n}\n\nexport abstract class StorageEngine {\n constructor(protected name: string, protected fields: {[key: string]: StorageEngineField}) {\n }\n\n addField(key: string, field: StorageEngineField): void {\n this.fields[key] = field;\n }\n\n save(key: string, value: any): void {\n if (!this.fields[key]) {\n return;\n }\n this.setItem(`${this.name}_${key}`, this.fields[key].toBack(value));\n }\n\n get(key: string): any {\n if (!this.fields[key]) {\n return;\n }\n let value = this.getItem(`${this.name}_${key}`);\n if (value === null) {\n value = this.fields[key].defaultValue;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return this.fields[key].toFront(value);\n }\n\n clear(): void {\n for (const field of Object.keys(this.fields)) {\n this.removeItem(field);\n }\n }\n\n protected getItem(key: string): any {\n throw new Error(`Function getItem for store engine ${typeof this} not implemented`);\n }\n\n protected setItem(key: string, value: any): any {\n throw new Error(`Function setItem for store engine ${typeof this} not implemented`);\n }\n\n protected removeItem(key: string): void {\n throw new Error(`Function deleteItem for store engine ${typeof this} not implemented`);\n }\n}\n","import { StorageEngine } from './storage-engine';\n\nexport class LocalStorageEngine extends StorageEngine {\n protected setItem(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n protected getItem(key: string): any {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch (e) {\n return;\n }\n }\n\n protected removeItem(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","export function getCookie(name: string): string {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop().split(';').shift();\n }\n return null;\n}\n","export interface LinkFavicon {\n rel: string;\n sizes?: string;\n href: string;\n type?: string;\n color?: string;\n}\n\nexport function getIconsData(folder: string): LinkFavicon[] {\n return [\n {rel: 'apple-touch-icon', sizes: '180x180', href: `/assets/favicon/${folder}apple-touch-icon.png`},\n {rel: 'icon', type: 'image/png', sizes: '32x32', href: `/assets/favicon/${folder}favicon-32x32.png`},\n {rel: 'icon', type: 'image/png', sizes: '16x16', href: `/assets/favicon/${folder}favicon-16x16.png`},\n {rel: 'shortcut icon', href: `/assets/favicon/${folder}favicon.ico`},\n {rel: 'manifest', href: `/assets/favicon/${folder}site.webmanifest`},\n {rel: 'mask-icon', href: `/assets/favicon/${folder}safari-pinned-tab.svg`, color: '#ff0000'}\n ];\n}\n\nexport function changeFavicons(document: Document, leagueAlias: string): void {\n let folder = '';\n if (leagueAlias === 'ablmoscow') {\n folder = 'abl/';\n }\n const data = getIconsData(folder);\n for (const item of data) {\n const link = document.createElement('link');\n for (const key of Object.keys(item)) {\n link.setAttribute(key, item[key]);\n }\n document.head.appendChild(link);\n }\n}\n","import { Inject, Injectable, Injector, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { getCookie } from './utils/cookie';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ConfigService } from './services/config.service';\n\n@Injectable()\nexport class HttpCookieInterceptor implements HttpInterceptor {\n private isBrowser = isPlatformBrowser(this.platformId);\n\n constructor(\n private injector: Injector,\n private configService: ConfigService,\n @Inject(PLATFORM_ID) private platformId: string,\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!this.isBrowser) {\n return next.handle(req);\n }\n const apiUrl = this.configService.get('apiUrl');\n if (apiUrl === req.url.substr(0, apiUrl.length)) {\n req = req.clone({withCredentials: true});\n }\n const csrf = getCookie('csrftoken');\n if (csrf) {\n req = req.clone({\n setHeaders: {'X-CSRFToken': csrf}\n });\n }\n return next.handle(req);\n }\n}\n","import {\n ɵComponentType as ComponentType,\n ɵDirectiveType as DirectiveType,\n ɵComponentDef as ComponentDef,\n ɵDirectiveDef as DirectiveDef\n} from '@angular/core';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Subject } from 'rxjs/internal/Subject';\n\nexport interface OnDestroyLike {\n ngOnDestroy(): void;\n [key: string]: any;\n}\n\nexport function componentDestroyed(component: OnDestroyLike): Observable<void> {\n if ((component.constructor as any).__componentDestroyed$) {\n return (component.constructor as any).__componentDestroyed$;\n }\n throw new Error('Use @UntilDestroy decorator in class');\n}\n\nexport function UntilDestroy(cmpType: any) {\n const def = getDef(cmpType as any);\n const original = (def as any).onDestroy;\n cmpType.__componentDestroyed$ = new Subject<void>();\n (def as any).onDestroy = function() {\n cmpType.__componentDestroyed$.next();\n cmpType.__componentDestroyed$.complete();\n original.apply(this);\n };\n}\n\nfunction getDef<T>(\n type: DirectiveType<T> | ComponentType<T>\n): DirectiveDef<T> | ComponentDef<T> {\n return (type as ComponentType<T>).ɵcmp || (type as DirectiveType<T>).ɵdir;\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { debounceTime, delay, map, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nexport interface CheckEmailServiceInterface {\n checkEmail(value: string, selfCheck: boolean): Observable<boolean>;\n}\n\nexport const minLengthArrayValidator = (minLength: number) => {\n return (c: AbstractControl) => {\n return c.value.length < minLength\n ? {minLengthArray: {valid: false}}\n : null;\n };\n};\n\nexport const validatePhone = (control: AbstractControl) => {\n if (!control.value) {\n return null;\n }\n const value = `${control.value}`.replace(/\\D/gi, '');\n return value.length === 11 ? null : {invalidPhone: {valid: false}};\n};\n\nexport const validateDate = (control: AbstractControl) => {\n const re = /\\d{2}\\.\\d{2}\\.\\d{4}/gi;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidDate: {valid: false}};\n};\n\nexport const validateEmail = (authService: CheckEmailServiceInterface, selfCheck = true, ignore = []) => {\n const subject = of(null).pipe(\n delay(500)\n );\n return (control: AbstractControl) => {\n if (ignore.indexOf(control.value) > -1) {\n return of(null);\n }\n return subject.pipe(\n switchMap(() => authService.checkEmail(control.value, selfCheck).pipe(\n map(valid => valid ? null : {emailTaken: true})\n ))\n );\n };\n};\n\nexport const validateUrl = (control: AbstractControl) => {\n const re = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/;\n if (!control.value || re.test(control.value)) {\n return null;\n }\n return {invalidUrl: true};\n};\n\nexport function fileSizeValidator(maxFileSize: number): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value) {\n return null;\n }\n };\n}\n","export function getEnumOptions(enumClass): number[] {\n return Object.keys(enumClass)\n .map(v => enumClass[v])\n .filter(v => isNaN(+v) === false)\n .map(v => +v);\n}\n\n","import { captureException } from '@sentry/browser';\n\nexport function handleError(error, force = false, production = true) {\n if (!(error && (error.status === 0 || error.status === 404)) || (force && error.status !== 0)) {\n captureException(error);\n }\n\n if (!production) {\n console.error(error);\n }\n}\n","export function isTouchDevice() {\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n const mq = (q) => {\n return window.matchMedia(q).matches;\n };\n\n if (('ontouchstart' in window) || (window as any).DocumentTouch && document instanceof (window as any).DocumentTouch) {\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 query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n}\n","import { FormGroup } from '@angular/forms';\n\nexport function markFormGroupTouched(formGroup: FormGroup) {\n (Object as any).values(formGroup.controls).forEach(control => {\n control.markAsTouched();\n control.markAsDirty();\n\n if (control instanceof FormGroup) {\n markFormGroupTouched(control);\n } else if (control.controls) {\n control.controls.forEach(c => {\n if (c instanceof FormGroup) {\n markFormGroupTouched(c);\n } else {\n c.markAsTouched();\n c.markAsDirty();\n }\n });\n }\n });\n}\n"]}
|