@mtgame/core 0.0.5 → 0.0.6

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","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/user.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/volleyball-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/team-user.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/basketball-game-log.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/basketball-statistic.ts","ng://@mtgame/core/models/basketball-game-team-statistic.ts","ng://@mtgame/core/models/basketball-game-statistic.ts","ng://@mtgame/core/models/tournament-event.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/league-news.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/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage.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-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-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/localization/basketball-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/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","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","listField","modelClass","isArray","DateField","_super","date","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","slice","DateTimeField","ModelInstance","config","mappingFields","relation","path","modelType","map","item","instance","backField","frontField","extractValue","undefined","FileEngine","ToFrontHook","descriptor","args","_i","parseMethod","ToBackHook","keyParts","split","keyParts_1","keyParts_1_1","k","SportTypes","File","file","id","name","mime_type","size","engine","GameBasketballPosition","WorkHand","Sport","isBasketball","basketball","parentId","isClassicBasketball","classic_basketball","isVolleyball","volleyball","isStreetball","streetball","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","UserGender","VolleyballProfile","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","GameTimeTypes","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","wizards","city","gender","is_active","basketballProfile","volleyballProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","socialLinks","find","link","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","cover","OvertimeTypes","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","shot_clock_enabled","game_time_type","basketballStatisticType","gameTimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","preview_image","location","price","regulation_files","settings","league","teams_count","status","team_winner","regulationFile","teamWinner","VolleyballGameTypes","BasketballGameConfig","overtime_timeout_count","statistic_type","overtimeType","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","originalPhoto","listPhoto","detailPhoto","videoPreview","TeamUserRole","Game","_this","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","competitor_team","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","basketball_game_config","volleyball_game_config","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media","resultType","basketballGameConfig","volleyballGameConfig","tournamentCourt","TeamUser","teamPlayer","role","number","TournamentGroup","TournamentTeam","gamesCount","wonGamesCount","group","last_games_count","last_games_won","missed_sum","score_points_sum","missed_points_sum","games","notifications_count","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","TournamentTeamUser","middleName","tournament_team","team_user","disqualified","disqualification","has_changes","tournamentTeam","teamUser","GameUser","tournament_team_user","updated_at","tournamentTeamUser","updatedAt","updateItemInArray","force","checkFunction","isFunction","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","BasketballGameLogTypes","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","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","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","newbie","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","TournamentEventTypes","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","BasketballGameApi","httpClient","configService","getById","gameId","toPromise","getUsers","getTeamStatistic","getUserStatistic","getLogs","HttpClient","Feedback","theme","message","files","FeedbackApi","sendFeedback","post","response","FileApi","upload","fileData","filename","formData","FormData","append","createZipArchive","files_1","files_1_1","responseType","LeagueNews","title","preview_text","detail_text","picture","is_main","tournaments","PollStatuses","TournamentEvent","news","event","LeagueApi","getByAlias","getByDomain","domain","getTournaments","leagueId","getEvents","page","filters","params","HttpParams","search","observe","total","headers","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getNewsById","newsId","getTournamentNewsList","tournamentId","MediaApi","getMedia","mediaId","getTournamentGameMedia","tournamentTour","tournamentStageId","playoffId","playoffStage","getLeagueGameMedia","getGameMediaById","getGameMedia","createZip","mediaIds","GameInviteStatus","PollVariant","uuid","PollAnswer","answer_uuid","poll_id","Poll","variantsWithAnswers","_variants","_answers","calculateAnswersPercentage","variants","answersByVariant","reduce","acc","answerUuid","variant","percent","round","sort","a","author","answers","multiple_answer","anonymous","created_at","createdAt","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","tournament_team_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","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","TournamentStageStatuses","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","query","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","getVolleyballStatistic","joinTeam","leaveTeam","getGames","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentNews","text","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","stages","TournamentStage","generateArray","UserPermissionTypes","PlayoffSettings","rounds","final_rounds","third_place_rounds","Playoff","log","teamsCount","getPlayoffStages","stagesCount","stage","pow","is_official","TournamentStageTeam","final_standing","received_points","TournamentApi","getNews","getTournamentStages","getPlayoff","getPlayoffGames","getGamesStages","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatistic","per_game","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","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","isScoreType","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","BasketballGameLogTypeLocalization","_a$1","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","OvertimeTypeLocalization","_a$2","to_score_diff","to_score_total","TeamUserRoleLocalization","_a$3","moderator","member","admin","GameBasketballPositionLocalization","_a$4","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","VolleyballGameLogTypeLocalization","_a$5","CentrifugoService","channels$","subscriptions","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","fields","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,EClJJ,iBAiBL,SAAAI,EAAYC,WACV,GAAIA,MACF,IAAkB,IAAAC,EAAAV,EAAAzE,OAAOoF,KAAKF,IAAKG,EAAAF,EAAApC,QAAAsC,EAAAlC,KAAAkC,EAAAF,EAAApC,OAAE,CAAhC,IAAMtB,EAAG4D,EAAAxC,MACZrC,KAAKiB,GAAOyD,EAAKzD,sGAYzB,OAPSwD,EAAAK,QAAP,SAAeC,KAIRN,EAAAO,OAAP,SAAcD,KAGhBN,cAMgBQ,EAAUC,GACxB,MAAO,CACLJ,QAAS,SAACzC,GACR,OAAI8C,OAAO9C,GACF6C,EAAU7C,GAEVA,GAGX2C,OAAQ,SAAC3C,GACP,OAAI8C,OAAO9C,GACFA,EAEA6C,EAAU7C,cAMT+C,EAAUC,GACxB,MAAO,CACLP,QAAS,SAACzC,GACR,OAAK1C,MAAM2F,QAAQjD,GAGZgD,EAAWP,QAAQzC,GAFjB,IAIX2C,OAAQ,SAAC3C,GACP,OAAK1C,MAAM2F,QAAQjD,GAGZgD,EAAWL,OAAO3C,GAFhB,uBAOf,SAAAkD,mDAuBA,OAvB+BzF,EAAAyF,EAAAC,GACtBD,EAAAT,QAAP,SAAeW,GACb,OAAIA,EACK,IAAIC,KAAKD,QAEhB,GAGGF,EAAAP,OAAP,SAAcS,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+Bd,iBAyB/B,SAAA2B,mDAuBA,OAvBmCtG,EAAAsG,EAAAZ,GAC1BY,EAAAtB,QAAP,SAAeW,GACb,OAAIA,EACK,IAAIC,KAAKD,QAEhB,GAGGW,EAAApB,OAAP,SAAcS,GACZ,GAAIA,EAAM,CACQ,IAAIC,KAAKA,KAAKC,IAC5BF,EAAKG,cACLH,EAAKI,WACLJ,EAAKK,UACLL,EAAKM,WACLN,EAAKO,aACLP,EAAKQ,eAEP,OAAOR,EAAKS,gBAKlBE,GAvBmC3B,YAyBnB4B,EACdC,GAKA,OAAO,SAACtF,GACFsF,IACEA,EAAOC,gBACTvF,EAA+B,iBAAIsF,EAAOC,eAExCD,EAAOE,WACTxF,EAAyB,WAAIsF,EAAOE,UAEtCxF,EAAyB,WAAI,SAAC+D,EAAU0B,GACtC,OA0DR,SAAS3B,EAAQ4B,EAA+BhC,EAAW+B,WAEzD,GAAI9G,MAAM2F,QAAQZ,GAChB,OAAOA,EAAKiC,KAAI,SAAAC,GACd,OAAO9B,EAAQ4B,EAAWE,MAI9B,IAAMC,EAAW,IAAIH,EAGfH,EAAgBG,EAAkC,iBAClDF,EAAWE,EAA4B,WAC7C,GAAIH,MACF,IAAwB,IAAA5B,EAAAV,EAAAzE,OAAOoF,KAAK2B,IAAc1B,EAAAF,EAAApC,QAAAsC,EAAAlC,KAAAkC,EAAAF,EAAApC,OAAE,CAA/C,IAAMuE,EAASjC,EAAAxC,MACZ0E,EAAaR,EAAcO,GAC3BzE,EAAQ2E,EAAaF,EAAWpC,GAClC8B,GAAYA,EAAS3G,eAAekH,GACtCF,EAASE,GAAcP,EAASO,GAAYjC,QAAQzC,GAEpDwE,EAASE,GAAc1E,oGAK7B,OAAOwE,EAnFM/B,CAAQ9D,EAAQ+D,IAEzB/D,EAAwB,UAAI,SAAC+D,EAAU0B,GACrC,OAmFR,SAASzB,EAAO0B,EAA+BG,EAAeJ,WAC5D,IAAKI,EACH,OAAOA,EAIT,GAAIlH,MAAM2F,QAAQuB,GAChB,OAAOA,EAASF,KAAI,SAAAC,GAClB,OAAO5B,EAAO0B,EAAWE,MAI7B,IAAMlC,EAAO,GACP6B,EAAgBG,EAAkC,iBAClDF,EAAWE,EAA4B,WAC7C,GAAIH,MACF,IAAwB,IAAA5B,EAAAV,EAAAzE,OAAOoF,KAAK2B,IAAc1B,EAAAF,EAAApC,QAAAsC,EAAAlC,KAAAkC,EAAAF,EAAApC,OAAE,CAA/C,IAAMuE,EAASjC,EAAAxC,MACZ0E,EAAaR,EAAcO,GAC7BN,GAAYA,EAAS3G,eAAekH,SAAwCE,IAAzBJ,EAASE,GAC9DrC,EAAKoC,GAAaN,EAASO,GAAY/B,OAAO6B,EAASE,IAEvDrC,EAAKoC,GAAaD,EAASE,qGAKjC,OAAOrC,EA7GMM,CAAOhE,EAAQ+D,UC5IlBmC,EDkJCC,EAAc,SAACnG,EAA4BC,EAAsBmG,GAC5E,MAAO,CACL/E,MAAO,eAAC,IAAAgF,EAAA,GAAAC,EAAA,EAAAA,EAAA5G,UAAAC,OAAA2G,IAAAD,EAAAC,GAAA5G,UAAA4G,GACN,IAAMC,EAAcvG,EAAyB,WAC7C,GAAIuG,EACF,OAAOA,EAAYF,EAAK,GAAKA,EAAK1G,OAAS,EAAI0G,EAAK,QAAKJ,MAOpDO,EAAa,SAACxG,EAA4BC,EAAsBmG,GAC3E,MAAO,CACL/E,MAAO,eAAC,IAAAgF,EAAA,GAAAC,EAAA,EAAAA,EAAA5G,UAAAC,OAAA2G,IAAAD,EAAAC,GAAA5G,UAAA4G,GACN,IAAMC,EAAcvG,EAAwB,UAC5C,GAAIuG,EACF,OAAOA,EAAYF,EAAK,OAOhC,SAASL,EAAa/F,EAAKyD,WACzB,GAAKA,EAAL,CAIA,IAAM+C,EAAWxG,EAAIyG,MAAM,KAC3B,GAAwB,IAApBD,EAAS9G,OACX,OAAIM,KAAOyD,EACFA,EAAKzD,QAEZ,MAIJ,IAAgB,IAAA0G,EAAA1D,EAAAwD,GAAQG,EAAAD,EAAApF,QAAAqF,EAAAjF,KAAAiF,EAAAD,EAAApF,OAAE,CAArB,IAAMsF,EAACD,EAAAvF,MACV,IAAIqC,KAAQmD,KAAKnD,GAGf,OAFAA,EAAOA,EAAKmD,qGAMhB,OAAOnD,IChMGwC,EAAAA,EAAAA,aAAAA,EAAAA,WAAU,KACpBA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,GAAA,GAAA,SCFUY,eDkBZ,SAAAC,KAiBA,OARSA,EAAAjD,QAAP,SAAeJ,GACb,OAAO,MAIFqD,EAAA/C,OAAP,SAAcgD,GACZ,OAAO,MANTlH,EAAA,CADCqG,qBAMDrG,EAAA,CADC0G,oBAbUO,EAAIjH,EAAA,CAbhBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJC,KAAM,OACNzB,KAAM,OACN0B,UAAW,WACXC,KAAM,OACNC,OAAQ,UAEV7B,SAAU,CACR6B,OAAQpD,EAAUiC,EAAAA,gBAGTa,OClBDD,EAAAA,EAAAA,aAAAA,EAAAA,WAAU,KACpBA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,mBAAA,GAAA,qBACAA,EAAAA,EAAA,WAAA,GAAA,iBCJUQ,EAQAC,gBDOZ,SAAAC,mDA+BA,OA/B2B1I,EAAA0I,EAAAhD,GAMzBgD,EAAAtI,UAAAuI,aAAA,WACE,OAAOzI,KAAKiI,KAAOH,EAAAA,WAAWY,YAAc1I,KAAK2I,WAAab,EAAAA,WAAWY,YAG3EF,EAAAtI,UAAA0I,oBAAA,WACE,OAAO5I,KAAKiI,KAAOH,EAAAA,WAAWe,oBAGhCL,EAAAtI,UAAA4I,aAAA,WACE,OAAO9I,KAAKiI,KAAOH,EAAAA,WAAWiB,YAAc/I,KAAK2I,WAAab,EAAAA,WAAWiB,YAG3EP,EAAAtI,UAAA8I,aAAA,WACE,OAAOhJ,KAAKiI,KAAOH,EAAAA,WAAWmB,YAIzBT,EAAA1D,QAAP,SAAeJ,GACb,OAAO,MAIF8D,EAAAxD,OAAP,SAAckE,GACZ,OAAO,MANTpI,EAAA,CADCqG,qBAMDrG,EAAA,CADC0G,oBA3BUgB,EAAK1H,EAAA,CARjBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJC,KAAM,OACNiB,UAAW,WACXC,WAAY,gBAGHZ,IAAc/D,gBEP3B,SAAA4E,KAWA,OAJSA,EAAAvE,QAAP,SAAezC,KAGRgH,EAAArE,OAAP,SAAc3C,KAHdvB,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBATU6B,EAAWvI,EAAA,CARvBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJqB,QAAS,SACTC,OAAQ,SACRC,OAAQ,aAGCH,oBCFb,SAAAI,mDASA,OAT0B3J,EAAA2J,EAAAjE,GAKjBiE,EAAA3E,QAAP,SAAezC,KAGRoH,EAAAzE,OAAP,SAAc3C,KAHdvB,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAPUiC,EAAI3I,EAAA,CANhBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJC,KAAM,WAGGuB,IAAahF,IFNd6D,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,YGVUmB,EAQAC,gBHiBZ,SAAAC,mDAaA,OAbuC9J,EAAA8J,EAAApE,GAO9BoE,EAAA9E,QAAP,SAAezC,KAIRuH,EAAA5E,OAAP,SAAc3C,KAJdvB,EAAA,CADCqG,qBAKDrG,EAAA,CADC0G,oBAVUoC,EAAiB9I,EAAA,CAZ7BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJqB,QAAS,SACTO,SAAU,WACVC,UAAW,YAEbtD,SAAU,CACRqD,SAAU5E,EAAUqD,EAAAA,wBACpByB,SAAU9E,EAAUsD,EAAAA,cAGXqB,IAA0BnF,IGzB3BiF,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,YCLUK,gBDoBZ,SAAAC,mDAaA,OAbuCnK,EAAAmK,EAAAzE,GAO9ByE,EAAAnF,QAAP,SAAezC,KAIR4H,EAAAjF,OAAP,SAAc3C,KAJdvB,EAAA,CADCqG,qBAKDrG,EAAA,CADC0G,oBAVUyC,EAAiBnJ,EAAA,CAZ7BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJqB,QAAS,SACTO,SAAU,WACVC,UAAW,YAEbtD,SAAU,CACRqD,SAAU5E,EAAUyE,EAAAA,wBACpBK,SAAU9E,EAAU0E,EAAAA,wBAGXM,IAA0BxF,ICpB3BuF,EAAAA,EAAAA,aAAAA,EAAAA,WAAU,KACpBA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,OAAA,GAAA,aCFUE,EAMAC,EAMAC,EAMAC,EAMAC,gBDSZ,SAAAC,mDA8CA,OA9C0BzK,EAAAyK,EAAA/E,GAkBjB+E,EAAAzF,QAAP,SAAeJ,GACb,OAAO,MAIF6F,EAAAvF,OAAP,SAAcwF,GACZ,OAAO,MAGThL,OAAAgC,eAAI+I,EAAArK,UAAA,WAAQ,KAAZ,WACE,MAAO,CAACF,KAAKyK,SAAUzK,KAAK0K,WAAWC,QAAO,SAAApK,GAAK,OAAAA,KAAGqK,KAAK,sCAG7DpL,OAAAgC,eAAI+I,EAAArK,UAAA,YAAS,KAAb,WACE,MAAO,CAACF,KAAKyK,SAAUzK,KAAK0K,WAAWC,QAAO,SAAApK,GAAK,OAAAA,KAAGqK,KAAK,sCAG7DpL,OAAAgC,eAAI+I,EAAArK,UAAA,WAAQ,KAAZ,WACE,MAAO,CAACF,KAAKyK,SAAUzK,KAAK0K,WAAWC,QAAO,SAAApK,GAAK,OAAAA,KAAGoG,KAAI,SAAApG,GAAK,OAAAA,EAAEsK,OAAO,EAAG,MAAID,KAAK,qCAGtFpL,OAAAgC,eAAI+I,EAAArK,UAAA,MAAG,KAAP,WACE,IAAKF,KAAK8K,UACR,OAAO,KAET,IAAMC,GAAO,IAAKrF,MAAQsF,UAAYhL,KAAK8K,UAAUE,UACrD,OAAOC,KAAKC,MAAMH,EAAI,0CA1BxBjK,EAAA,CADCqG,qBAMDrG,EAAA,CADC0G,oBAtBU+C,EAAIzJ,EAAA,CA5BhBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJkD,UAAW,WACXC,WAAY,YACZC,YAAa,aACbC,MAAO,QACPC,MAAO,QACPC,WAAY,YACZC,MAAO,QACPC,QAAS,UACTC,mBAAoB,oBACpBC,mBAAoB,oBACpBC,QAAS,UACTC,KAAM,OACNC,OAAQ,SACRC,UAAW,YAEbxF,SAAU,CACRsE,UAAWvF,EACXkG,MAAO1D,EACP2D,QAASrC,EACT4C,kBAAmBrC,EACnBsC,kBAAmBjC,EACnB6B,KAAMrC,EACNsC,OAAQ9G,EAAU+E,EAAAA,gBAGTO,IAAa9F,iBEZ1B,SAAA0H,mDAiCA,OAjC0BrM,EAAAqM,EAAA3G,GAaxB2G,EAAAjM,UAAAkM,kBAAA,WACE,IAAMC,EAAY,CAAC,cAOnB,OANIrM,KAAKkJ,MAAMT,gBACb4D,EAAUrI,KAAK,yBAEbhE,KAAKkJ,MAAMJ,gBACbuD,EAAUrI,KAAK,yBAEVqI,EAAUzB,KAAK,MAIjBuB,EAAArH,QAAP,SAAeJ,GACb,OAAO,MAIFyH,EAAAnH,OAAP,SAAcsH,GACZ,OAAO,MANTxL,EAAA,CADCqG,qBAMDrG,EAAA,CADC0G,oBA7BU2E,EAAIrL,EAAA,CAtBhBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJC,KAAM,OACNgB,MAAO,QACPqD,KAAM,OACNC,MAAO,QACPV,KAAM,OACNW,YAAa,aACbC,gBAAiB,gBACjBC,YAAa,aACbC,UAAW,WACXC,sBAAuB,uBAEzBrG,SAAU,CACR0C,MAAOV,EACP+D,KAAMxE,EACNyE,MAAOjC,EACPuB,KAAMrC,EACNqD,oBAAqBvH,MAGZ4G,IAAa1H,iBCf1B,SAAAsI,mDAUA,OAVkCjN,EAAAiN,EAAAvH,GAMzBuH,EAAAjI,QAAP,SAAeJ,KAGRqI,EAAA/H,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBARUuF,EAAYjM,EAAA,CAVxBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJ+E,SAAU,UACVR,MAAO,SAEThG,SAAU,CACRgG,MAAOjC,MAGEwC,IAAqBtI,iBCgBlC,SAAAwI,mDAiCA,OAjC4BnN,EAAAmN,EAAAzH,GAiBnByH,EAAAnI,QAAP,SAAeJ,KAGRuI,EAAAjI,OAAP,SAAcN,KAEdlF,OAAAgC,eAAIyL,EAAA/M,UAAA,SAAM,KAAV,WACE,OAAOF,KAAKkN,YAAYC,MAAK,SAAAC,GAAQ,MAAuB,oBAAvBA,EAAKvC,OAAO,EAAG,wCAGtDrL,OAAAgC,eAAIyL,EAAA/M,UAAA,SAAM,KAAV,WACE,OAAOF,KAAKkN,YAAYC,MAAK,SAAAC,GAAQ,MAAuB,8BAAvBA,EAAKvC,OAAO,EAAG,wCAGtDrL,OAAAgC,eAAIyL,EAAA/M,UAAA,YAAS,KAAb,WACE,OAAOF,KAAKkN,YAAYC,MAAK,SAAAC,GAAQ,MAAuB,8BAAvBA,EAAKvC,OAAO,EAAG,wCAdtD/J,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAnBUyF,EAAMnM,EAAA,CAxBlBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJsE,KAAM,OACNc,cAAe,eACfC,cAAe,eACfpF,KAAM,OACNqF,MAAO,QACPrE,MAAO,QACPsE,YAAa,cACbC,aAAc,cACdC,MAAO,QACPC,aAAc,eACdC,kBAAmB,mBACnBf,sBAAuB,sBACvBgB,MAAO,SAETrH,SAAU,CACRmH,aAAcZ,EACdR,KAAMxE,EACN8F,MAAO9F,EACPmB,MAAOV,MAGEyE,IAAexI,IHtBhByF,EAAAA,EAAAA,kBAAAA,EAAAA,gBAAe,KACzB,MAAA,QACAA,EAAA,YAAA,cACAA,EAAA,KAAA,QAGUC,EAAAA,EAAAA,qBAAAA,EAAAA,mBAAkB,KAC5BA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,OAAA,GAAA,UAGUC,EAAAA,EAAAA,mBAAAA,EAAAA,iBAAgB,KAC1BA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,IAAA,GAAA,OAGUC,EAAAA,EAAAA,2BAAAA,EAAAA,yBAAwB,KAClCA,EAAA,SAAA,GAAA,WACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,SAAA,GAAA,YAGUC,EAAAA,EAAAA,gBAAAA,EAAAA,cAAa,KACvBA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,MAAA,GAAA,YI9BUwD,gBJqEZ,SAAAC,mDAiCA,OAjCwCjO,EAAAiO,EAAAvI,GA6B/BuI,EAAAjJ,QAAP,SAAeJ,KAGRqJ,EAAA/I,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBA/BUuG,EAAkBjN,EAAA,CApC9BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJ8D,OAAQ,SACRiC,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,mBAAoB,mBACpBC,eAAgB,gBAElB/I,SAAU,CACR4H,KAAMnJ,EAAUiF,EAAAA,iBAChB6B,OAAQ9G,EAAUmF,EAAAA,kBAClBoF,wBAAyBvK,EAAUoF,EAAAA,0BACnCoF,aAAcxK,EAAUqF,EAAAA,mBAGfyD,IAA2BtJ,kBA+CxC,SAAAiL,mDAYA,OAZ0C5P,EAAA4P,EAAAlK,GAQjCkK,EAAA5K,QAAP,SAAeJ,KAGRgL,EAAA1K,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVUkI,EAAoB5O,EAAA,CAZhCuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJ0H,QAAS,SACTC,cAAe,eACftD,KAAM,OACNuD,OAAQ,UAEVrJ,SAAU,CACR8F,KAAMH,MAGGuD,IAA6BjL,kBAiD1C,SAAAqL,mDAqCA,OArCgChQ,EAAAgQ,EAAAtK,GAqB9BsK,EAAA5P,UAAAkM,kBAAA,WACE,IAAMC,EAAY,CAAC,cAOnB,OANIrM,KAAKkJ,MAAMT,gBACb4D,EAAUrI,KAAK,yBAEbhE,KAAKkJ,MAAMJ,gBACbuD,EAAUrI,KAAK,yBAEVqI,EAAUzB,KAAK,MAIjBkF,EAAAhL,QAAP,SAAeJ,KAGRoL,EAAA9K,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAnCUsI,EAAUhP,EAAA,CAnCtBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJC,KAAM,OACNqF,MAAO,QACPhB,KAAM,OACNsB,MAAO,QACPkC,cAAe,eACfjE,KAAM,OACN5C,MAAO,QACP8G,SAAU,WACVxC,YAAa,cACb/H,KAAM,OACNwK,MAAO,QACPC,iBAAkB,kBAClBC,SAAU,WACVC,OAAQ,SACRC,YAAa,aACbxD,sBAAuB,sBACvByD,OAAQ,SACRC,YAAa,cAEf/J,SAAU,CACR+F,KAAMxE,EACN8F,MAAO9F,EACP+D,KAAMrC,EACNP,MAAOV,EACPgI,eAAgBzI,EAChBoI,SAAUpC,EACVtI,KAAMW,EACNgK,OAAQnD,EACRqD,OAAQrL,EAAUkF,EAAAA,oBAClBsG,WAAYf,OAGHI,IAAmBrL,IIrKpBqJ,EAAAA,EAAAA,gBAAAA,EAAAA,cAAa,KACvBA,EAAA,eAAA,GAAA,iBACAA,EAAAA,EAAA,cAAA,GAAA,gBACAA,EAAAA,EAAA,KAAA,GAAA,WCJU4C,kBD6BZ,SAAAC,mDAoBA,OApB0C7Q,EAAA6Q,EAAAnL,GAgBjCmL,EAAA7L,QAAP,SAAeJ,KAGRiM,EAAA3L,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAlBUmJ,EAAoB7P,EAAA,CAtBhCuF,EAAc,CACbE,cAAe,CACb+H,cAAe,eACfC,YAAa,aACbQ,iBAAkB,gBAClBP,cAAe,eACfC,cAAe,eACfC,eAAgB,gBAChBP,iBAAkB,iBAClBS,cAAe,eACfgC,uBAAwB,uBACxB/B,aAAc,cACdgC,eAAgB,gBAChBvB,mBAAoB,mBACpBC,eAAgB,gBAElB/I,SAAU,CACRsK,aAAc7L,EAAU6I,EAAAA,eACxBiD,cAAe9L,EAAUoF,EAAAA,0BACzBoF,aAAcxK,EAAUqF,EAAAA,mBAGfqG,IAA6BlM,IC7B9BiM,GAAAA,EAAAA,sBAAAA,EAAAA,oBAAmB,KAC7BA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,cAAA,GAAA,oBCGUM,GAQAC,kBDKZ,SAAAC,mDAqBA,OArB0CpR,EAAAoR,EAAA1L,GAQxChG,OAAAgC,eAAI0P,EAAAhR,UAAA,YAAS,KAAb,WACE,OAAOF,KAAKmR,WAAaT,EAAAA,oBAAoBU,cAAgB,EAAI,mCAGnEF,EAAAhR,UAAAmR,eAAA,SAAeC,GACb,OAAOA,IAAQtR,KAAKuR,UAAYvR,KAAKwR,eAAiBxR,KAAKyR,YAItDP,EAAApM,QAAP,SAAeJ,KAGRwM,EAAAlM,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAnBU0J,EAAoBpQ,EAAA,CAbhCuF,EAAc,CACbE,cAAe,CACboI,UAAW,WACXC,cAAe,eACfC,aAAc,cACdC,iBAAkB,kBAClB4C,aAAc,aACdC,kBAAmB,kBAErBnL,SAAU,CACR2K,SAAUlM,EAAUyL,EAAAA,yBAGXQ,IAA6BzM,kBEV1C,SAAAmN,mDAWA,OAXiC9R,EAAA8R,EAAApM,GAOxBoM,EAAA9M,QAAP,SAAeJ,KAGRkN,EAAA5M,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBATUoK,EAAW9Q,EAAA,CARvBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJC,KAAM,OACN2J,QAAS,UACTC,UAAW,eAGFF,IAAoBnN,kBCajC,SAAAsN,mDAmBA,OAnB+BjS,EAAAiS,EAAAvM,GAU7BhG,OAAAgC,eAAIuQ,EAAA7R,UAAA,UAAO,KAAX,WACE,OAAO8R,QAAQhS,KAAKiS,2CAIfF,EAAAjN,QAAP,SAAeJ,KAGRqN,EAAA/M,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAjBUuK,EAASjR,EAAA,CApBrBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJiK,eAAgB,gBAChBC,WAAY,YACZC,aAAc,cACdC,KAAM,OACNC,WAAY,aACZC,QAAS,SACT3C,cAAe,gBACf4C,UAAW,WACXC,cAAe,gBAEjBjM,SAAU,CACRkM,cAAe3K,EACf4K,UAAW5K,EACX6K,YAAa7K,EACb8K,aAAc9K,MAGLgK,IAAkBtN,IFhBnBuM,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,uCGfU6B,kBHyDZ,SAAAC,mDAoEA,OApE0BjT,EAAAiT,EAAAvN,GA0BxBhG,OAAAgC,eAAIuR,EAAA7S,UAAA,oBAAiB,KAArB,WAAA,IAAA8S,EAAAhT,KACE,OAAKA,KAAKiT,cAGHzT,OAAOoF,KAAK5E,KAAKiT,eAAetM,KAAI,SAAAuM,GAAU,MAAA,CACnDA,QAASA,EACTC,UAAWH,EAAKC,cAAcC,GAAQ,GACtCE,oBAAqBJ,EAAKC,cAAcC,GAAQ,OALzC,oCASX1T,OAAAgC,eAAIuR,EAAA7S,UAAA,WAAQ,KAAZ,WACE,OAAOF,KAAKsQ,SAAWU,EAAAA,aAAaqC,wCAGtC7T,OAAAgC,eAAIuR,EAAA7S,UAAA,YAAS,KAAb,WACE,OAAOF,KAAKmT,UAAYnT,KAAKoT,qDAG/B5T,OAAAgC,eAAIuR,EAAA7S,UAAA,sBAAmB,KAAvB,WACE,OAAOF,KAAKoT,oBAAsBpT,KAAKmT,2CAGzC3T,OAAAgC,eAAIuR,EAAA7S,UAAA,eAAY,KAAhB,WACE,OAAIF,KAAKsQ,SAAWU,EAAAA,aAAaqC,QAG7BrT,KAAKmT,YAAcnT,KAAKoT,oBAFnB,KAKLpT,KAAKsM,KAAKrE,GACLjI,KAAKmT,UAAYnT,KAAKoT,oBAAsBpT,KAAKsM,KAAKrE,GAAKjI,KAAKsT,eAAerL,GAE/EjI,KAAKmT,UAAYnT,KAAKoT,oBAAsBpT,KAAKuT,OAASvT,KAAKwT,kDAKnET,EAAAjO,QAAP,SAAeJ,KAGRqO,EAAA/N,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAlEUuL,EAAIjS,EAAA,CAvChBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJqI,OAAQ,SACRhE,KAAM,OACNqD,QAAS,SACT8D,gBAAiB,iBACjBC,mBAAoB,mBACpBC,qBAAsB,qBACtBC,SAAU,WACV5D,SAAU,WACV6D,WAAY,YACZC,sBAAuB,sBACvBC,YAAa,aACbC,eAAgB,gBAChBpE,cAAe,eACfqE,gBAAiB,iBACjBC,uBAAwB,uBACxBC,uBAAwB,uBACxBC,gBAAiB,gBACjBC,cAAe,eACfC,oBAAqB,oBACrBC,sBAAuB,sBACvBC,iBAAkB,kBAClBC,YAAa,aACbC,MAAO,SAETlO,SAAU,CACR8J,OAAQrL,EAAU+L,EAAAA,cAClB1E,KAAMH,EACNmH,eAAgBnH,EAChByH,SAAUxN,EACVuO,WAAY1P,EAAUgM,EAAAA,iBACtB2D,qBAAsBjE,GACtBkE,qBAAsB3D,GACtB4D,gBAAiBlD,GACjB8C,MAAOtP,EAAU2M,QAGRgB,IAAatO,IGzDdqO,GAAAA,EAAAA,eAAAA,EAAAA,aAAY,KACtBA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,MAAA,GAAA,2BAkBF,SAAAiC,mDAaA,OAb8BjV,EAAAiV,EAAAvP,GASrBuP,EAAAjQ,QAAP,SAAeJ,KAGRqQ,EAAA/P,OAAP,SAAcgQ,KAHdlU,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAXUuN,EAAQjU,EAAA,CAfpBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJ0H,QAAS,SACTnF,KAAM,OACNyK,KAAM,OACNC,OAAQ,SACR5I,KAAM,QAER9F,SAAU,CACRgE,KAAMD,EACN+B,KAAMH,EACN8I,KAAMhQ,EAAU6N,EAAAA,kBAGPiC,IAAiBtQ,kBCf9B,SAAA0Q,mDAWA,OAXqCrV,EAAAqV,EAAA3P,GAO5B2P,EAAArQ,QAAP,SAAeJ,KAGRyQ,EAAAnQ,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBATU2N,EAAerU,EAAA,CAP3BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJC,KAAM,OACNoM,oBAAqB,wBAGZa,IAAwB1Q,kBCwBrC,SAAA2Q,mDAgCA,OAhCoCtV,EAAAsV,EAAA5P,GAoBlChG,OAAAgC,eAAI4T,EAAAlV,UAAA,kBAAe,KAAnB,WACE,OAAKF,KAAKqV,WAGHpK,KAAKC,MAAM,IAAOlL,KAAKsV,cAAgBtV,KAAKqV,YAAc,GAFxD,mCAMJD,EAAAtQ,QAAP,SAAeJ,KAGR0Q,EAAApQ,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBA9BU4N,EAActU,EAAA,CA5B1BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJ0H,QAAS,SACTC,cAAe,eACf0C,WAAY,aACZhG,KAAM,OACNiJ,MAAO,QACP5I,YAAa,aACbD,gBAAiB,gBACjB8I,iBAAkB,iBAClBC,eAAgB,eAChB7I,UAAW,WACX8I,WAAY,YACZC,iBAAkB,iBAClBC,kBAAmB,kBACnB/F,OAAQ,SACRpD,YAAa,aACboJ,MAAO,QACPC,oBAAqB,sBAEvBtP,SAAU,CACR8L,WAAYxC,GACZxD,KAAMH,EACNoJ,MAAOJ,GACPU,MAAO9C,OAGEqC,IAAuB3Q,kBCnBpC,SAAAsR,mDAYA,OAZgDjW,EAAAiW,EAAAvQ,GAQvCuQ,EAAAjR,QAAP,SAAeJ,KAGRqR,EAAA/Q,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVUuO,EAA0BjV,EAAA,CAbtCuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJ+N,wBAAyB,uBACzBC,UAAW,WACXC,QAAS,SACTC,cAAe,gBAEjB3P,SAAU,CACR4P,SAAU7Q,EACV8Q,OAAQ9Q,MAGCwQ,IAAmCtR,kBCWhD,SAAA6R,mDA4BA,OA5BwCxW,EAAAwW,EAAA9Q,GAWtChG,OAAAgC,eAAI8U,EAAApW,UAAA,WAAQ,KAAZ,WACE,MAAO,CAACF,KAAKyK,SAAUzK,KAAK0K,UAAW1K,KAAKuW,YAAY5L,QAAO,SAAApK,GAAK,OAAAA,KAAGqK,KAAK,sCAG9EpL,OAAAgC,eAAI8U,EAAApW,UAAA,YAAS,KAAb,WACE,MAAO,CAACF,KAAKyK,SAAUzK,KAAK0K,WAAWC,QAAO,SAAApK,GAAK,OAAAA,KAAGqK,KAAK,sCAG7DpL,OAAAgC,eAAI8U,EAAApW,UAAA,WAAQ,KAAZ,WACE,MAAO,CAACF,KAAKyK,SAAUzK,KAAK0K,WAAWC,QAAO,SAAApK,GAAK,OAAAA,KAAGoG,KAAI,SAAApG,GAAK,OAAAA,EAAEsK,OAAO,EAAG,MAAID,KAAK,qCAI/E0L,EAAAxR,QAAP,SAAeJ,KAGR4R,EAAAtR,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBA1BU8O,EAAkBxV,EAAA,CApB9BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJuO,gBAAiB,iBACjBC,UAAW,WACXC,aAAc,eACdtL,WAAY,YACZD,UAAW,WACXE,YAAa,aACbI,MAAO,QACPkL,iBAAkB,mBAClBC,YAAa,cAEfpQ,SAAU,CACRqQ,eAAgBzB,GAChB0B,SAAU/B,GACVtJ,MAAO1D,EACP4O,iBAAkBZ,OAGTO,IAA2B7R,kBCRxC,SAAAsS,mDAYA,OAZ8BjX,EAAAiX,EAAAvR,GAQrBuR,EAAAjS,QAAP,SAAeJ,KAGRqS,EAAA/R,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVUuP,EAAQjW,EAAA,CAdpBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJsK,QAAS,SACTkE,UAAW,WACXO,qBAAsB,qBACtBC,WAAY,aAEdzQ,SAAU,CACRsQ,SAAU/B,GACVmC,mBAAoBZ,GACpBa,UAAW/Q,MAGF2Q,IAAiBtS,YClBd2S,GAAkB1S,EAAakC,EAAWyQ,EAAeC,GACvE,YADwD,IAAAD,IAAAA,GAAA,GACnD1X,MAAM2F,QAAQZ,GAGZA,EAAKiC,KAAI,SAAA/C,GACd,GAAI0T,GAAiBC,GAAWD,IAC9B,IAAKA,EAAc1T,GACjB,OAAOA,OAEJ,GAAIA,EAAEqE,KAAOrB,EAAKqB,GACvB,OAAOrE,EAET,OAAIA,EAAEuT,WAAavQ,EAAKuQ,YAAcE,GAC7BzT,EAAEuT,UAAYvQ,EAAKuQ,UAAYvT,EAEjCgD,KAbAlC,WAiBK8S,GAAmB9S,EAAa+S,EAAcJ,EAAwBC,GAIpF,YAJ4D,IAAAD,IAAAA,GAAA,GAC5DI,EAAMC,SAAQ,SAAA9Q,GACZlC,EAAO0S,GAAkB1S,EAAMkC,EAAMyQ,EAAOC,MAEvC5S,WAmBOiT,GAAejT,EAAakC,EAAWgR,EAAwBN,GAC7E,YADqD,IAAAM,IAAAA,GAAA,GAChDjY,MAAM2F,QAAQZ,GAGfA,EAAKyI,MAAK,SAAA3M,GAAK,OAAA+W,GAAWD,GAAiBA,EAAc9W,GAAKA,EAAEyH,KAAOrB,EAAKqB,MACvEvD,EAGFkT,IACClT,EAAI,CAAEkC,IAAIrC,EAAA,CACbqC,GAASlC,GARL,CAACkC,YAWIiR,GAAgBnT,EAAa+S,EAAcG,EAAwBN,GAOjF,YAPyD,IAAAM,IAAAA,GAAA,IACvDA,EAEEH,EADAjY,OAAOa,OAAO,GAAIoX,GAAOK,WAE3BJ,SAAQ,SAAA9Q,GACRlC,EAAOiT,GAAejT,EAAMkC,EAAMgR,EAAON,MAEpC5S,WAGOqT,GAAoBrT,EAAakC,GAC/C,OAAKjH,MAAM2F,QAAQZ,GAGf6S,GAAW3Q,GACNlC,EAAKiG,QAAO,SAAAnK,GAAK,OAACoG,EAAKpG,MAEvBkE,EAAKiG,QAAO,SAAA/G,GAAK,OAAAA,EAAEqE,KAAOrB,EAAKqB,MAL/B,GASX,SAASsP,GAAWS,GAClB,OAAOA,GAAyD,sBAAtC,GAAGC,SAASrX,KAAKoX,OCzEjCE,iBCIV,SAAAC,EAAoB9P,GAAArI,KAAAqI,OAAAA,EAFZrI,KAAA0E,KAA8C,GAuExD,OAlEEyT,EAAAjY,UAAAkY,IAAA,SAAInX,GACF,OAAOjB,KAAKqY,WAAWpX,GAAKqX,KAAK3N,EAAAA,QAAO,SAAA/D,GAAQ,YAASK,IAATL,OAGlDuR,EAAAjY,UAAAmC,MAAA,SAAMpB,GACJ,OAAOjB,KAAKqY,WAAWpX,GAAKoB,OAG9B8V,EAAAjY,UAAAqY,KAAA,SAAKtX,EAAaoB,GAChBrC,KAAKqY,WAAWpX,GAAKsB,KAAKF,GACtBrC,KAAKqI,QACPrI,KAAKqI,OAAOkQ,KAAKtX,EAAKoB,IAI1B8V,EAAAjY,UAAAsY,WAAA,SAAWvX,EAAaoB,EAAYiV,GAClCtX,KAAKuY,KAAKtX,EAAK0W,GAAe3X,KAAKqC,MAAMpB,IAAQ,GAAIoB,GAAO,EAAMiV,KAGpEa,EAAAjY,UAAAuY,YAAA,SAAYxX,EAAaoB,EAAciV,GACrCtX,KAAKuY,KAAKtX,EAAK4W,GAAgB7X,KAAKqC,MAAMpB,IAAQ,GAAIoB,GAAO,KAG/D8V,EAAAjY,UAAAwY,YAAA,SAAYzX,EAAaoB,EAAYiV,GACnCtX,KAAKuY,KAAKtX,EAAK0W,GAAe3X,KAAKqC,MAAMpB,IAAQ,GAAIoB,GAAO,EAAOiV,KAGrEa,EAAAjY,UAAAyY,aAAA,SAAa1X,EAAaoB,EAAciV,GACtCtX,KAAKuY,KAAKtX,EAAK4W,GAAgB7X,KAAKqC,MAAMpB,IAAQ,GAAIoB,GAAO,EAAOiV,KAGtEa,EAAAjY,UAAA0Y,WAAA,SAAW3X,EAAaoB,EAAYgV,EAAiBC,GACnDtX,KAAKuY,KAAKtX,EAAKmW,GAAkBpX,KAAKqC,MAAMpB,IAAQ,GAAIoB,EAAOgV,EAAOC,KAGxEa,EAAAjY,UAAA2Y,YAAA,SAAY5X,EAAaoB,EAAYgV,EAAiBC,GACpDtX,KAAKuY,KAAKtX,EAAKuW,GAAmBxX,KAAKqC,MAAMpB,IAAQ,GAAIoB,EAAOgV,EAAOC,KAGzEa,EAAAjY,UAAA4Y,WAAA,SAAW7X,EAAaoB,GACtBrC,KAAKuY,KAAKtX,EAAK8W,GAAoB/X,KAAKqC,MAAMpB,IAAQ,GAAIoB,KAG5D8V,EAAAjY,UAAA6Y,QAAA,uBACE,IAAkB,IAAApU,EAAAV,EAAAzE,OAAOoF,KAAK5E,KAAK0E,OAAKG,EAAAF,EAAApC,QAAAsC,EAAAlC,KAAAkC,EAAAF,EAAApC,OAAE,CAArC,IAAMtB,EAAG4D,EAAAxC,MACZrC,KAAK0E,KAAKzD,GAAK+X,kBACRhZ,KAAK0E,KAAKzD,uGAIrBkX,EAAAjY,UAAA+Y,iBAAA,WACMjZ,KAAKqI,QACPrI,KAAKqI,OAAO6Q,SAIhBf,EAAAjY,UAAAiZ,UAAA,WACE,OAAOnZ,KAAKqI,QAGN8P,EAAAjY,UAAAmY,WAAR,SAAmBpX,GAIjB,OAHKjB,KAAK0E,KAAKzD,KACbjB,KAAK0E,KAAKzD,GAAO,IAAImY,EAAAA,gBAAqBpZ,KAAKqI,OAASrI,KAAKqI,OAAO+P,IAAInX,QAAOgG,IAE1EjH,KAAK0E,KAAKzD,IAErBkX,mBCzEA,SAAAkB,IACYrZ,KAAAsZ,MAAQ,IAAInB,UAEtBkB,EAAAnZ,UAAA6Y,QAAA,WACE/Y,KAAKsZ,MAAMP,sGAJFM,EAAWvY,EAAA,CADvByY,EAAAA,WAAW,CAACC,WAAY,UACZH,qBCKX,SAAAI,EAC2CC,GAD3C,IAAA1G,EAGExN,EAAA5E,KAAAZ,OAAOA,YAFkCgT,EAAA0G,WAAAA,EAGrCA,GACF1G,EAAK2G,WAAWD,YANa5Z,EAAA2Z,EAAAjU,GAUjChG,OAAAgC,eAAIiY,EAAAvZ,UAAA,UAAO,KAAX,WACE,OAAOF,KAAKsZ,MAAMlB,IAhBG,2CAmBvB5Y,OAAAgC,eAAIiY,EAAAvZ,UAAA,SAAM,KAAV,WACE,OAAOF,KAAKsZ,MAAMjX,MApBG,WAoBwB,oCAG/CoX,EAAAvZ,UAAAyZ,WAAA,SAAWjV,GACT1E,KAAKsZ,MAAMf,KAxBU,SAwBa7T,IAGpC+U,EAAAvZ,UAAAoR,IAAA,SAAIrQ,EAAaoB,SACfrC,KAAKsZ,MAAMf,KA5BU,SA4BWnY,EAAAA,EAAA,GAC3BJ,KAAKsG,UAAMsT,EAAA,IACb3Y,GAAMoB,EAAKuX,MAIhBH,EAAAvZ,UAAAkY,IAAA,SAAInX,GACF,OAAOjB,KAAKsZ,MAAMjX,MAnCG,WAmCwBrC,KAAKsZ,MAAMjX,MAnCnC,UAmC2DpB,sEA5B/E4Y,EAAAA,UAAQ,CAAAzL,KAAI0L,EAAAA,OAAMzS,KAAA,CALI,8JAGdoS,EAAa3Y,EAAA,CADzByY,EAAAA,WAAW,CAACC,WAAY,SAGpB/X,EAAA,EAAAoY,EAAAA,YAAYpY,EAAA,EAAAqY,EAAAA,OALU,0BAGdL,IAAsBJ,mBC4CnC,SAAAU,mDA4CA,OA5CyCja,EAAAia,EAAAvU,GAmCvChG,OAAAgC,eAAIuY,EAAA7Z,UAAA,aAAU,KAAd,WACE,OAAOF,KAAKga,cAAgBha,KAAKia,eAAiBja,KAAKka,sDAIlDH,EAAAjV,QAAP,SAAeJ,KAGRqV,EAAA/U,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBA1CUuS,EAAmBjZ,EAAA,CA7C/BuF,EAAc,CACbE,cAAe,CACbyQ,qBAAsB,qBACtB1K,KAAM,OACNmK,UAAW,WACXjM,KAAM,OACNgM,gBAAiB,iBACjB2D,MAAO,QACPC,SAAU,UACVzN,YAAa,aACbD,gBAAiB,gBACjBmD,OAAQ,SACRwK,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,OAAQ,UAEVnV,SAAU,CACR0Q,mBAAoBZ,GACpBhK,KAAMH,EACN2K,SAAU/B,GACVvK,KAAMD,EACNsM,eAAgBzB,GAChB+E,MAAO5U,MAGEwU,IAA4BtV,kBCvCzC,SAAAmX,mDASA,OATiD9b,EAAA8b,EAAApW,GAKxCoW,EAAA9W,QAAP,SAAeJ,KAGRkX,EAAA5W,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAPUoU,EAA2B9a,EAAA,CAVvCuF,EAAc,CACbE,cAAe,CACb+F,KAAM,OACNmH,gBAAiB,kBAEnBjN,SAAU,CACR8F,KAAMyN,GACNzG,eAAgByG,OAGP6B,IAAoCnX,kBCkBjD,SAAAoX,mDAoCA,OApC6C/b,EAAA+b,EAAArW,GAuB3ChG,OAAAgC,eAAIqa,EAAA3b,UAAA,KAAE,KAAN,WACE,OAAOF,KAAK8b,4CAIPD,EAAA/W,QAAP,SAAeJ,KAGRmX,EAAA7W,OAAP,SAAcN,KAEdlF,OAAAgC,eAAIqa,EAAA3b,UAAA,aAAU,KAAd,WACE,OAAQF,KAAKga,eAAiB,IAAMha,KAAKia,gBAAkB,IAAMja,KAAKka,sBAAwB,oCANhGpZ,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBA9BUqU,EAAuB/a,EAAA,CA5BnCuF,EAAc,CACbE,cAAe,CACbwV,aAAc,aACdlM,OAAQ,SACR0K,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,uBACvBzE,WAAY,aAEdzQ,SAAU,CACR2Q,UAAW/Q,MAGFyV,IAAgCpX,IN3BjCyT,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,cOpBU8D,kBP0CZ,SAAAC,IAAA,IAAAjJ,EAAA,OAAAxN,GAAAA,EAAA3E,MAAAb,KAAAU,YAAAV,YAWEgT,EAAAkJ,QAAS,IA8DX,OAzEuCpc,EAAAmc,EAAAzW,GAiBrCyW,EAAA/b,UAAAic,aAAA,WACE,MAAO,CACLjE,EAAAA,uBAAuBkE,eACvBlE,EAAAA,uBAAuBmE,iBACvBnE,EAAAA,uBAAuBoE,gBACvBpE,EAAAA,uBAAuBqE,gBACvBC,QAAQxc,KAAKyc,UAAY,GAG7BR,EAAA/b,UAAAwc,cAAA,WACE,MAAO,CACLxE,EAAAA,uBAAuByE,QACvBzE,EAAAA,uBAAuB0E,kBACvB1E,EAAAA,uBAAuB2E,mBACvBL,QAAQxc,KAAKyc,UAAY,GAG7BR,EAAA/b,UAAA4c,WAAA,WACE,MAAO,CACL5E,EAAAA,uBAAuB6E,cACvB7E,EAAAA,uBAAuB8E,eACvB9E,EAAAA,uBAAuB+E,sBACvBT,QAAQxc,KAAKyc,UAAY,GAG7BR,EAAA/b,UAAAgd,SAAA,iBAOE,QANkBtD,EAAA,IACf1B,EAAAA,uBAAuBqE,gBAAiB,EACzC3C,EAAC1B,EAAAA,uBAAuBoE,iBAAkB,EAC1C1C,EAAC1B,EAAAA,uBAAuBkE,gBAAiB,EACzCxC,EAAC1B,EAAAA,uBAAuBmE,kBAAmB,KAEzBrc,KAAKyc,UAG3BR,EAAA/b,UAAAid,QAAA,SAAQC,GACN,OAAIpd,KAAKqd,OAASD,EAAMC,MAAQrd,KAAKkT,SAAWkK,EAAMlK,OAC7ClT,KAAK4T,SAAS5I,UAAYoS,EAAMxJ,SAAS5I,UAAY,GAAK,EAE/DhL,KAAKkT,SAAWkK,EAAMlK,OACjBlT,KAAKqd,KAAOD,EAAMC,KAAO,GAAK,EAEhCrd,KAAKkT,OAASkK,EAAMlK,OAAS,GAAK,GAG3C1T,OAAAgC,eAAIya,EAAA/b,UAAA,gBAAa,KAAjB,WACE,IAAMod,EAAUrS,KAAKC,MAAMlL,KAAKqd,KAAO,IACjCE,EAAUvd,KAAKqd,KAAiB,GAAVC,EAC5B,OAAUA,EAAU,GAAK,IAAM,IAAKA,EAAO,KAAIC,EAAU,GAAK,IAAM,IAAKA,mCAIpEtB,EAAAnX,QAAP,SAAezC,KAGR4Z,EAAAjX,OAAP,SAAc3C,KAHdvB,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAvEUyU,EAAiBnb,EAAA,CAnB7BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJuV,UAAW,WACXjL,QAAS,SACTwJ,aAAc,aACdpM,QAAS,SACT8N,SAAU,UACV7J,SAAU,WACVyJ,KAAM,OACNnK,OAAQ,SACRgJ,OAAQ,SACRwB,aAAc,eAEhBlX,SAAU,CACRoN,SAAUxN,EACVqW,QAASxX,EAAUiT,EAAAA,4BAGV+D,IAA0BxX,iBQpCrC,SAAAkZ,EACUC,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAIJF,EAAAzd,UAAA4d,QAAN,SAAcC,sEACZ,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sCAAsC2F,EAAM,KAAKzF,KAC7G3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAqQ,GAAKjO,QAAQpC,OAC3Bsb,oBAGEL,EAAAzd,UAAA+d,SAAN,SAAeF,sEACb,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,2BAA2B2F,EAAM,WAAWzF,KACxG3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAqU,GAASjS,QAAQpC,OAC/Bsb,oBAGEL,EAAAzd,UAAAge,iBAAN,SAAuBH,sEACrB,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sCAAsC2F,EAAM,oBAAoBzF,KAC5H3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAkZ,GAA4B9W,QAAQpC,OAClDsb,oBAGEL,EAAAzd,UAAAie,iBAAN,SAAuBJ,sEACrB,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sCAAsC2F,EAAM,oBAAoBzF,KAC5H3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAmZ,GAAwB/W,QAAQpC,OAC9Csb,oBAGEL,EAAAzd,UAAAke,QAAN,SAAcL,sEACZ,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sCAAsC2F,EAAM,UAAUzF,KAClH3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAuZ,GAAkBnX,QAAQpC,OACxCsb,6DAhCkBK,EAAAA,kBACG5E,0IAHdkE,EAAiB7c,EAAA,CAD7ByY,EAAAA,WAAW,CAACC,WAAY,UACZmE,oBCGb,SAAAW,KAeA,OARSA,EAAAxZ,QAAP,SAAeJ,GACb,OAAO,MAIF4Z,EAAAtZ,OAAP,SAAc3C,GACZ,OAAO,MANTvB,EAAA,CADCqG,qBAMDrG,EAAA,CADC0G,oBAXU8W,EAAQxd,EAAA,CAXpBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJsW,MAAO,QACPC,QAAS,UACTC,MAAO,SAETjY,SAAU,CACRiY,MAAO1W,MAGEuW,oBCNX,SAAAI,EACUd,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAIJa,EAAAxe,UAAAye,aAAN,SAAmBja,sEACjB,MAAA,CAAA,EAAO1E,KAAK4d,WAAWgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,oBAAqBkG,GAAStZ,OAAON,IACjG4T,KAAK3R,EAAAA,KAAI,SAAAkY,GAAY,OAAAP,GAASxZ,QAAQ+Z,OACtCb,6DARiBK,EAAAA,kBACG5E,0IAHdiF,EAAW5d,EAAA,CADvByY,EAAAA,WAAW,CAACC,WAAY,UACZkF,oBCCX,SAAAI,EACUlB,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAGJiB,EAAA5e,UAAA6e,OAAN,SAAaC,EAAeC,4EAI1B,OAHMC,EAAW,IAAIC,UACZC,OAAO,OAAQJ,EAAUC,GAElC,CAAA,EAAOjf,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAiB8G,GACzD5G,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqD,EAAKjD,QAAQJ,OAC9BsZ,oBAGCc,EAAA5e,UAAAmf,iBAAN,SAAuBZ,sFACfS,EAAW,IAAIC,aACrB,IAAmBG,EAAArb,EAAAwa,GAAKc,EAAAD,EAAA/c,QAAAgd,EAAA5c,KAAA4c,EAAAD,EAAA/c,OAAbyF,EAAIuX,EAAAld,MACb6c,EAASE,OAAO,QAASpX,EAAKA,KAAMA,EAAKiX,2GAE3C,MAAA,CAAA,EAAOjf,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,4BAA6B8G,EAAU,CAACM,aAAc,SAC9FxB,6DArBiBK,EAAAA,kBACG5E,0IAHdqF,EAAOhe,EAAA,CADnByY,EAAAA,WAAW,CAACC,WAAY,UACZsF,qBCgBb,SAAAW,mDAkBA,OAlBgC3f,EAAA2f,EAAAja,GAYvBia,EAAA3a,QAAP,SAAeJ,KAKR+a,EAAAza,OAAP,SAAcN,KALd5D,EAAA,CADCqG,qBAMDrG,EAAA,CADC0G,oBAhBUiY,EAAU3e,EAAA,CAnBtBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJyX,MAAO,QACP9L,SAAU,WACV+L,aAAc,cACdC,YAAa,aACbC,QAAS,UACThS,MAAO,QACPiS,QAAS,SACTC,YAAa,eAEfvZ,SAAU,CACRoN,SAAUxN,EACVyZ,QAAS9X,EACT8F,MAAO9F,EACPgY,YAAa3a,EAAU0K,QAGd2P,IAAmBhb,ILjBpBuX,GAAAA,EAAAA,uBAAAA,EAAAA,qBAAoB,KAC9BA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,KAAA,GAAA,WMNUgE,kBN4BZ,SAAAC,mDAaA,OAbqCngB,EAAAmgB,EAAAza,GAS5Bya,EAAAnb,QAAP,SAAeJ,KAGRub,EAAAjb,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAXUyY,EAAenf,EAAA,CAnB3BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJoK,KAAM,OACN6N,KAAM,OACN9P,OAAQ,SACR2P,YAAa,cACbI,MAAO,QACPvM,SAAU,YAEZpN,SAAU,CACR6L,KAAMU,GACNmN,KAAMT,GACNrP,OAAQnD,EACR8S,YAAa3a,EAAU0K,IACvB8D,SAAUrO,EACV4a,MAAOlb,EAAU+W,EAAAA,0BAGRiE,IAAwBxb,iBOlBnC,SAAA2b,EACUxC,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAIJuC,EAAAlgB,UAAAmgB,WAAN,SAAiB9S,sEACf,MAAA,CAAA,EAAOvN,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,kBAAkB7K,EAAK,KAAK+K,KACxF3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAuK,EAAOnI,QAAQpC,OAC7Bsb,oBAGEoC,EAAAlgB,UAAAogB,YAAN,SAAkBC,sEAChB,MAAA,CAAA,EAAOvgB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,4BAA4BmI,EAAM,KAAKjI,KACnG3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAuK,EAAOnI,QAAQpC,OAC7Bsb,oBAGEoC,EAAAlgB,UAAAsgB,eAAN,SAAqBC,sEACnB,MAAA,CAAA,EAAOzgB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,kBAAkBqI,EAAQ,iBAAiBnI,KACvG3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAoN,GAAWhL,QAAQpC,OACjCsb,oBAGEoC,EAAAlgB,UAAAwgB,UAAN,SAAgBD,EAAkBE,EAAcvY,EAAcwY,4EAW5D,OAVIC,GAAS,IAAIC,EAAAA,YAAaxP,IAAI,OAAQqP,EAAK1I,YAC5C3G,IAAI,OAAQlJ,EAAK6P,YAChB2I,IACEA,EAAQT,QACVU,EAASA,EAAOvP,IAAI,QAAS0K,EAAAA,qBAAqB4E,EAAQT,SAExDS,EAAQG,SACVF,EAASA,EAAOvP,IAAI,SAAUsP,EAAQG,UAG1C,CAAA,EAAO/gB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,kBAAkBqI,EAAQ,WAAY,CAACI,OAAMA,EAAEG,QAAS,aAAa1I,KACjI3R,EAAAA,KAAI,SAAAjE,GAAU,MAAA,CACZue,OAAQve,EAAOwe,QAAQ9I,IAAI,gBAC3B1T,KAAMub,GAAgBnb,QAAQpC,EAAOI,WAEvCkb,6DAvCkBK,EAAAA,kBACG5E,0IAHd2G,EAAStf,EAAA,CADrByY,EAAAA,WAAW,CAACC,WAAY,UACZ4G,oBCHX,SAAAe,EACUvD,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAIJsD,EAAAjhB,UAAAkhB,kBAAN,SAAwBX,sEACtB,MAAA,CAAA,EAAOzgB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,kBAAkBqI,EAAQ,SAAU,CAACO,QAAS,aACzG1I,KAAK3R,EAAAA,KAAI,SAAAkY,GAAY,MAAA,CACpBoC,OAAQpC,EAASqC,QAAQ9I,IAAI,gBAC7B1T,KAAM+a,GAAW3a,QAAQ+Z,EAAS/b,WAEnCkb,oBAGCmD,EAAAjhB,UAAAmhB,kBAAN,SAAwBZ,sEACtB,MAAA,CAAA,EAAOzgB,KAAK4d,WAAWxF,IAAcpY,KAAK6d,cAAczF,IAAI,UAAS,kBAAkBqI,EAAQ,uBAC5FnI,KAAK3R,EAAAA,KAAI,SAAAkY,GAAY,OAAAA,GAAYA,EAASle,OAAS,EAAI8e,GAAW3a,QAAQ+Z,EAAS,IAAM,SACzFb,oBAGCmD,EAAAjhB,UAAAohB,YAAN,SAAkBC,sEAChB,MAAA,CAAA,EAAOvhB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,uBAAuBmJ,EAAM,KACxFjJ,KAAK3R,EAAAA,KAAI,SAAAkY,GAAY,OAAAY,GAAW3a,QAAQ+Z,OACxCb,oBAGCmD,EAAAjhB,UAAAshB,sBAAN,SAA4BC,sEAC1B,MAAA,CAAA,EAAOzhB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,SAAU,CAACT,QAAS,aACjH1I,KAAK3R,EAAAA,KAAI,SAAAkY,GAAY,MAAA,CACpBoC,OAAQpC,EAASqC,QAAQ9I,IAAI,gBAC7B1T,KAAM+a,GAAW3a,QAAQ+Z,EAAS/b,WAEnCkb,6DAhCiBK,EAAAA,kBACG5E,0IAHd0H,EAAargB,EAAA,CADzByY,EAAAA,WAAW,CAACC,WAAY,UACZ2H,oBCWX,SAAAO,EACU9D,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAIJ6D,EAAAxhB,UAAAyhB,SAAN,SAAeC,sEACb,MAAA,CAAA,EAAO5hB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,iBAAiBwJ,EAAO,KAAKtJ,KACzF3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAqP,GAAUjN,QAAQpC,OAChCsb,oBAGE0D,EAAAxhB,UAAA2hB,uBAAN,SAA6BJ,EAAsBd,EAAcvY,EAAcwY,4EAuB7E,OAtBIC,GAAS,IAAIC,EAAAA,YAAaxP,IAAI,OAAQqP,EAAK1I,YAAY3G,IAAI,OAAQlJ,EAAK6P,YACxE2I,IACEA,EAAQkB,iBACVjB,EAASA,EAAOvP,IAAI,kBAAmBsP,EAAQkB,eAAe7J,aAE5D2I,EAAQrN,SACVsN,EAASA,EAAOvP,IAAI,UAAWsP,EAAQrN,OAAO0E,aAE5C2I,EAAQmB,oBACVlB,EAASA,EAAOvP,IAAI,sBAAuBsP,EAAQmB,kBAAkB9J,aAEnE2I,EAAQoB,YACVnB,EAASA,EAAOvP,IAAI,aAAcsP,EAAQoB,UAAU/J,aAElD2I,EAAQqB,eACVpB,EAASA,EAAOvP,IAAI,gBAAiBsP,EAAQqB,aAAahK,aAExD2I,EAAQtQ,SACVuQ,EAASA,EAAOvP,IAAI,SAAUN,EAAAA,aAAa4P,EAAQtQ,WAIvD,CAAA,EAAOtQ,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,eAAgB,CAACT,QAAS,WAAYH,OAAMA,IAAGvI,KAC7I3R,EAAAA,KAAI,SAAAkY,GACF,MAAO,CACLoC,OAAQpC,EAASqC,QAAQ9I,IAAI,gBAC7B1T,KAAMqO,GAAKjO,QAAQ+Z,EAAS/b,WAGhCkb,oBAGE0D,EAAAxhB,UAAAgiB,mBAAN,SAAyBzB,EAAkBE,EAAcvY,EAAcwY,4EAuBrE,OAtBIC,GAAS,IAAIC,EAAAA,YAAaxP,IAAI,OAAQqP,EAAK1I,YAAY3G,IAAI,OAAQlJ,EAAK6P,YACxE2I,IACEA,EAAQkB,iBACVjB,EAASA,EAAOvP,IAAI,kBAAmBsP,EAAQkB,eAAe7J,aAE5D2I,EAAQrN,SACVsN,EAASA,EAAOvP,IAAI,UAAWsP,EAAQrN,OAAO0E,aAE5C2I,EAAQmB,oBACVlB,EAASA,EAAOvP,IAAI,sBAAuBsP,EAAQmB,kBAAkB9J,aAEnE2I,EAAQoB,YACVnB,EAASA,EAAOvP,IAAI,aAAcsP,EAAQoB,UAAU/J,aAElD2I,EAAQqB,eACVpB,EAASA,EAAOvP,IAAI,gBAAiBsP,EAAQqB,aAAahK,aAExD2I,EAAQtQ,SACVuQ,EAASA,EAAOvP,IAAI,SAAUN,EAAAA,aAAa4P,EAAQtQ,WAIvD,CAAA,EAAOtQ,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,kBAAkBqI,EAAQ,eAAgB,CAACO,QAAS,WAAYH,OAAMA,IAAGvI,KACrI3R,EAAAA,KAAI,SAAAkY,GACF,MAAO,CACLoC,OAAQpC,EAASqC,QAAQ9I,IAAI,gBAC7B1T,KAAMqO,GAAKjO,QAAQ+Z,EAAS/b,WAGhCkb,oBAGE0D,EAAAxhB,UAAAiiB,iBAAN,SAAuBpE,sEACrB,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsB2F,EAAM,KAAKzF,KAC7F3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAqQ,GAAKjO,QAAQpC,OAC3Bsb,oBAGE0D,EAAAxhB,UAAAkiB,aAAN,SAAmBrE,sEACjB,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,2BAA2B2F,EAAM,WAAWzF,KACxG3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAqP,GAAUjN,QAAQpC,OAChCsb,oBAGE0D,EAAAxhB,UAAAmiB,UAAN,SAAgBC,sEACd,MAAA,CAAA,EAAOtiB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,qBAAsBkK,EAAU,CAAE9C,aAAc,SACxFxB,6DA5FiBK,EAAAA,kBACG5E,0IAHdiI,EAAQ5gB,EAAA,CADpByY,EAAAA,WAAW,CAACC,WAAY,UACZkI,OHfD1B,GAAAA,EAAAA,eAAAA,EAAAA,aAAY,KACtBA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,SAAA,GAAA,eIFUuC,kBJWZ,SAAAC,mDASA,OATiC1iB,EAAA0iB,EAAAhd,GAKxBgd,EAAA1d,QAAP,SAAeJ,KAGR8d,EAAAxd,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAPUgb,EAAW1hB,EAAA,CANvBuF,EAAc,CACbE,cAAe,CACbkc,KAAM,OACNva,KAAM,WAGGsa,IAAoB/d,kBAsBjC,SAAAie,mDAWA,OAXgC5iB,EAAA4iB,EAAAld,GAOvBkd,EAAA5d,QAAP,SAAeJ,KAGRge,EAAA1d,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBATUkb,EAAU5hB,EAAA,CAXtBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJ0a,YAAa,aACbnY,KAAM,OACNoY,QAAS,UAEXpc,SAAU,CACRgE,KAAMD,MAGGmY,IAAmBje,kBAoChC,SAAAoe,IAAA,IAAA7P,EAAA,OAAAxN,GAAAA,EAAA3E,MAAAb,KAAAU,YAAAV,YAaEgT,EAAA8P,oBAAiE,KAkDnE,OA/D0BhjB,EAAA+iB,EAAArd,GAexBhG,OAAAgC,eAAIqhB,EAAA3iB,UAAA,WAAQ,KAMZ,WACE,OAAOF,KAAK+iB,eAPd,SAAa1gB,GACXrC,KAAK+iB,UAAY1gB,GAAS,GACtBrC,KAAKgjB,UACPhjB,KAAKijB,8DAOTzjB,OAAAgC,eAAIqhB,EAAA3iB,UAAA,UAAO,KAMX,WACE,OAAOF,KAAKgjB,cAPd,SAAY3gB,GACVrC,KAAKgjB,SAAW3gB,GAAS,GACrBrC,KAAK+iB,WACP/iB,KAAKijB,8DAOTJ,EAAA3iB,UAAA+iB,2BAAA,WAAA,IAAAjQ,EAAAhT,KACE,GAAKA,KAAKgjB,SAASriB,OAAnB,CAIA,IAAMuiB,EAAWljB,KAAK+iB,UAAUpc,KAAI,SAAA/C,GAAK,OAAAA,EAAE6e,QACrCU,EAAmBnjB,KAAKgjB,SAASI,QAAO,SAACC,EAAKzc,GAClD,OAAIsc,EAAS1G,QAAQ5V,EAAK0c,YAAc,IAGnCD,EAAIzc,EAAK0c,cACZD,EAAIzc,EAAK0c,YAAc,GAEzBD,EAAIzc,EAAK0c,eALAD,IAOR,IACHrjB,KAAK8iB,oBAAsB9iB,KAAK+iB,UAAUpc,KAAI,SAAAC,GAAQ,MAAA,CACpD2c,QAAS3c,EACT4c,QAASL,EAAiBvc,EAAK6b,MAAQxX,KAAKwY,MAAM,IAAMN,EAAiBvc,EAAK6b,MAAQzP,EAAKgQ,SAASriB,QAAU,MAE7G+iB,MAAK,SAACC,EAAGpkB,GAAM,OAAAokB,EAAEH,QAAUjkB,EAAEikB,SAAW,EAAI,OAI1CX,EAAA/d,QAAP,SAAeJ,KAGRme,EAAA7d,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBA7DUqb,EAAI/hB,EAAA,CAvBhBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJiU,OAAQ,SACR5L,OAAQ,SACRX,QAAS,SACTzH,KAAM,OACNsF,YAAa,cACb0V,SAAU,WACVU,OAAQ,SACRC,QAAS,UACTC,gBAAiB,iBACjBC,UAAW,YACXC,WAAY,aAEdxd,SAAU,CACR8J,OAAQrL,EAAU+a,EAAAA,cAClBkD,SAAUV,GACVoB,OAAQrZ,EACRsZ,QAASnB,GACTuB,UAAW7d,MAGFyc,IAAape,kBK9C1B,SAAAyf,mDAoBA,OApBgCpkB,EAAAokB,EAAA1e,GAgBvB0e,EAAApf,QAAP,SAAeJ,KAGRwf,EAAAlf,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAlBU0c,EAAUpjB,EAAA,CAvBtBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJqB,QAAS,SACTkB,KAAM,OACN8B,KAAM,OACNqD,QAAS,SACTwU,YAAa,aACbC,YAAa,aACb3X,YAAa,aACbE,YAAa,aACbD,gBAAiB,gBACjBE,UAAW,WACXoX,WAAY,YACZ/M,WAAY,aAEdzQ,SAAU,CACRgE,KAAMD,EACN+B,KAAMH,EACN8X,UAAW7d,EACXie,SAAUje,MAGD8d,IAAmBzf,IDvBpB8d,GAAAA,EAAAA,mBAAAA,EAAAA,iBAAgB,KAC1BA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,SAAA,GAAA,eENU+B,qBFuBZ,SAAAC,mDAYA,OAZgCzkB,EAAAykB,EAAA/e,GAQvB+e,EAAAzf,QAAP,SAAeJ,KAGR6f,EAAAvf,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVU+c,EAAUzjB,EAAA,CAdtBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJwO,UAAW,WACXlE,QAAS,SACTF,KAAM,OACN/B,OAAQ,UAEV9J,SAAU,CACR6L,KAAMU,GACN+D,SAAU/B,GACVzE,OAAQrL,EAAUsd,EAAAA,sBAGTgC,IAAmB9f,IEvBpB6f,GAAAA,EAAAA,iBAAAA,EAAAA,eAAc,KACxBA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,MAAA,GAAA,YCAUE,GCACC,KAAyB7K,GAAA,IACnC0K,EAAAA,eAAeI,UAAW,aAC3B9K,GAAC0K,EAAAA,eAAeK,OAAQ,4BCkB1B,SAAAC,mDA0BA,OA1B+B9kB,EAAA8kB,EAAApf,GAU7BhG,OAAAgC,eAAIojB,EAAA1kB,UAAA,OAAI,KAAR,WACE,OAAIF,KAAK6kB,YAAcP,EAAAA,eAAeK,MAC7B3kB,KAAK8kB,gBAEPL,GAA0BzkB,KAAK6kB,4CAGxCrlB,OAAAgC,eAAIojB,EAAA1kB,UAAA,WAAQ,KAAZ,WACE,OAAOF,KAAK4T,SAAS5I,WAAY,IAAItF,MAAOsF,2CAIvC4Z,EAAA9f,QAAP,SAAeJ,KAGRkgB,EAAA5f,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAxBUod,EAAS9jB,EAAA,CAjBrBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJ0H,QAAS,SACTrD,KAAM,OACNyY,WAAY,YACZC,kBAAmB,kBACnBxX,YAAa,cACboG,SAAU,WACV5D,SAAU,YAEZxJ,SAAU,CACRqe,UAAW5f,EAAUqf,EAAAA,gBACrBhY,KAAMH,EACNyH,SAAUxN,MAGDwe,IAAkBngB,IFpBnB+f,GAAAA,EAAAA,0BAAAA,EAAAA,wBAAuB,KACjCA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,SAAA,GAAA,eGUUS,GA+DAC,iBH3DZ,SAAAC,KAWA,OAJSA,EAAArgB,QAAP,SAAeJ,KAGRygB,EAAAngB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBATU2d,EAAerkB,EAAA,CAX3BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJmd,cAAe,cACfC,aAAc,aACd/U,OAAQ,UAEV9J,SAAU,CACR8J,OAAQrL,EAAUuf,EAAAA,6BAGTW,qBIHb,SAAAG,mDAYA,OAZ8CxlB,EAAAwlB,EAAA9f,GAQrC8f,EAAAxgB,QAAP,SAAeJ,KAGR4gB,EAAAtgB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVU8d,EAAwBxkB,EAAA,CAZpCuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJsd,0BAA2B,yBAC3BC,mBAAoB,mBACpB/O,UAAW,WACXgP,SAAU,YAEZjf,SAAU,CACRsQ,SAAU/B,OAGDuQ,IAAiC7gB,kBCO9C,SAAAihB,mDAmBA,OAnBsC5lB,EAAA4lB,EAAAlgB,GAUpChG,OAAAgC,eAAIkkB,EAAAxlB,UAAA,SAAM,KAAV,WACE,OAA4B,OAApBF,KAAK2lB,YAAmD,OAA5B3lB,KAAK4lB,sBAAoD,IAApB5lB,KAAK2lB,aAAoD,IAA5B3lB,KAAK4lB,oDAItGF,EAAA5gB,QAAP,SAAeJ,KAGRghB,EAAA1gB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAjBUke,EAAgB5kB,EAAA,CAjB5BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJqE,KAAM,OACNgG,WAAY,aACZ8R,YAAa,aACbyB,oBAAqB,qBACrBC,mBAAoB,mBACpBC,aAAc,cACdjQ,oBAAqB,sBAEvBtP,SAAU,CACR8F,KAAMH,EACNmG,WAAYxC,GACZkW,YAAaV,OAGJI,IAAyBjhB,IFR1BwgB,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,UG7EUe,kBHwHZ,SAAAC,mDA8BA,OA9BkCpmB,EAAAomB,EAAA1gB,GAqBhChG,OAAAgC,eAAI0kB,EAAAhmB,UAAA,YAAS,KAAb,WACE,OAAO,mCAIFgmB,EAAAphB,QAAP,SAAezC,KAGR6jB,EAAAlhB,OAAP,SAAc3C,KAHdvB,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBA5BU0e,EAAYplB,EAAA,CAxCxBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJ8c,WAAY,QACZrgB,KAAM,OACNyhB,UAAW,YACX7Z,KAAM,OACN8Z,YAAa,aACb3P,UAAW,WACX4P,KAAM,OACNhU,KAAM,OACNiU,YAAa,aACbC,WAAY,YACZC,kBAAmB,kBACnBlU,WAAY,aACZmU,kBAAmB,mBACnBjQ,gBAAiB,iBACjBkQ,OAAQ,SACRC,UAAW,YACXC,QAAS,UACT5C,WAAY,aAEdxd,SAAU,CACR2Z,MAAOlb,EAAUggB,EAAAA,kBACjBkB,UAAW5b,EACX+B,KAAMH,EACN0a,WAAY3C,GACZpN,SAAU/B,GACVsR,KAAMxD,GACNxQ,KAAMU,GACN+T,WAAYvC,GACZwC,UAAWnC,GACXoC,gBAAiB7B,GACjB7S,WAAYxC,GACZmX,iBAAkBvB,GAClB7O,eAAgBzB,GAChBwR,QAAS3hB,EAAUigB,EAAAA,yBACnBjB,UAAW7d,MAGF8f,IAAqBzhB,IGxHtBwhB,GAAAA,EAAAA,yBAAAA,EAAAA,uBAAsB,KAChCA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,KAAA,GAAA,WCHUiB,kBDmBZ,SAAAC,mDAYA,OAZ0CrnB,EAAAqnB,EAAA3hB,GAQjC2hB,EAAAriB,QAAP,SAAeJ,KAGRyiB,EAAAniB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVU2f,EAAoBrmB,EAAA,CAbhCuF,EAAc,CACbE,cAAe,CACb+C,QAAS,SACT8d,MAAO,QACPC,MAAO,QACPC,QAAS,UACThc,MAAO,SAET9E,SAAU,CACR6gB,MAAOpiB,EAAUghB,EAAAA,wBACjBqB,QAASriB,EAAUghB,EAAAA,4BAGVkB,IAA6B1iB,iBEFxC,SAAA8iB,EACU3J,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAGJ0J,EAAArnB,UAAAsnB,SAAN,8EACE,MAAA,CAAA,EAAOxnB,KAAK4d,WACTxF,IAAI,GAAGpY,KAAK6d,cAAczF,IAAI,UAAYpY,KAAKynB,OAAM,wBACrDnP,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAACA,MAClBsZ,oBAGCuJ,EAAArnB,UAAAwnB,QAAN,SAAc/G,EAAcvY,EAAcwY,eAAA,IAAAA,IAAAA,EAAA,gFACpCC,GAAS,IAAIC,EAAAA,YACdxP,IAAI,OAAQqP,EAAK1I,YACjB3G,IAAI,OAAQlJ,EAAK6P,gBACpB,IAAkB2B,EAAA3V,EAAAzE,OAAOoF,KAAKgc,IAAQjc,EAAAiV,EAAArX,QAAAoC,EAAAhC,KAAAgC,EAAAiV,EAAArX,OAA3BtB,EAAG0D,EAAAtC,MACZwe,EAASA,EAAOvP,IAAIrQ,EAAK2f,EAAQ3f,qGAGnC,MAAA,CAAA,EAAOjB,KAAK4d,WACTxF,IAAI,GAAGpY,KAAK6d,cAAczF,IAAI,UAAYpY,KAAKynB,OAAM,iBAAkB,CAAC5G,OAAMA,EAAEG,QAAS,aACzF1I,KACC3R,EAAAA,KAAI,SAAAkY,GACF,IAAMna,EAAuBwhB,GAAaphB,QAAQ+Z,EAAS/b,MAC3D,MAAO,CACLme,OAAQpC,EAASqC,QAAQ9I,IAAI,gBAC7B1T,KAAIA,OAGRsZ,oBAGAuJ,EAAArnB,UAAAynB,WAAN,SAAiBC,EAAwBlB,sEACvC,MAAA,CAAA,EAAO1mB,KAAK4d,WACTgB,KAAK,GAAG5e,KAAK6d,cAAczF,IAAI,UAAYpY,KAAKynB,OAAM,iBAAiBG,EAAc,WAAY,CAAClB,OAAMA,IACxGpO,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwhB,GAAaphB,QAAQJ,OACtCsZ,oBAGCuJ,EAAArnB,UAAA2nB,cAAN,8EACE,MAAA,CAAA,EAAO7nB,KAAK4d,WACTgB,KAAK,GAAG5e,KAAK6d,cAAczF,IAAI,UAAYpY,KAAKynB,OAAM,wBAAyB,IAC/EnP,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwhB,GAAaphB,QAAQJ,OACtCsZ,oBAGCuJ,EAAArnB,UAAA4nB,wBAAN,8EACE,MAAA,CAAA,EAAO9nB,KAAK4d,WAAWxF,IAAI,GAAGpY,KAAK6d,cAAczF,IAAI,UAAYpY,KAAKynB,OAAM,2BACzEnP,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAyiB,GAAqBriB,QAAQJ,OAC9CsZ,oBAGCuJ,EAAArnB,UAAA6nB,2BAAN,SAAiCrjB,sEAC/B,MAAA,CAAA,EAAO1E,KAAK4d,WAAWgB,KACrB,GAAG5e,KAAK6d,cAAczF,IAAI,UAAYpY,KAAKynB,OAAM,0BACjDN,GAAqBniB,OAAON,IAE3B4T,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAykB,GAAqBriB,QAAQpC,OAChDsb,6DA1DiBK,EAAAA,kBACG5E,0IALd8N,EAAmBzmB,EAAA,CAD/ByY,EAAAA,WAAW,CAACC,WAAY,UACZ+N,qBCZb,SAAAS,IAAA,IAAAhV,EAAA,OAAAxN,GAAAA,EAAA3E,MAAAb,KAAAU,YAAAV,YACYgT,EAAAyU,OAAS,mBADgB3nB,EAAAkoB,EAAAxiB,uIAAxBwiB,EAAelnB,EAAA,CAD3ByY,EAAAA,WAAW,CAACC,WAAY,UACZwO,IAAwBT,mBCArC,SAAAU,IAAA,IAAAjV,EAAA,OAAAxN,GAAAA,EAAA3E,MAAAb,KAAAU,YAAAV,YACYgT,EAAAyU,OAAS,uBADmB3nB,EAAAmoB,EAAAziB,uIAA3ByiB,EAAkBnnB,EAAA,CAD9ByY,EAAAA,WAAW,CAACC,WAAY,UACZyO,IAA2BV,kBCKtC,SAAAW,EACUtK,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAGJqK,EAAAhoB,UAAAioB,UAAN,8EACE,MAAA,CAAA,EAAOnoB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,6BACvCE,KACC3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA+E,EAAK3E,QAAQJ,OACzBsZ,oBAGAkK,EAAAhoB,UAAAkoB,UAAN,8EACE,MAAA,CAAA,EAAOpoB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,kBACvCE,KACC3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA8D,EAAM1D,QAAQJ,OAC1BsZ,6DAjBgBK,EAAAA,kBACG5E,0IAHdyO,EAAYpnB,EAAA,CADxByY,EAAAA,WAAW,CAACC,WAAY,UACZ0O,qBCGb,SAAAG,mDAYA,OAZwCvoB,EAAAuoB,EAAA7iB,GAQ/B6iB,EAAAvjB,QAAP,SAAeJ,KAGR2jB,EAAArjB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVU6gB,EAAkBvnB,EAAA,CAT9BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJ0H,QAAS,SACTrE,MAAO,QACPF,WAAY,YACZD,UAAW,eAGFkd,IAA2B5jB,kBCyCxC,SAAA6jB,mDAwCA,OAxCyCxoB,EAAAwoB,EAAA9iB,GAoChC8iB,EAAAxjB,QAAP,SAAeJ,KAGR4jB,EAAAtjB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAtCU8gB,EAAmBxnB,EAAA,CA7C/BuF,EAAc,CACbE,cAAe,CACb+F,KAAM,OACNmK,UAAW,WACXO,qBAAsB,qBACtBR,gBAAiB,iBACjBhM,KAAM,OACN2P,MAAO,QACPC,SAAU,UACVzN,YAAa,aACbD,gBAAiB,gBACjB6b,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,sBACvB9Z,OAAQ,SACR+Z,OAAQ,SACRjO,OAAQ,UAEVnV,SAAU,CACR8F,KAAMH,EACN2K,SAAU/B,GACVmC,mBAAoBZ,GACpBO,eAAgBzB,GAChB5K,KAAMD,EACN4P,MAAO5U,MAGE+iB,IAA4B7jB,INlD7ByiB,GAAAA,EAAAA,sBAAAA,EAAAA,oBAAmB,KAC7BA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,SAAA,GAAA,eOHU2C,kBPsBZ,SAAAC,mDAYA,OAZoChqB,EAAAgqB,EAAAtkB,GAQ3BskB,EAAAhlB,QAAP,SAAeJ,KAGRolB,EAAA9kB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVUsiB,EAAchpB,EAAA,CAhB1BuF,EAAc,CACbE,cAAe,CACbwjB,QAAS,UACTlU,MAAO,QACPmU,UAAW,YACXC,MAAO,QACPC,OAAQ,UAEV1jB,SAAU,CACRujB,QAAS9kB,EAAUiiB,EAAAA,qBACnBrR,MAAO5Q,EAAUiiB,EAAAA,qBACjB8C,UAAW/kB,EAAUiiB,EAAAA,qBACrB+C,MAAOhlB,EAAUiiB,EAAAA,qBACjBgD,OAAQjlB,EAAUiiB,EAAAA,yBAGT4C,IAAuBrlB,kBQOpC,SAAA0lB,mDA4BA,OA5BgCrqB,EAAAqqB,EAAA3kB,GAwBvB2kB,EAAArlB,QAAP,SAAeJ,KAGRylB,EAAAnlB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBA1BU2iB,EAAUrpB,EAAA,CA5BtBuF,EAAc,CACbE,cAAe,CACb6jB,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,uBACxBtW,KAAM,QAERzO,SAAU,CACRyO,KAAMhQ,EAAU6N,EAAAA,kBAGPqX,IAAmB1lB,iBCR9B,SAAA+mB,EACU5N,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAGJ2N,EAAAtrB,UAAA6gB,OAAN,SAAa0K,EAAeC,4EAK1B,OAJI7K,GAAS,IAAKC,EAAAA,YAAcxP,IAAI,SAAUma,GAC1CC,IACF7K,EAASA,EAAOvP,IAAI,QAASoa,EAAQzT,aAEvC,CAAA,EAAOjY,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAiB,CAACyI,OAAMA,IAC/DvI,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAyH,EAAKrH,QAAQJ,OAC9BsZ,oBAGCwN,EAAAtrB,UAAAC,OAAN,SAAamM,sEACX,MAAA,CAAA,EAAOtM,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAiBjM,EAAKnH,OAAOsH,IACrEgM,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAyH,EAAKrH,QAAQJ,OAC9BsZ,oBAGCwN,EAAAtrB,UAAA4d,QAAN,SAAcvK,sEACZ,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,KAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAyH,EAAKrH,QAAQJ,OAC9BsZ,oBAGCwN,EAAAtrB,UAAAyrB,cAAN,SAAoBpY,sEAClB,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,YAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAylB,GAAWrlB,QAAQJ,OACpCsZ,oBAGCwN,EAAAtrB,UAAA0rB,OAAN,SAAarY,EAAgBsY,sEAC3B,MAAA,CAAA,EAAO7rB,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,IAAKpH,EAAKnH,OAAO6mB,IAChFvT,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAyH,EAAKrH,QAAQJ,OAC9BsZ,oBAGCwN,EAAAtrB,UAAA6rB,OAAN,SAAazf,sEACX,MAAA,CAAA,EAAOtM,KAAK4d,WACTmO,OAAU/rB,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB9L,EAAKrE,GAAE,KACjE+V,oBAGCwN,EAAAtrB,UAAA8rB,cAAN,SAAoBzY,sEAClB,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,gBAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAolB,GAAehlB,QAAQJ,OACxCsZ,oBAGCwN,EAAAtrB,UAAA+rB,iBAAN,SAAuB1Y,EAAgB2Y,sEACrC,MAAA,CAAA,EAAOlsB,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,eAAgBuW,GAAe9kB,OAAOknB,IACrG5T,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAolB,GAAehlB,QAAQJ,OACxCsZ,oBAGCwN,EAAAtrB,UAAA+d,SAAN,SAAe1K,EAAgBkO,4EAK7B,OAJIZ,EAAS,IAAIC,EAAAA,WACbW,IACFZ,EAASA,EAAOvP,IAAI,gBAAiBmQ,EAAaxJ,aAEpD,CAAA,EAAOjY,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,UAAW,CAACsN,OAAMA,IAC/EvI,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqQ,GAASjQ,QAAQJ,OAClCsZ,oBAGCwN,EAAAtrB,UAAAisB,eAAN,SAAqB5Y,EAAgB6Y,EAAoBnX,sEACvD,MAAA,CAAA,EAAOjV,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,UAAU6Y,EAAU,SAAU,CAACnX,KAAMnC,EAAAA,aAAamC,KACjHqD,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqQ,GAASjQ,QAAQJ,OAClCsZ,oBAGCwN,EAAAtrB,UAAAmsB,iBAAN,SAAuB9Y,EAAgB6Y,EAAoBE,sEACzD,MAAA,CAAA,EAAOtsB,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,UAAU6Y,EAAU,WAAY,CAAClX,OAAQoX,EAAWrU,aACnHK,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqQ,GAASjQ,QAAQJ,OAClCsZ,oBAGCwN,EAAAtrB,UAAAqsB,WAAN,SAAiBzV,sEACf,MAAA,CAAA,EAAO9W,KAAK4d,WACTmO,OAAU/rB,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBtB,EAASvD,OAAM,UAAUuD,EAAS7O,GAAE,KAC9F+V,oBAGCwN,EAAAtrB,UAAAssB,YAAN,SAAkBjZ,EAAgB/I,sEAChC,MAAA,CAAA,EAAOxK,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,UAAW,CAACtL,GAAIuC,EAAKvC,KACnFqQ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAyH,EAAKrH,QAAQJ,OAC9BsZ,oBAGCwN,EAAAtrB,UAAAusB,WAAN,SAAiBlZ,sEACf,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,aAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwf,GAAWpf,QAAQJ,OACpCsZ,oBAGCwN,EAAAtrB,UAAAwsB,WAAN,SAAiBnZ,EAAgB/I,sEAC/B,MAAA,CAAA,EAAOxK,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,YAAa,CAAC/I,KAAIA,IAChF8N,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwf,GAAWpf,QAAQJ,OACpCsZ,oBAGCwN,EAAAtrB,UAAAysB,aAAN,SAAmBC,sEACjB,MAAA,CAAA,EAAO5sB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,uBAAuBwU,EAAO3kB,GAAE,WAAY,IACpFqQ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwf,GAAWpf,QAAQJ,OACpCsZ,oBAGCwN,EAAAtrB,UAAA2sB,cAAN,SAAoBD,sEAClB,MAAA,CAAA,EAAO5sB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,uBAAuBwU,EAAO3kB,GAAE,YAAa,IACrFqQ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwf,GAAWpf,QAAQJ,OACpCsZ,oBAGCwN,EAAAtrB,UAAA4sB,aAAN,SAAmBF,sEACjB,MAAA,CAAA,EAAO5sB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,uBAAuBwU,EAAO3kB,GAAE,WAAY,IACpFqQ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwf,GAAWpf,QAAQJ,OACpCsZ,oBAGCwN,EAAAtrB,UAAA6sB,mBAAN,SAAyBxZ,sEACvB,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,sBAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA2jB,GAAmBvjB,QAAQJ,OAC5CsZ,oBAGCwN,EAAAtrB,UAAA8sB,mBAAN,SAAyBzZ,EAAgBqZ,sEACvC,MAAA,CAAA,EAAO5sB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,qBAAsB8U,GAAmBrjB,OAAO4nB,IAC9GtU,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA2jB,GAAmBvjB,QAAQJ,OAC5CsZ,oBAGCwN,EAAAtrB,UAAA+sB,qBAAN,SAA2BL,sEACzB,MAAA,CAAA,EAAO5sB,KAAK4d,WACTmO,OAAU/rB,KAAK6d,cAAczF,IAAI,UAAS,4BAA4BwU,EAAO3kB,GAAE,KAC/E+V,oBAGCwN,EAAAtrB,UAAAgtB,qBAAN,SAA2BN,sEACzB,MAAA,CAAA,EAAO5sB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,4BAA4BwU,EAAO3kB,GAAE,WAAY,IACzFqQ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA2jB,GAAmBvjB,QAAQJ,OAC5CsZ,oBAGCwN,EAAAtrB,UAAAitB,SAAN,SAAe5Z,EAAgB6Z,eAAA,IAAAA,IAAAA,GAAA,+DAC7B,MAAA,CAAA,EAAOptB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,WAAU6Z,EAAU,aAAe,KAChG9U,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAme,GAAK/d,QAAQJ,OAC9BsZ,oBAGCwN,EAAAtrB,UAAAmtB,WAAN,SAAiB9Z,EAAgB8S,sEAC/B,MAAA,CAAA,EAAOrmB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,UAAWsP,GAAK7d,OAAOqhB,IACrF/N,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAme,GAAK/d,QAAQJ,OAC9BsZ,oBAGCwN,EAAAtrB,UAAAotB,kBAAN,SAAwB/Z,sEACtB,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,gBAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqV,GAAoBjV,QAAQJ,OAC7CsZ,oBAGCwN,EAAAtrB,UAAAqtB,uBAAN,SAA6Bha,sEAC3B,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,2BAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA4jB,GAAoBxjB,QAAQJ,OAC7CsZ,oBAGCwN,EAAAtrB,UAAAstB,SAAN,SAAeja,sEACb,MAAA,CAAA,EAAOvT,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,SAAU,IACxE+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwf,GAAWpf,QAAQJ,OACpCsZ,oBAGCwN,EAAAtrB,UAAAutB,UAAN,SAAgBla,sEACd,MAAA,CAAA,EAAOvT,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,UAAW,IACzEyK,oBAGCwN,EAAAtrB,UAAAwtB,SAAN,SAAena,EAAgB6Z,eAAA,IAAAA,IAAAA,GAAA,+DAC7B,MAAA,CAAA,EAAOptB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,WAAU6Z,EAAU,aAAe,KAChG9U,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqO,GAAKjO,QAAQJ,OAC9BsZ,oBAGCwN,EAAAtrB,UAAAytB,WAAN,SAAiBpa,EAAgBlB,sEAC/B,MAAA,CAAA,EAAOrS,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,UAAWR,GAAK/N,OAAOqN,IACrFiG,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqO,GAAKjO,QAAQJ,OAC9BsZ,oBAGCwN,EAAAtrB,UAAA0tB,cAAN,SAAoBra,sEAClB,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,YAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAkgB,GAAU9f,QAAQJ,OACnCsZ,oBAGCwN,EAAAtrB,UAAA2tB,gBAAN,SAAsBta,EAAgBwT,sEACpC,MAAA,CAAA,EAAO/mB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,WAAYqR,GAAU5f,OAAO+hB,IAC3FzO,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAkgB,GAAU9f,QAAQJ,OACnCsZ,oBAGCwN,EAAAtrB,UAAAsgB,eAAN,SAAqBjN,sEACnB,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,iBAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAoL,GAAWhL,QAAQJ,OACpCsZ,oBAGCwN,EAAAtrB,UAAA4tB,mBAAN,SAAyBva,sEACvB,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,sBAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA0Q,GAAetQ,QAAQJ,OACxCsZ,oBAGCwN,EAAAtrB,UAAA6tB,qBAAN,SAA2Bxa,sEACzB,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,wBAC7D+E,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAghB,GAAiB5gB,QAAQJ,OAC1CsZ,oBAGCwN,EAAAtrB,UAAA8tB,mBAAN,SAAyBza,EAAgBkO,EAAsBd,EAAcvY,4EAK3E,OAJIyY,GAAS,IAAIC,EAAAA,YAAaxP,IAAI,OAAQqP,EAAK1I,YAC3C7P,IACFyY,EAASA,EAAOvP,IAAI,OAAQlJ,EAAK6P,aAEnC,CAAA,EAAOjY,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,gBAAgBkO,EAAY,UAAW,CAACZ,OAAMA,EAAEG,QAAS,aACtH1I,KAAK3R,EAAAA,KAAI,SAACkY,GACT,MAAO,CACLoC,OAAQpC,EAASqC,QAAQ9I,IAAI,gBAC7B1T,KAAMqO,GAAKjO,QAAQ+Z,EAAS/b,WAG/Bkb,oBAGCwN,EAAAtrB,UAAA+tB,uBAAN,SAA6BC,sEAC3B,MAAA,CAAA,EAAOluB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,6BAA6B8V,EAAQ,WAAY,IACzF5V,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAghB,GAAiB5gB,QAAQJ,OAC1CsZ,oBAGCwN,EAAAtrB,UAAAiuB,wBAAN,SAA8BD,sEAC5B,MAAA,CAAA,EAAOluB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,6BAA6B8V,EAAQ,YAAa,IAC1F5V,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAghB,GAAiB5gB,QAAQJ,OAC1CsZ,oBAGCwN,EAAAtrB,UAAAkuB,iBAAN,SAAuB7a,EAAgB8a,sEACrC,MAAA,CAAA,EAAOruB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,cAAgB,CAAC/I,KAAMD,EAAKvF,OAAOqpB,KACjG/V,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqQ,GAASjQ,QAAQJ,OAClCsZ,oBAGCwN,EAAAtrB,UAAAouB,YAAN,SAAkBlC,sEAChB,MAAA,CAAA,EAAOpsB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,qBAAqBgU,EAAU,KACtE9T,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqQ,GAASjQ,QAAQJ,OAClCsZ,oBAGCwN,EAAAtrB,UAAAquB,eAAN,SAAqBnC,EAAoBiC,sEACvC,MAAA,CAAA,EAAOruB,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,qBAAqBgU,EAAU,IAAK,CAAC5hB,KAAMD,EAAKvF,OAAOqpB,KAChG/V,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqQ,GAASjQ,QAAQJ,OAClCsZ,oBAGCwN,EAAAtrB,UAAAsuB,eAAN,SAAqBpC,sEACnB,MAAA,CAAA,EAAOpsB,KAAK4d,WACTmO,OAAU/rB,KAAK6d,cAAczF,IAAI,UAAS,qBAAqBgU,EAAU,KACzEpO,oBAGCwN,EAAAtrB,UAAAuuB,oBAAN,SAA0BrC,sEACxB,MAAA,CAAA,EAAOpsB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,qBAAqBgU,EAAU,iBAAkB,IACzFpO,6DAzTiBK,EAAAA,kBACG5E,0IAHd+R,EAAO1qB,EAAA,CADnByY,EAAAA,WAAW,CAACC,WAAY,UACZgS,oBCbX,SAAAkD,EACU9Q,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAGJ6Q,EAAAxuB,UAAAyuB,aAAN,SAAmBC,sEACjB,MAAA,CAAA,EAAO5uB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBwW,EAAW,KACxEtW,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAkgB,GAAU9f,QAAQJ,OACnCsZ,oBAGC0Q,EAAAxuB,UAAA2uB,gBAAN,SAAsB9H,sEACpB,MAAA,CAAA,EAAO/mB,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,sBAAsB2O,EAAU9e,GAAE,IAAK2c,GAAU5f,OAAO+hB,IACjGzO,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAkgB,GAAU9f,QAAQJ,OACnCsZ,oBAGC0Q,EAAAxuB,UAAA4uB,gBAAN,SAAsBF,sEACpB,MAAA,CAAA,EAAO5uB,KAAK4d,WACTmO,OAAU/rB,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBwW,EAAW,KAC3E5Q,oBAGC0Q,EAAAxuB,UAAA6uB,oBAAN,SAA0BH,sEACxB,MAAA,CAAA,EAAO5uB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBwW,EAAW,aACxEtW,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAygB,GAAgBrgB,QAAQJ,OACzCsZ,oBAGC0Q,EAAAxuB,UAAA8uB,sBAAN,SAA4BJ,EAAqBxC,sEAC/C,MAAA,CAAA,EAAOpsB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBwW,EAAW,YAAa,CAACvJ,aAAc+G,IACrG9T,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAygB,GAAgBrgB,QAAQJ,OACzCsZ,oBAGC0Q,EAAAxuB,UAAA+uB,sBAAN,SAA4BjI,sEAC1B,MAAA,CAAA,EAAOhnB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,6BAA6B4O,EAAgB/e,GAAE,WAAY,IACnGqQ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAygB,GAAgBrgB,QAAQJ,OACzCsZ,oBAGC0Q,EAAAxuB,UAAAgvB,uBAAN,SAA6BlI,sEAC3B,MAAA,CAAA,EAAOhnB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,6BAA6B4O,EAAgB/e,GAAE,YAAa,IACpGqQ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAygB,GAAgBrgB,QAAQJ,OACzCsZ,6DAjDiBK,EAAAA,kBACG5E,0IAHdiV,EAAY5tB,EAAA,CADxByY,EAAAA,WAAW,CAACC,WAAY,UACZkV,qBCWb,SAAAS,mDAaA,OAboCrvB,EAAAqvB,EAAA3pB,GAS3B2pB,EAAArqB,QAAP,SAAeJ,KAGRyqB,EAAAnqB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAXU2nB,EAAcruB,EAAA,CAf1BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJyX,MAAO,QACPG,QAAS,UACTuP,KAAM,OACNxL,OAAQ,SACRI,WAAY,aAEdxd,SAAU,CACRqZ,QAAS9X,EACT6b,OAAQrZ,EACR0Z,UAAW7d,MAGF+oB,IAAuB1qB,iBCVpC,SAAA4qB,KAUA,OAJSA,EAAAvqB,QAAP,SAAeJ,KAGR2qB,EAAArqB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBARU6nB,EAAqBvuB,EAAA,CAPjCuF,EAAc,CACbE,cAAe,CACb+oB,SAAU,UACVjhB,YAAa,aACbkhB,qBAAsB,yBAGbF,qBAyBb,SAAAG,mDAaA,OAbwC1vB,EAAA0vB,EAAAhqB,GAS/BgqB,EAAA1qB,QAAP,SAAeJ,KAGR8qB,EAAAxqB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAXUgoB,EAAkB1uB,EAAA,CAb9BuF,EAAc,CACbE,cAAe,CACb8H,YAAa,aACbkhB,qBAAsB,qBACtBE,aAAc,cACdC,sBAAuB,sBACvBC,OAAQ,SACRrb,oBAAqB,qBAEvB9N,SAAU,CACRmpB,OAAQvqB,EAAUiqB,QAGTG,IAA2B/qB,ILhC5BolB,GAAAA,EAAAA,0BAAAA,EAAAA,wBAAuB,KACjCA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,OAAA,GAAA,4BAgBF,SAAA+F,mDAYA,OAZqC9vB,EAAA8vB,EAAApqB,GAQ5BoqB,EAAA9qB,QAAP,SAAeJ,KAGRkrB,EAAA5qB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVUooB,EAAe9uB,EAAA,CAb3BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJC,KAAM,OACNzC,KAAM,OACNmK,cAAe,eACfU,OAAQ,UAEV9J,SAAU,CACRf,KAAMF,EACN+K,OAAQrL,EAAU4kB,EAAAA,6BAGT+F,IAAwBnrB,YMrBrBorB,GAAclvB,GAC5B,OAAIA,GAAU,EACL,GAEFhB,MAAMkB,MAAM,KAAMlB,MAAMgB,IAASgG,KAAI,SAACzD,EAAG1C,GAAM,OAAAA,EAAI,SCFhDsvB,kBCSZ,SAAAC,mDAWA,OAXqCjwB,EAAAiwB,EAAAvqB,GAO5BuqB,EAAAjrB,QAAP,SAAeJ,KAGRqrB,EAAA/qB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBATUuoB,EAAejvB,EAAA,CAR3BuF,EAAc,CACbE,cAAe,CACbypB,OAAQ,SACRC,aAAc,cACdC,mBAAoB,mBACpB7f,YAAa,iBAGJ0f,IAAwBtrB,kBA0BrC,SAAA0rB,IAAA,IAAAnd,EAAA,OAAAxN,GAAAA,EAAA3E,MAAAb,KAAAU,YAAAV,YAOUgT,EAAA2c,OAA2C,KA+BrD,OAtC6B7vB,EAAAqwB,EAAA3qB,GAUpB2qB,EAAArrB,QAAP,SAAeJ,KAGRyrB,EAAAnrB,OAAP,SAAcN,KAEdlF,OAAAgC,eAAI2uB,EAAAjwB,UAAA,cAAW,KAAf,WACE,OAAO+K,KAAKmlB,IAAIpwB,KAAKmQ,SAASkgB,YAAcplB,KAAKmlB,IAAI,oCAGvDD,EAAAjwB,UAAAowB,iBAAA,WAAA,IAAAtd,EAAAhT,KACE,GAA2B,IAAvBA,KAAK2vB,OAAOhvB,QAAgBX,KAAKmQ,SAASkgB,WAAY,CACxD,IAAME,EAActlB,KAAKmlB,IAAIpwB,KAAKmQ,SAASkgB,YAAcplB,KAAKmlB,IAAI,GAClEpwB,KAAK2vB,OAASE,GAAcU,GAAa5pB,KAAI,SAAA6pB,GAC3C,IAAMvO,EAAejP,EAAK7C,SAASkgB,WAAaplB,KAAAwlB,IAAA,EAAKD,GAOrD,MAAO,CACLnuB,MAAOmuB,EACP9Q,MAPmB,IAAjBuC,EACM,QAEA,OAAOA,MAQrB,OAAOjiB,KAAK2vB,QA1Bd7uB,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAZU2oB,EAAOrvB,EAAA,CAbnBuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJC,KAAM,OACNiI,SAAU,WACVP,cAAe,eACf0E,oBAAqB,oBACrBoc,YAAa,cAEflqB,SAAU,CACR2J,SAAU4f,OAGDI,IAAgB1rB,kBCZ7B,SAAAksB,mDA2BA,OA3ByC7wB,EAAA6wB,EAAAnrB,GAevChG,OAAAgC,eAAImvB,EAAAzwB,UAAA,kBAAe,KAAnB,WACE,OAAKF,KAAKqV,WAGHpK,KAAKC,MAAM,IAAOlL,KAAKsV,cAAgBtV,KAAKqV,YAAc,GAFxD,mCAMJsb,EAAA7rB,QAAP,SAAeJ,KAGRisB,EAAA3rB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAzBUmpB,EAAmB7vB,EAAA,CArB/BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJuO,gBAAiB,iBACjBjB,MAAO,QACPjB,oBAAqB,oBACrB3H,YAAa,aACbD,gBAAiB,gBACjBE,UAAW,WACX8I,WAAY,YACZF,iBAAkB,iBAClBC,eAAgB,eAChB5F,OAAQ,SACR+gB,eAAgB,gBAChBC,gBAAiB,kBAEnBrqB,SAAU,CACRqQ,eAAgBzB,GAChBG,MAAOJ,OAGEwb,IAA4BlsB,iBC4BvC,SAAAqsB,EACUlT,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAIJiT,EAAA5wB,UAAAmgB,WAAN,SAAiB9S,sEACf,MAAA,CAAA,EAAOvN,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsB7K,EAAK,KACtF+K,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAoN,GAAWhL,QAAQpC,OACtCsb,oBAGC8S,EAAA5wB,UAAA6wB,QAAN,SAActP,sEACZ,MAAA,CAAA,EAAOzhB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,UAC7FnJ,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAysB,GAAerqB,QAAQpC,OAC1Csb,oBAGC8S,EAAA5wB,UAAAwgB,UAAN,SAAgBe,EAAsBd,EAAcvY,EAAcwY,4EAWhE,OAVIC,GAAS,IAAIC,EAAAA,YAAaxP,IAAI,OAAQqP,EAAK1I,YAC5C3G,IAAI,OAAQlJ,EAAK6P,YAChB2I,IACEA,EAAQT,QACVU,EAASA,EAAOvP,IAAI,QAAS0K,EAAAA,qBAAqB4E,EAAQT,SAExDS,EAAQG,SACVF,EAASA,EAAOvP,IAAI,SAAUsP,EAAQG,UAG1C,CAAA,EAAO/gB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,WAAY,CAACZ,OAAMA,EAAEG,QAAS,aAC3H1I,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,MAAA,CAClBue,OAAQve,EAAOwe,QAAQ9I,IAAI,gBAC3B1T,KAAMub,GAAgBnb,QAAQpC,EAAOI,WAEtCkb,oBAGC8S,EAAA5wB,UAAA8wB,oBAAN,SAA0BvP,sEACxB,MAAA,CAAA,EAAOzhB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,YAAYnJ,KAC1G3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAkrB,GAAgB9qB,QAAQJ,OACpCsZ,oBAGE8S,EAAA5wB,UAAA+wB,WAAN,SAAiBxP,sEACf,MAAA,CAAA,EAAOzhB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,aAAanJ,KAC3G3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAytB,GAAQrrB,QAAQpC,OAC9Bsb,oBAGE8S,EAAA5wB,UAAAgxB,gBAAN,SAAsBlP,sEACpB,MAAA,CAAA,EAAOhiB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,8BAA8B4J,EAAS,WAAW1J,KAC9G3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAqQ,GAAKjO,QAAQpC,OAC3Bsb,oBAGE8S,EAAA5wB,UAAAixB,eAAN,SAAqB1P,sEACnB,MAAA,CAAA,EAAOzhB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,kBAC7FnJ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA8qB,GAAmB1qB,QAAQJ,OAC5CsZ,oBAGC8S,EAAA5wB,UAAAwtB,SAAN,SAAejM,EAAsBd,EAAcvY,EAAcwY,eAAA,IAAAA,IAAAA,EAAA,sEAoB/D,OAnBIC,GAAS,IAAIC,EAAAA,YAAaxP,IAAI,OAAQqP,EAAK1I,YAC3C7P,IACFyY,EAASA,EAAOvP,IAAI,OAAQlJ,EAAK6P,aAE/B2I,EAAQmB,oBACVlB,EAASA,EAAOvP,IAAI,sBAAuBsP,EAAQmB,kBAAkB9J,aAEnE2I,EAAQkB,iBACVjB,EAASA,EAAOvP,IAAI,kBAAmBsP,EAAQkB,eAAe7J,aAE5D2I,EAAQqB,eACVpB,EAASA,EAAOvP,IAAI,gBAAiBsP,EAAQqB,aAAahK,aAExD2I,EAAQrN,SACVsN,EAASA,EAAOvP,IAAI,UAAWsP,EAAQrN,OAAO0E,aAE5C2I,EAAQtQ,SACVuQ,EAASA,EAAOvP,IAAI,SAAUN,EAAAA,aAAa4P,EAAQtQ,UAErD,CAAA,EAAOtQ,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,UAAW,CAACZ,OAAMA,EAAEG,QAAS,aAC1H1I,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,MAAA,CAClBue,OAAQve,EAAOwe,QAAQ9I,IAAI,gBAC3B1T,KAAMqO,GAAKjO,QAAQpC,EAAOI,WACvBkb,oBAGH8S,EAAA5wB,UAAAkxB,SAAN,SAAe3P,sEACb,MAAA,CAAA,EAAOzhB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,WAC7FnJ,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAA0S,GAAetQ,QAAQpC,OAC1Csb,oBAGC8S,EAAA5wB,UAAAmxB,cAAN,SAAoB5P,sEAClB,MAAA,CAAA,EAAOzhB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,iBAC7FnJ,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAiuB,GAAoB7rB,QAAQpC,OAC/Csb,oBAGC8S,EAAA5wB,UAAAoxB,YAAN,SAAkBC,sEAChB,MAAA,CAAA,EAAOvxB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,2BAA2BmZ,EAAgB,KACtGjZ,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAA0S,GAAetQ,QAAQpC,OAC1Csb,oBAGC8S,EAAA5wB,UAAAsxB,YAAN,SAAkBC,sEAChB,MAAA,CAAA,EAAOzxB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gCAAgCqZ,EAAM,KACjGnZ,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAA4T,GAAmBxR,QAAQpC,OAC9Csb,oBAGC8S,EAAA5wB,UAAAwxB,aAAN,SAAmBC,sEACjB,MAAA,CAAA,EAAO3xB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gCAAgCuZ,EAAgB,WAC3GrZ,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAqQ,GAAKjO,QAAQpC,OAChCsb,oBAGC8S,EAAA5wB,UAAA0xB,uBAAN,SAA6BhR,sFAE3B,GADIC,EAAS,IAAIC,EAAAA,WACbF,EAAS,KACX,IAAkBhH,EAAA3V,EAAAzE,OAAOoF,KAAKgc,IAAQjc,EAAAiV,EAAArX,QAAAoC,EAAAhC,KAAAgC,EAAAiV,EAAArX,OAA3BtB,EAAG0D,EAAAtC,MACRue,EAAQ3f,KACV4f,EAASA,EAAOvP,IAAIrQ,EAAK2f,EAAQ3f,2GAIZgG,IAArB2Z,EAAQiR,WACVhR,EAASA,EAAOvP,IAAI,WAAYsP,EAAQiR,SAAW,IAAM,MAI7D,MAAA,CAAA,EAAO7xB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gCAAiC,CAACyI,OAAMA,IAAGvI,KACvG3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAqX,GAAoBjV,QAAQpC,OAC1Csb,oBAGE8S,EAAA5wB,UAAAqtB,uBAAN,SAA6B3M,sFAE3B,GADIC,EAAS,IAAIC,EAAAA,WACbF,EAAS,KACX,IAAkBhH,EAAA3V,EAAAzE,OAAOoF,KAAKgc,IAAQjc,EAAAiV,EAAArX,QAAAoC,EAAAhC,KAAAgC,EAAAiV,EAAArX,OAA3BtB,EAAG0D,EAAAtC,MACRue,EAAQ3f,KACV4f,EAASA,EAAOvP,IAAIrQ,EAAK2f,EAAQ3f,2GAIZgG,IAArB2Z,EAAQiR,WACVhR,EAASA,EAAOvP,IAAI,WAAYsP,EAAQiR,SAAW,IAAM,MAI7D,MAAA,CAAA,EAAO7xB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gCAAiC,CAACyI,OAAMA,IAAGvI,KACvG3R,EAAAA,KAAI,SAAAjE,GAAU,OAAA4lB,GAAoBxjB,QAAQpC,OAC1Csb,6DAxJkBK,EAAAA,kBACG5E,0IAHdqX,EAAahwB,EAAA,CADzByY,EAAAA,WAAW,CAACC,WAAY,UACZsX,qBCxCb,SAAAgB,mDAoBA,OApBwChyB,EAAAgyB,EAAAtsB,GAOtChG,OAAAgC,eAAIswB,EAAA5xB,UAAA,aAAU,KAAd,WACE,OAAOF,KAAK+xB,gBAAkB/xB,KAAKgyB,mDAGrCxyB,OAAAgC,eAAIswB,EAAA5xB,UAAA,QAAK,KAAT,WACE,OAAOF,KAAKiyB,YAAcjyB,KAAKkyB,aAAelyB,KAAKmyB,qDAI9CL,EAAAhtB,QAAP,SAAeJ,KAGRotB,EAAA9sB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAlBUsqB,EAAkBhxB,EAAA,CAT9BuF,EAAc,CACbE,cAAe,CACb6rB,kBAAmB,kBACnBC,oBAAqB,oBACrBC,WAAY,YACZC,YAAa,aACbC,sBAAuB,0BAGdV,IAA2BrtB,kBAgCxC,SAAAguB,mDASA,OATwC3yB,EAAA2yB,EAAAjtB,GAK/BitB,EAAA3tB,QAAP,SAAeJ,KAGR+tB,EAAAztB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAPUirB,EAAkB3xB,EAAA,CAV9BuF,EAAc,CACbE,cAAe,CACb+F,KAAM,OACNomB,UAAW,YAEblsB,SAAU,CACR8F,KAAMH,EACNwmB,SAAUb,OAGDW,IAA2BhuB,iBCjCtC,SAAAmuB,EACUhV,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAIJ+U,EAAA1yB,UAAA2yB,gBAAN,SAAsBpR,sEACpB,MAAA,CAAA,EAAOzhB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,oBAAoBnJ,KAClH3R,EAAAA,KAAI,SAAAkY,GAAY,OAAA4T,GAAmB3tB,QAAQ+Z,OAC3Cb,oBAGE4U,EAAA1yB,UAAA4yB,aAAN,SAAmBvf,sEACjB,MAAA,CAAA,EAAOvT,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB7E,EAAM,WAC7D+E,KACC3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqQ,GAASjQ,QAAQJ,OAC7BsZ,oBAGA4U,EAAA1yB,UAAA6yB,eAAN,SAAqBtR,EAAsBlO,EAAgByf,4EAKzD,OAJMlwB,EAAO,CACXwJ,KAAM,CAACrE,GAAIsL,GACXwS,aAAcT,GAAyBtgB,OAAOguB,IAEhD,CAAA,EAAOhzB,KAAK4d,WAAWgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,sBAAsBqJ,EAAY,SAAU3e,GACxGwV,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAghB,GAAiB5gB,QAAQJ,OAC1CsZ,6DA1BiBK,EAAAA,kBACG5E,0IAHdmZ,EAAiB9xB,EAAA,CAD7ByY,EAAAA,WAAW,CAACC,WAAY,UACZoZ,oBCCX,SAAAK,EACUrV,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAIJoV,EAAA/yB,UAAA4d,QAAN,SAAc7V,sEACZ,MAAA,CAAA,EAAOjI,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,4BAA4BnQ,EAAE,KACzFqQ,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAktB,GAAgB9qB,QAAQpC,OAC3Csb,oBAGCiV,EAAA/yB,UAAAgzB,UAAN,SAAgBC,sEACd,MAAA,CAAA,EAAOnzB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,4BAA4B+a,EAAO,YAC9F7a,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAyS,GAAgBrQ,QAAQpC,OAC3Csb,oBAGCiV,EAAA/yB,UAAAkzB,YAAN,SAAkBD,sEAChB,MAAA,CAAA,EAAOnzB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,4BAA4B+a,EAAO,aAC9F7a,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAytB,GAAQrrB,QAAQpC,OACnCsb,oBAGCiV,EAAA/yB,UAAAkxB,SAAN,SAAe+B,sEACb,MAAA,CAAA,EAAOnzB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,4BAA4B+a,EAAO,WAC9F7a,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAiuB,GAAoB7rB,QAAQpC,OAC/Csb,6DA1BiBK,EAAAA,kBACG5E,0IAHdwZ,EAAkBnyB,EAAA,CAD9ByY,EAAAA,WAAW,CAACC,WAAY,UACZyZ,qBCCb,SAAAI,mDAYA,OAZgCvzB,EAAAuzB,EAAA7tB,GAQvB6tB,EAAAvuB,QAAP,SAAeJ,KAGR2uB,EAAAruB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVU6rB,EAAUvyB,EAAA,CATtBuF,EAAc,CACbE,cAAe,CACb+sB,KAAM,OACNC,cAAe,eACfC,MAAO,QACPxJ,UAAW,YACXnU,MAAO,YAGEwd,IAAmB5uB,IPTpBqrB,GAAAA,EAAAA,sBAAAA,EAAAA,oBAAmB,KAC7BA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,UAAA,GAAA,YACAA,GAAAA,GAAA,SAAA,GAAA,eQFU2D,kBRoBZ,SAAAC,mDAYA,OAZoC5zB,EAAA4zB,EAAAluB,GAQ3BkuB,EAAA5uB,QAAP,SAAeJ,KAGRgvB,EAAA1uB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAVUksB,EAAc5yB,EAAA,CAf1BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJsrB,cAAe,eACf1d,MAAO,QACP2d,MAAO,QACPxJ,UAAW,aAEbxjB,SAAU,CACRmtB,aAAc1uB,EAAU6qB,EAAAA,qBACxBja,MAAO5Q,EAAU6qB,EAAAA,qBACjB0D,MAAOvuB,EAAU6qB,EAAAA,qBACjB9F,UAAW/kB,EAAU6qB,EAAAA,yBAGZ4D,IAAuBjvB,iBSHlC,SAAAmvB,EACUhW,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAGJ+V,EAAA1zB,UAAA2zB,eAAN,8EACE,MAAA,CAAA,EAAO7zB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,yBACvCE,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA6F,EAAKzF,QAAQJ,OAC9BsZ,oBAGC4V,EAAA1zB,UAAAsxB,YAAN,SAAkBC,sEAChB,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,KAC7DnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA6F,EAAKzF,QAAQJ,OAC9BsZ,oBAGC4V,EAAA1zB,UAAA4zB,UAAN,SAAgBrC,sEACd,MAAA,CAAA,EAAOzxB,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,iBAAgBqZ,GAAU,WAAS,YAC9FnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA2uB,GAAWvuB,QAAQJ,OACpCsZ,oBAGC4V,EAAA1zB,UAAA6zB,WAAN,SAAiBtC,EAAgB/sB,sEAC/B,MAAA,CAAA,EAAO1E,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,IAAKlnB,EAAKvF,OAAON,IAChF4T,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAA6H,EAAKzF,QAAQpC,OAChCsb,oBAGC4V,EAAA1zB,UAAA8zB,gBAAN,SAAsBhsB,EAAWiX,4EAG/B,OAFMC,EAAW,IAAIC,UACZC,OAAO,OAAQpX,EAAMiX,GAC9B,CAAA,EAAOjf,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,8BAA+B8G,GACvE5G,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqD,EAAKjD,QAAQJ,OAC9BsZ,oBAGC4V,EAAA1zB,UAAA+zB,eAAN,SAAqBxC,EAAgByC,EAAqBC,EAAkBC,4EAM1E,OALMC,EAAU,CACdC,aAAcJ,EACdC,SAAQA,EACRI,iBAAkBH,GAEpB,CAAA,EAAOp0B,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,oBAAqB4C,GACnFrW,oBAGC4V,EAAA1zB,UAAAs0B,YAAN,SAAkB/C,EAAgBnmB,EAAe6oB,4EAE/C,OADME,EAAU,CAAC/oB,MAAKA,EAAE6oB,SAAQA,GAChC,CAAA,EAAOn0B,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,iBAAkB4C,GAChFrW,oBAGC4V,EAAA1zB,UAAAu0B,mBAAN,SAAyBhD,EAAQnmB,EAAe6oB,EAAkBO,4EAEhE,OADML,EAAU,CAAC/oB,MAAKA,EAAE6oB,SAAQA,EAAEO,MAAKA,GACvC,CAAA,EAAO10B,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,yBAA0B4C,GACxFrW,oBAGC4V,EAAA1zB,UAAAy0B,eAAN,SAAqBlD,sEACnB,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,aAC7DnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA2E,EAAYvE,QAAQJ,OACrCsZ,oBAGC4V,EAAA1zB,UAAA00B,qBAAN,SAA2BnD,sEACzB,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,wBAC7DnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAkF,EAAkB9E,QAAQJ,OAC3CsZ,oBAGC4V,EAAA1zB,UAAA20B,qBAAN,SAA2BpD,sEACzB,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,wBAC7DnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAuF,EAAkBnF,QAAQJ,OAC3CsZ,oBAGC4V,EAAA1zB,UAAA40B,kBAAN,SAAwBC,sEACtB,MAAA,CAAA,EAAO/0B,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,gBAAgB2c,EAAYtD,OAAM,YAAapoB,EAAYrE,OAAO+vB,IAC3Gzc,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA2E,EAAYvE,QAAQJ,OACrCsZ,oBAGC4V,EAAA1zB,UAAA80B,4BAAN,SAAkC/oB,sEAChC,MAAA,CAAA,EAAOjM,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBnM,EAAkBwlB,OAAM,uBAAwB7nB,EAAkB5E,OAAOiH,IAClIqM,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAkF,EAAkB9E,QAAQJ,OAC3CsZ,oBAGC4V,EAAA1zB,UAAA+0B,4BAAN,SAAkC/oB,sEAChC,MAAA,CAAA,EAAOlM,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBlM,EAAkBulB,OAAM,uBAAwBxnB,EAAkBjF,OAAOkH,IAClIoM,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAuF,EAAkBnF,QAAQJ,OAC3CsZ,oBAGC4V,EAAA1zB,UAAAg1B,mBAAN,SAAyBzD,sEACvB,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,iBAAgBqZ,GAAU,WAAS,gBAC1EnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAgvB,GAAe5uB,QAAQJ,OACxCsZ,oBAGC4V,EAAA1zB,UAAAi1B,qBAAN,SAA2BzwB,sEACzB,MAAA,CAAA,EAAO1E,KAAK4d,WACTkO,MAAS9rB,KAAK6d,cAAczF,IAAI,UAAS,mCAAoCsb,GAAe1uB,OAAON,IACnG4T,KAAK3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAgxB,GAAe5uB,QAAQpC,OAC1Csb,oBAGC4V,EAAA1zB,UAAAkxB,SAAN,SAAeK,sEACb,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,WAC7DnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAyH,EAAKrH,QAAQJ,OAC9BsZ,oBAGC4V,EAAA1zB,UAAAusB,WAAN,8EACE,MAAA,CAAA,EAAOzsB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,iCACvCE,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwf,GAAWpf,QAAQJ,OACpCsZ,oBAGC4V,EAAA1zB,UAAAysB,aAAN,SAAmBuB,sEACjB,MAAA,CAAA,EAAOluB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gCAAgC8V,EAAQ,WAAY,IAC5F5V,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwf,GAAWpf,QAAQJ,OACpCsZ,oBAGC4V,EAAA1zB,UAAA2sB,cAAN,SAAoBqB,sEAClB,MAAA,CAAA,EAAOluB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,gCAAgC8V,EAAQ,YAAa,IAC7F5V,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAwf,GAAWpf,QAAQJ,OACpCsZ,oBAGC4V,EAAA1zB,UAAAk1B,cAAN,SAAoB3D,sEAClB,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,gBAC7DnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqV,GAAoBjV,QAAQJ,OAC7CsZ,oBAGC4V,EAAA1zB,UAAAm1B,wBAAN,SAA8B5D,sEAC5B,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,2BAC7DnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqV,GAAoBjV,QAAQJ,OAC7CsZ,oBAGC4V,EAAA1zB,UAAAqtB,uBAAN,SAA6BkE,sEAC3B,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,2BAC7DnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA4jB,GAAoBxjB,QAAQJ,OAC7CsZ,oBAGC4V,EAAA1zB,UAAAwtB,SAAN,SAAe+D,sEACb,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAgBqZ,EAAM,WAC7DnZ,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAqO,GAAKjO,QAAQJ,OAC9BsZ,oBAGC4V,EAAA1zB,UAAAo1B,eAAN,8EACE,MAAA,CAAA,EAAOt1B,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sCACvCE,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA6f,GAAWzf,QAAQJ,OACpCsZ,oBAGC4V,EAAA1zB,UAAAq1B,iBAAN,SAAuBrH,sEACrB,MAAA,CAAA,EAAOluB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,qCAAqC8V,EAAQ,WAAY,IACjG5V,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA6f,GAAWzf,QAAQJ,OACpCsZ,oBAGC4V,EAAA1zB,UAAAs1B,kBAAN,SAAwBtH,sEACtB,MAAA,CAAA,EAAOluB,KAAK4d,WACTgB,KAAQ5e,KAAK6d,cAAczF,IAAI,UAAS,qCAAqC8V,EAAQ,YAAa,IAClG5V,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA6f,GAAWzf,QAAQJ,OACpCsZ,oBAGC4V,EAAA1zB,UAAAu1B,YAAN,SAAkBhK,4EAEhB,OADM5K,GAAS,IAAKC,EAAAA,YAAcxP,IAAI,SAAUma,GAChD,CAAA,EAAOzrB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,gBAAiB,CAACyI,OAAMA,IAC/DvI,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA6F,EAAKzF,QAAQJ,OAC9BsZ,oBAGC4V,EAAA1zB,UAAAw1B,gBAAN,SAAsBC,sEACpB,MAAA,CAAA,EAAO31B,KAAK4d,WACTgY,IAAO51B,KAAK6d,cAAczF,IAAI,UAAS,gCAAiC,CAACud,OAAMA,IAC/Erd,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAA6F,EAAKzF,QAAQJ,OAC9BsZ,oBAGC4V,EAAA1zB,UAAA0tB,cAAN,SAAoB6D,sEAClB,MAAA,CAAA,EAAOzxB,KAAK4d,WACTxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,qCACvCE,KAAK3R,EAAAA,KAAI,SAAAjC,GAAQ,OAAAkgB,GAAU9f,QAAQJ,OACnCsZ,6DAzNiBK,EAAAA,kBACG5E,0IAHdma,EAAO9yB,EAAA,CADnByY,EAAAA,WAAW,CAACC,WAAY,UACZoa,qBCPb,SAAAiC,mDASA,OATiD/1B,EAAA+1B,EAAArwB,GAKxCqwB,EAAA/wB,QAAP,SAAeJ,KAGRmxB,EAAA7wB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAPUquB,EAA2B/0B,EAAA,CAVvCuF,EAAc,CACbE,cAAe,CACb+F,KAAM,OACNmH,gBAAiB,kBAEnBjN,SAAU,CACR8F,KAAMgc,GACNhV,eAAgBgV,OAGPuN,IAAoCpxB,kBCYjD,SAAAqxB,mDAyCA,OAzC6Ch2B,EAAAg2B,EAAAtwB,GAoB3ChG,OAAAgC,eAAIs0B,EAAA51B,UAAA,KAAE,KAAN,WACE,OAAOF,KAAK8b,4CAGdtc,OAAAgC,eAAIs0B,EAAA51B,UAAA,UAAO,KAAX,WACE,OAAOF,KAAK+1B,aAAe/1B,KAAKg2B,6CAGlCx2B,OAAAgC,eAAIs0B,EAAA51B,UAAA,SAAM,KAAV,WACE,OAAOF,KAAKi2B,YAAcj2B,KAAKk2B,+CAGjC12B,OAAAgC,eAAIs0B,EAAA51B,UAAA,gBAAa,KAAjB,WACE,OAAOF,KAAKopB,SAAWppB,KAAKm2B,mDAIvBL,EAAAhxB,QAAP,SAAeJ,KAGRoxB,EAAA9wB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBAvCUsuB,EAAuBh1B,EAAA,CAtBnCuF,EAAc,CACbE,cAAe,CACbwV,aAAc,aACdwM,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,yBAC1B7Z,OAAQ,SACR+Z,OAAQ,aAGCkM,IAAgCrxB,IHrBjCgvB,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,+CAGW2C,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,IAAAhkB,EAAA,OAAAxN,GAAAA,EAAA3E,MAAAb,KAAAU,YAAAV,YAGEgT,EAAAkJ,QAAS,IA6FX,OAhGuCpc,EAAAk3B,EAAAxxB,GAcrCwxB,EAAA92B,UAAAid,QAAA,SAAQC,GACN,OAAIpd,KAAKi3B,QAAU7Z,EAAM6Z,OAASj3B,KAAKsR,MAAQ8L,EAAM9L,IAC/CtR,KAAK4T,UAAYwJ,EAAMxJ,SAClB5T,KAAK4T,SAAS5I,UAAYoS,EAAMxJ,SAAS5I,UAAY,GAAK,EAE1DhL,KAAKiI,GAAKmV,EAAMnV,GAAK,GAAK,EAGjCjI,KAAKsR,MAAQ8L,EAAM9L,IACdtR,KAAKi3B,MAAQ7Z,EAAM6Z,MAAQ,GAAK,EAElCj3B,KAAKsR,IAAM8L,EAAM9L,IAAM,GAAK,GAGrC0lB,EAAA92B,UAAAg3B,YAAA,WACE,OAAOd,GAAgBe,SAASn3B,KAAKyc,UAGvCua,EAAA92B,UAAAk3B,YAAA,WACE,OAAOX,GAAgBU,SAASn3B,KAAKyc,UAGvCua,EAAA92B,UAAAm3B,QAAA,WACE,MAAO,CACL5D,EAAAA,sBAAsB6D,UACtB7D,EAAAA,sBAAsB4C,UACtB5C,EAAAA,sBAAsBiD,aACtBS,SAASn3B,KAAKyc,UAGlBua,EAAA92B,UAAAq3B,SAAA,WACE,MAAO,CACL9D,EAAAA,sBAAsBkD,aACtBlD,EAAAA,sBAAsB8C,aACtB9C,EAAAA,sBAAsB+D,aACtBL,SAASn3B,KAAKyc,UAGlBua,EAAA92B,UAAAu3B,UAAA,WACE,MAAO,CACLhE,EAAAA,sBAAsBoD,cACtBpD,EAAAA,sBAAsBiE,QACtBjE,EAAAA,sBAAsBkE,mBACtBR,SAASn3B,KAAKyc,UAGlBua,EAAA92B,UAAA03B,eAAA,WACE,MAAO,CACLnE,EAAAA,sBAAsBsD,oBACtBtD,EAAAA,sBAAsBoE,cACtBpE,EAAAA,sBAAsBqE,yBACtBX,SAASn3B,KAAKyc,UAGlBua,EAAA92B,UAAA63B,QAAA,WACE,MAAO,CACLtE,EAAAA,sBAAsBmD,YACtBnD,EAAAA,sBAAsBuE,cACtBvE,EAAAA,sBAAsB6C,aACtBa,SAASn3B,KAAKyc,UAGlBua,EAAA92B,UAAA+3B,YAAA,WACE,MAAO,CACLxE,EAAAA,sBAAsByE,WACtBzE,EAAAA,sBAAsB0E,UACtB1E,EAAAA,sBAAsB2E,SACtBjB,SAASn3B,KAAKyc,UAGlBua,EAAA92B,UAAAm4B,YAAA,WACE,OAAQ,CACN5E,EAAAA,sBAAsBiE,QACtBjE,EAAAA,sBAAsBoE,eACtBV,SAASn3B,KAAKyc,UAIXua,EAAAlyB,QAAP,SAAeJ,KAGRsyB,EAAAhyB,OAAP,SAAcN,KAHd5D,EAAA,CADCqG,qBAIDrG,EAAA,CADC0G,oBA9FUwvB,EAAiBl2B,EAAA,CAlB7BuF,EAAc,CACbE,cAAe,CACb0B,GAAI,KACJuV,UAAW,WACXjL,QAAS,SACTwJ,aAAc,aACd0B,SAAU,UACVnM,IAAK,MACL2lB,MAAO,QACPptB,SAAU,WACV8F,QAAS,SACTiE,SAAU,YAEZpN,SAAU,CACRiW,QAASxX,EAAUwuB,EAAAA,uBACnB7f,SAAUxN,MAGD4wB,IAA0BvyB,iBI5CrC,SAAA6zB,EACU1a,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,SAIJya,EAAAp4B,UAAA4d,QAAN,SAAcC,sEACZ,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sCAAsC2F,EAAM,KAAKzF,KAC7G3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAqQ,GAAKjO,QAAQpC,OAC3Bsb,oBAGEsa,EAAAp4B,UAAA+d,SAAN,SAAeF,sEACb,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,2BAA2B2F,EAAM,WAAWzF,KACxG3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAqU,GAASjS,QAAQpC,OAC/Bsb,oBAGEsa,EAAAp4B,UAAAge,iBAAN,SAAuBH,sEACrB,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sCAAsC2F,EAAM,oBAAoBzF,KAC5H3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAmzB,GAA4B/wB,QAAQpC,OAClDsb,oBAGEsa,EAAAp4B,UAAAie,iBAAN,SAAuBJ,sEACrB,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sCAAsC2F,EAAM,oBAAoBzF,KAC5H3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAozB,GAAwBhxB,QAAQpC,OAC9Csb,oBAGEsa,EAAAp4B,UAAAke,QAAN,SAAcL,sEACZ,MAAA,CAAA,EAAO/d,KAAK4d,WAAWxF,IAAOpY,KAAK6d,cAAczF,IAAI,UAAS,sCAAsC2F,EAAM,UAAUzF,KAClH3R,EAAAA,KAAI,SAAAjE,GAAU,OAAAs0B,GAAkBlyB,QAAQpC,OACxCsb,6DAhCkBK,EAAAA,kBACG5E,0IAHd6e,EAAiBx3B,EAAA,CAD7ByY,EAAAA,WAAW,CAACC,WAAY,UACZ8e,MCTAC,KAAiCC,GAAA,IAC3CtgB,EAAAA,uBAAuBggB,YAAa,oBACrCte,GAAC1B,EAAAA,uBAAuBigB,WAAY,kBACpCve,GAAC1B,EAAAA,uBAAuBugB,aAAc,sBACtC7e,GAAC1B,EAAAA,uBAAuBwgB,mBAAoB,gBAC5C9e,GAAC1B,EAAAA,uBAAuBygB,qBAAsB,gBAC9C/e,GAAC1B,EAAAA,uBAAuB0gB,oBAAqB,kBAC7Chf,GAAC1B,EAAAA,uBAAuB2gB,mBAAoB,gBAC5Cjf,GAAC1B,EAAAA,uBAAuBkE,gBAAiB,SACzCxC,GAAC1B,EAAAA,uBAAuBmE,kBAAmB,SAC3CzC,GAAC1B,EAAAA,uBAAuBoE,iBAAkB,mBAC1C1C,GAAC1B,EAAAA,uBAAuBqE,gBAAiB,SACzC3C,GAAC1B,EAAAA,uBAAuB4gB,QAAS,WACjClf,GAAC1B,EAAAA,uBAAuB6gB,OAAQ,UAChCnf,GAAC1B,EAAAA,uBAAuByE,SAAU,SAClC/C,GAAC1B,EAAAA,uBAAuB0E,mBAAoB,qBAC5ChD,GAAC1B,EAAAA,uBAAuB2E,mBAAoB,kBAC5CjD,GAAC1B,EAAAA,uBAAuB8gB,OAAQ,WAChCpf,GAAC1B,EAAAA,uBAAuB+gB,UAAW,SACnCrf,GAAC1B,EAAAA,uBAAuB6E,eAAgB,MACxCnD,GAAC1B,EAAAA,uBAAuB8E,gBAAiB,kBACzCpD,GAAC1B,EAAAA,uBAAuB+E,sBAAuB,kBAC/CrD,GAAC1B,EAAAA,uBAAuBkgB,SAAU,cCtBvBc,KAAwBC,GAAA,IAClCrrB,EAAAA,cAAcsrB,eAAgB,uBAC/Bxf,GAAC9L,EAAAA,cAAcurB,gBAAiB,aAChCzf,GAAC9L,EAAAA,cAAcuP,MAAO,iBCHXic,KAAwBC,GAAA,IAClCzmB,EAAAA,aAAa0mB,WAAY,YAC1B5f,GAAC9G,EAAAA,aAAa2mB,QAAS,eACvB7f,GAAC9G,EAAAA,aAAa4mB,OAAQ,eCFXC,KAAkCC,GAAA,IAC5CtxB,EAAAA,uBAAuBuxB,aAAc,yBACtCjgB,GAACtR,EAAAA,uBAAuBwxB,gBAAiB,qBACzClgB,GAACtR,EAAAA,uBAAuByxB,eAAgB,iBACxCngB,GAACtR,EAAAA,uBAAuB0xB,eAAgB,iBACxCpgB,GAACtR,EAAAA,uBAAuB2xB,QAAS,gBAGtBC,KAAuCv1B,GAAA,IACjD2D,EAAAA,uBAAuBuxB,aAAc,KACtCl1B,GAAC2D,EAAAA,uBAAuBwxB,gBAAiB,KACzCn1B,GAAC2D,EAAAA,uBAAuByxB,eAAgB,KACxCp1B,GAAC2D,EAAAA,uBAAuB0xB,eAAgB,KACxCr1B,GAAC2D,EAAAA,uBAAuB2xB,QAAS,QAGtBE,KAAoBt1B,GAAA,IAC9B0D,EAAAA,SAAS6xB,MAAO,QACjBv1B,GAAC0D,EAAAA,SAAS8xB,OAAQ,aAGPC,KAAkCC,GAAA,IAC5C7wB,EAAAA,uBAAuB8wB,QAAS,YACjCD,GAAC7wB,EAAAA,uBAAuB+wB,QAAS,SACjCF,GAAC7wB,EAAAA,uBAAuBgxB,eAAgB,0BACxCH,GAAC7wB,EAAAA,uBAAuBixB,mBAAoB,aAC5CJ,GAAC7wB,EAAAA,uBAAuBkxB,UAAW,mBAGxBC,KAAuCC,GAAA,IACjDpxB,EAAAA,uBAAuB8wB,QAAS,IACjCM,GAACpxB,EAAAA,uBAAuB+wB,QAAS,IACjCK,GAACpxB,EAAAA,uBAAuBgxB,eAAgB,KACxCI,GAACpxB,EAAAA,uBAAuBixB,mBAAoB,KAC5CG,GAACpxB,EAAAA,uBAAuBkxB,UAAW,QAGxBG,KAAyCC,GAAA,IACnDtxB,EAAAA,uBAAuB8wB,QAAS,QACjCQ,GAACtxB,EAAAA,uBAAuB+wB,QAAS,SACjCO,GAACtxB,EAAAA,uBAAuBgxB,eAAgB,QACxCM,GAACtxB,EAAAA,uBAAuBixB,mBAAoB,SAC5CK,GAACtxB,EAAAA,uBAAuBkxB,UAAW,YAGxBK,KAA8BC,GAAA,IACxCvxB,EAAAA,mBAAmBywB,MAAO,QAC3Bc,GAACvxB,EAAAA,mBAAmB0wB,OAAQ,aChDjBc,KAAiCC,GAAA,IAC3C3H,EAAAA,sBAAsByE,YAAa,oBACpCte,GAAC6Z,EAAAA,sBAAsB0E,WAAY,kBACnCve,GAAC6Z,EAAAA,sBAAsBgF,aAAc,sBACrC7e,GAAC6Z,EAAAA,sBAAsB4C,WAAY,MACnCzc,GAAC6Z,EAAAA,sBAAsB6D,WAAY,SACnC1d,GAAC6Z,EAAAA,sBAAsBiD,aAAc,mBACrC9c,GAAC6Z,EAAAA,sBAAsB8C,cAAe,uBACtC3c,GAAC6Z,EAAAA,sBAAsB+D,aAAc,iBACrC5d,GAAC6Z,EAAAA,sBAAsBkD,cAAe,eACtC/c,GAAC6Z,EAAAA,sBAAsB6C,aAAc,sBACrC1c,GAAC6Z,EAAAA,sBAAsBuE,eAAgB,gBACvCpe,GAAC6Z,EAAAA,sBAAsBmD,aAAc,kBACrChd,GAAC6Z,EAAAA,sBAAsBkE,mBAAoB,iBAC3C/d,GAAC6Z,EAAAA,sBAAsBiE,SAAU,QACjC9d,GAAC6Z,EAAAA,sBAAsBoD,eAAgB,mBACvCjd,GAAC6Z,EAAAA,sBAAsBoE,eAAgB,eACvCje,GAAC6Z,EAAAA,sBAAsBqE,yBAA0B,wBACjDle,GAAC6Z,EAAAA,sBAAsBsD,qBAAsB,uBAC7Cnd,GAAC6Z,EAAAA,sBAAsB+C,OAAQ,OAC/B5c,GAAC6Z,EAAAA,sBAAsBqD,OAAQ,SAC/Bld,GAAC6Z,EAAAA,sBAAsB2E,SAAU,4BCAjC,SAAAiD,EACUzd,EACAC,GADA7d,KAAA4d,WAAAA,EACA5d,KAAA6d,cAAAA,EAPF7d,KAAAs7B,UAA6C,GAC7Ct7B,KAAAu7B,cAAwC,UAShDF,EAAAn7B,UAAAs7B,OAAA,SAAOC,GAAP,IAAAzoB,EAAAhT,KACE,GAAIy7B,KAAWz7B,KAAKs7B,UAClB,OAAOt7B,KAAKs7B,UAAUG,GAGxBz7B,KAAKs7B,UAAUG,GAAW,IAAIC,EAAAA,QAC9B,IAAMC,EAAe37B,KAAK47B,UAAUC,WAAU,SAAAC,GAC5C9oB,EAAKuoB,cAAcE,GAAWzoB,EAAK+oB,sBAAsBN,GACzDO,YAAW,WACTL,EAAaM,oBAIjB,OAAOj8B,KAAKs7B,UAAUG,IAGxBJ,EAAAn7B,UAAA+7B,YAAA,SAAYR,GACNz7B,KAAKu7B,cAAcE,KACrBz7B,KAAKu7B,cAAcE,GAASQ,qBACrBj8B,KAAKu7B,cAAcE,IAExBz7B,KAAKs7B,UAAUG,KACjBz7B,KAAKs7B,UAAUG,GAASziB,kBACjBhZ,KAAKs7B,UAAUG,KAI1BJ,EAAAn7B,UAAA07B,QAAA,WAAA,IAAA5oB,EAAAhT,KAoBE,OAnBKA,KAAKk8B,0BACRl8B,KAAKk8B,wBAA0B,IAAIC,EAAAA,cAAc,GAEjDn8B,KAAK4d,WAAWxF,IAAyBpY,KAAK6d,cAAczF,IAAI,UAAS,uBACtEyjB,WAAU,SAAAv1B,GACT0M,EAAKopB,iBAAiB,CACpBC,IAAKrpB,EAAK6K,cAAczF,IAAI,iBAC5B5N,KAAMlE,EAAOkE,KACb8xB,UAAWh2B,EAAOg2B,UAClB5H,MAAOpuB,EAAOouB,MACd6H,WAAY,CAAC,eAEfvpB,EAAKwpB,WAAWZ,UAChB5oB,EAAKwpB,WAAWC,GAAG,WAAW,WAC5BzpB,EAAKkpB,wBAAwB35B,MAAK,UAKnCvC,KAAKk8B,yBAGdb,EAAAn7B,UAAAw8B,QAAA,SAAQjB,EAAiBjd,GAAzB,IAAAxL,EAAAhT,KACE,OAAO,IAAI28B,EAAAA,YAAgB,SAAAC,GACzB5pB,EAAK4oB,UAAUC,WAAU,WAClB7oB,EAAKuoB,cAAcE,KACtBzoB,EAAKuoB,cAAcE,GAAWzoB,EAAK+oB,sBAAsBN,IAE3DzoB,EAAKuoB,cAAcE,GAASiB,QAAQle,GAAS5b,MAAK,SAAAi6B,GAChDD,EAASr6B,KAAKs6B,GACdD,EAAS5jB,cACR,SAAA1U,GACD,MAAMA,YAMd+2B,EAAAn7B,UAAA48B,WAAA,WACE98B,KAAKw8B,WAAWM,aAChB98B,KAAKk8B,6BAA0Bj1B,EAC/BjH,KAAKs7B,UAAY,GACjBt7B,KAAKu7B,cAAgB,IAGfF,EAAAn7B,UAAAk8B,iBAAR,SAAyB91B,GAOvBtG,KAAKw8B,WAAa,IAAIO,EAAWz2B,IAG3B+0B,EAAAn7B,UAAA67B,sBAAR,SAA8BN,GAC5B,OAAOz7B,KAAKw8B,WAAWX,UAAUJ,EAASz7B,KAAKg9B,eAAeC,KAAKj9B,QAG7Dq7B,EAAAn7B,UAAA88B,eAAR,SAAuBne,GACrB,IAAM4c,EAAU5c,EAAS4c,QACpBz7B,KAAKs7B,UAAUG,IAIpBz7B,KAAKs7B,UAAUG,GAASl5B,KAAKsc,EAASna,gDAjGlB2Z,EAAAA,kBACG5E,0IARd4hB,EAAiBv6B,EAAA,CAD7ByY,EAAAA,WAAW,CAACC,WAAY,UACZ6hB,oBCZX,SAAA6B,EAAYC,EAA8B93B,GAAArF,KAAAqF,WAAAA,EACxCrF,KAAKm9B,aAAeA,EAgBxB,OAbED,EAAAh9B,UAAA4E,QAAA,SAAQzC,GACN,OAAIrC,KAAKqF,WACArF,KAAKqF,WAAWP,QAAQzC,GAE1BA,GAGT66B,EAAAh9B,UAAA8E,OAAA,SAAO3C,GACL,OAAIrC,KAAKqF,WACArF,KAAKqF,WAAWL,OAAO3C,GAEzBA,GAEX66B,mBAGE,SAAAE,EAAsBl1B,EAAwBm1B,GAAxBr9B,KAAAkI,KAAAA,EAAwBlI,KAAAq9B,OAAAA,EA6ChD,OA1CED,EAAAl9B,UAAAo9B,SAAA,SAASr8B,EAAas8B,GACpBv9B,KAAKq9B,OAAOp8B,GAAOs8B,GAGrBH,EAAAl9B,UAAAqY,KAAA,SAAKtX,EAAaoB,GACXrC,KAAKq9B,OAAOp8B,IAGjBjB,KAAKw9B,QAAWx9B,KAAKkI,KAAI,IAAIjH,EAAOjB,KAAKq9B,OAAOp8B,GAAK+D,OAAO3C,KAG9D+6B,EAAAl9B,UAAAkY,IAAA,SAAInX,GACF,GAAKjB,KAAKq9B,OAAOp8B,GAAjB,CAGA,IAAIoB,EAAQrC,KAAKy9B,QAAWz9B,KAAKkI,KAAI,IAAIjH,GAIzC,OAHc,OAAVoB,IACFA,EAAQrC,KAAKq9B,OAAOp8B,GAAKk8B,cAEvB96B,MAAAA,EACKA,EAEFrC,KAAKq9B,OAAOp8B,GAAK6D,QAAQzC,KAGlC+6B,EAAAl9B,UAAAgZ,MAAA,uBACE,IAAoB,IAAAvU,EAAAV,EAAAzE,OAAOoF,KAAK5E,KAAKq9B,SAAOx4B,EAAAF,EAAApC,QAAAsC,EAAAlC,KAAAkC,EAAAF,EAAApC,OAAE,CAAzC,IAAMg7B,EAAK14B,EAAAxC,MACdrC,KAAK09B,WAAWH,uGAIVH,EAAAl9B,UAAAu9B,QAAV,SAAkBx8B,GAChB,MAAM,IAAI08B,MAAM,4CAA4C39B,KAAI,qBAGxDo9B,EAAAl9B,UAAAs9B,QAAV,SAAkBv8B,EAAaoB,GAC7B,MAAM,IAAIs7B,MAAM,4CAA4C39B,KAAI,qBAGxDo9B,EAAAl9B,UAAAw9B,WAAV,SAAqBz8B,GACnB,MAAM,IAAI08B,MAAM,+CAA+C39B,KAAI,qBAEvEo9B,oBCpEA,SAAAQ,mDAgBA,OAhBwC99B,EAAA89B,EAAAp4B,GAC5Bo4B,EAAA19B,UAAAs9B,QAAV,SAAkBv8B,EAAaoB,GAC7Bw7B,aAAaL,QAAQv8B,EAAK68B,KAAKC,UAAU17B,KAGjCu7B,EAAA19B,UAAAu9B,QAAV,SAAkBx8B,GAChB,IACE,OAAO68B,KAAKE,MAAMH,aAAaJ,QAAQx8B,IACvC,MAAOuB,GACP,SAIMo7B,EAAA19B,UAAAw9B,WAAV,SAAqBz8B,GACnB48B,aAAaH,WAAWz8B,IAE5B28B,GAhBwCR,aCFxBa,GAAU/1B,GACxB,IACMg2B,GADQ,KAAKC,SAASC,QACR12B,MAAM,KAAKQ,EAAI,KACnC,OAAqB,IAAjBg2B,EAAMv9B,OACDu9B,EAAMn6B,MAAM2D,MAAM,KAAK22B,QAEzB,cCEOC,GAAaC,GAC3B,MAAO,CACL,CAACC,IAAK,mBAAoBC,MAAO,UAAWC,KAAM,mBAAmBH,EAAM,wBAC3E,CAACC,IAAK,OAAQpwB,KAAM,YAAaqwB,MAAO,QAASC,KAAM,mBAAmBH,EAAM,qBAChF,CAACC,IAAK,OAAQpwB,KAAM,YAAaqwB,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,8BCLpF,SAAAC,EACUC,EACqBC,GADrB9+B,KAAA6+B,SAAAA,EACqB7+B,KAAA8+B,WAAAA,EAJvB9+B,KAAA++B,UAAYC,EAAAA,kBAAkBh/B,KAAK8+B,YAqB7C,OAbEF,EAAA1+B,UAAA++B,UAAA,SAAUC,EAAuB38B,GAC/B,IAAKvC,KAAK++B,UACR,OAAOx8B,EAAK48B,OAAOD,GAErBA,EAAMA,EAAIE,MAAM,CAACC,iBAAiB,IAClC,IAAMC,EAAOrB,GAAU,aAMvB,OALIqB,IACFJ,EAAMA,EAAIE,MAAM,CACdG,WAAY,CAACC,cAAeF,MAGzB/8B,EAAK48B,OAAOD,6CAhBDO,EAAAA,yCACjB3lB,EAAAA,OAAMzS,KAAA,CAACq4B,EAAAA,kBALCd,EAAqB99B,EAAA,CADjCyY,EAAAA,aAMI9X,EAAA,EAAAqY,EAAAA,OAAO4lB,EAAAA,eALCd,+Q7DFc,sqD8DgBEe,GAC3B,IAWAvxB,EAXMwxB,GAWNxxB,EAXmBuxB,GAaeE,MAASzxB,EAA0B0xB,KAZ/DC,EAAYH,EAAYI,UAC9BL,EAAQM,sBAAwB,IAAIvE,EAAAA,QACnCkE,EAAYI,UAAY,WACvBL,EAAQM,sBAAsB19B,OAC9Bo9B,EAAQM,sBAAsBjnB,WAC9B+mB,EAASl/B,MAAMb,0ZFTYm+B,EAAoB+B,eAC7C3B,EAAS,GACO,cAAhB2B,IACF3B,EAAS,QAEX,IAAM75B,EAAO45B,GAAaC,OAC1B,IAAmB,IAAA4B,EAAAl8B,EAAAS,GAAI07B,EAAAD,EAAA59B,QAAA69B,EAAAz9B,KAAAy9B,EAAAD,EAAA59B,OAAE,CAApB,IAAMqE,EAAIw5B,EAAA/9B,MACP+K,EAAO+wB,EAASkC,cAAc,YACpC,IAAkB,IAAAx7B,GAAAy7B,OAAA,EAAAr8B,EAAAzE,OAAOoF,KAAKgC,KAAK2zB,EAAA11B,EAAAtC,QAAAg4B,EAAA53B,KAAA43B,EAAA11B,EAAAtC,OAAE,CAAhC,IAAMtB,EAAGs5B,EAAAl4B,MACZ+K,EAAKmzB,aAAat/B,EAAK2F,EAAK3F,sGAE9Bk9B,EAASqC,KAAKC,YAAYrzB,qIEhBKszB,GACjC,GAAKA,EAAUzgC,YAAoBggC,sBACjC,OAAQS,EAAUzgC,YAAoBggC,sBAExC,MAAM,IAAItC,MAAM,6GCsCgBgD,GAChC,OAAO,SAACC,GACN,IAAKA,EAAQv+B,MACX,OAAO,oD1BpDkBw+B,EAAclgC,GAC3C,IAAMmgC,EAAS,GACTC,EAAc91B,KAAK+1B,KAAKH,EAAMlgC,OAASA,GAC7C,GAAoB,IAAhBogC,EACF,MAAO,CAACF,GAEV,IAAK,IAAIrgC,EAAI,EAAGA,EAAIugC,EAAavgC,IAC/BsgC,EAAO98B,KAAK68B,EAAM16B,MAAM3F,EAAIG,GAASH,EAAI,GAAKG,IAEhD,OAAOmgC,4C2BhBsB57B,GAC7B,OAAO1F,OAAOoF,KAAKM,GAChByB,KAAI,SAAA/C,GAAK,OAAAsB,EAAUtB,MACnB+G,QAAO,SAAA/G,GAAK,OAAc,IAAduB,OAAOvB,MACnB+C,KAAI,SAAA/C,GAAK,OAACA,+CCFaU,EAAO+S,EAAe4pB,QAAf,IAAA5pB,IAAAA,GAAA,QAAe,IAAA4pB,IAAAA,GAAA,KAC1C38B,GAA2B,IAAjBA,EAAMgM,QAAiC,MAAjBhM,EAAMgM,QAAqB+G,GAA0B,IAAjB/S,EAAMgM,SAC9E4wB,EAAAA,iBAAiB58B,GAGd28B,GACHE,QAAQ78B,MAAMA,+BCPhB,IAAM88B,EAAW,4BAA4B15B,MAAM,KAKnD,GAAK,iBAAkB25B,QAAYA,OAAeC,eAAiBnD,oBAAqBkD,OAAeC,cACrG,OAAO,EAKT,IAVYC,EAUN9V,EAAQ,CAAC,IAAK2V,EAASx2B,KAAK,oBAAqB,SAAU,KAAKA,KAAK,IAC3E,OAXY22B,EAWF9V,EAVD4V,OAAOG,WAAWD,GAAGE,uDCDhBC,EAAqBC,GAClCniC,OAAeqsB,OAAO8V,EAAUC,UAAUlqB,SAAQ,SAAAkpB,GACjDA,EAAQiB,gBACRjB,EAAQkB,cAEJlB,aAAmBmB,EAAAA,UACrBL,EAAqBd,GACZA,EAAQgB,UACjBhB,EAAQgB,SAASlqB,SAAQ,SAAAvW,GACnBA,aAAa4gC,EAAAA,UACfL,EAAqBvgC,IAErBA,EAAE0gC,gBACF1gC,EAAE2gC,gDJP2B,SAACE,GACtC,OAAO,SAAC7gC,GACN,OAAOA,EAAEkB,MAAM1B,OAASqhC,EACpB,CAACC,eAAgB,CAACC,OAAO,IACzB,mCnEcyBx9B,EAAakC,EAAW0Q,GACvD,OAAK3X,MAAM2F,QAAQZ,GAGZA,EAAKiC,KAAI,SAAA/C,GACd,GAAI0T,GAAiBC,GAAWD,IAC9B,IAAKA,EAAc1T,GACjB,OAAOA,OAEJ,GAAIA,EAAEqE,KAAOrB,EAAKqB,GACvB,OAAOrE,EAET,OAAOpE,OAAOa,OAAOuD,EAAGgD,MAVjBlC,iEmEJiB,SAACk8B,GAE3B,OAAKA,EAAQv+B,OADF,wBACc8/B,KAAKvB,EAAQv+B,OAC7B,KAEF,CAAC+/B,YAAa,CAACF,OAAO,qBAGF,SAACG,EAAyCC,EAAkBC,QAAlB,IAAAD,IAAAA,GAAA,QAAkB,IAAAC,IAAAA,EAAA,IACvF,IAAMC,EAAUC,EAAAA,GAAG,MAAMnqB,KACvBoqB,EAAAA,MAAM,MAER,OAAO,SAAC9B,GACN,OAAI2B,EAAO/lB,QAAQokB,EAAQv+B,QAAU,EAC5BogC,EAAAA,GAAG,MAELD,EAAQlqB,KACbqqB,EAAAA,WAAU,WAAM,OAAAN,EAAYO,WAAWhC,EAAQv+B,MAAOigC,GAAWhqB,KAC/D3R,EAAAA,KAAI,SAAAu7B,GAAS,OAAAA,EAAQ,KAAO,CAACW,YAAY,6BA1BpB,SAACjC,GAC5B,OAAKA,EAAQv+B,MAIW,MADV,GAAGu+B,EAAQv+B,OAAQygC,QAAQ,OAAQ,IACpCniC,OAAgB,KAAO,CAACoiC,aAAc,CAACb,OAAO,IAHlD,oBA8BgB,SAACtB,GAE1B,OAAKA,EAAQv+B,OADF,gFACc8/B,KAAKvB,EAAQv+B,OAC7B,KAEF,CAAC2gC,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 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 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 } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n path: 'path',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n },\n relation: {\n engine: enumField(FileEngine)\n }\n})\nexport class File {\n id: number;\n name: string;\n path: string;\n mimeType: string;\n size: string;\n engine: FileEngine;\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}\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 isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\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, 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';\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 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 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 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, 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';\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 extended\n}\n\nexport enum GameTimeTypes {\n clean = 1,\n dirty,\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 shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n type: enumField(TournamentTypes),\n gender: enumField(TournamentGender),\n basketballStatisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\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: string;\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 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@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 },\n relation: {\n logo: File,\n cover: 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 }\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\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 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, 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 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 } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\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 },\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\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 { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes } from './tournament';\n\nexport enum OvertimeTypes {\n to_score_total = 1,\n to_score_diff,\n time\n}\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, enumField } from './util';\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 },\n relation: {\n gameType: enumField(VolleyballGameTypes)\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\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, 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';\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 team_id: 'teamId',\n competitor_team: 'competitorTeam',\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 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: 'media',\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 tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\n }\n})\nexport class Game extends BaseModel {\n id: number;\n status: GameStatuses;\n team: Team;\n teamId: number;\n competitorTeam: Team;\n competitorTeamId: 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 scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n media: MediaItem[];\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 },\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\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 { 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}\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 @ToBackHook\n static toBack(teamPlayer: TeamUser): any {}\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 games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\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 },\n relation: {\n tournament: Tournament,\n team: Team,\n group: TournamentGroup,\n games: 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 gamesCount: number;\n wonGamesCount: 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\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 } 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 { TournamentTeam } from './tournament-team';\nimport { TeamUser } from './team-user';\nimport { File } from './file';\nimport { TournamentDisqualification } from './tournament-disqualification';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n team_user: 'teamUser',\n disqualified: 'disqualified',\n first_name: 'firstName',\n last_name: 'lastName',\n middle_name: 'middleName',\n photo: 'photo',\n disqualification: 'disqualification',\n has_changes: 'hasChanges',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n teamUser: TeamUser,\n photo: File,\n disqualification: TournamentDisqualification,\n }\n})\nexport class TournamentTeamUser extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n teamUser: TeamUser;\n disqualified: boolean;\n firstName: string;\n lastName: string;\n middleName: string;\n photo: File; disqualification: TournamentDisqualification;\n hasChanges: boolean;\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 @ToBackHook\n static toBack(data: 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 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 updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\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 { 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}\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 { 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 { 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';\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 newbie: 'newbie',\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 {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\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 newbie: boolean;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\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';\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 {\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 { 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 { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { GameUser } from '../models/game-user';\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';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\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 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 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","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 },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: 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","import { Injectable } from '@angular/core';\nimport { HttpClient } 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): Promise<File> {\n const formData = new FormData();\n formData.append('file', fileData, filename);\n\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData)\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 { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\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 is_main: 'isMain',\n tournaments: 'tournaments',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n tournaments: listField(Tournament)\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 isMain: boolean;\n tournaments: Tournament[];\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, 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 } from '../models/tournament';\nimport { ConfigService } from '../services/config.service';\nimport { TournamentEventsListFilter } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\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): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/`).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 }\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","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews } 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): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/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 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 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';\n\nexport interface GameMediaFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\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 if (filters) {\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 }\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 if (filters) {\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 }\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 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","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, 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';\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 },\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 {\n team: Team;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n tournamentTeam: TournamentTeam;\n user: User;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: 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 newbie: 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, 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, 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 { 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","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, 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 } from './util';\nimport { generateArray } from '../utils/array';\n\n@ModelInstance({\n mappingFields: {\n rounds: 'rounds',\n final_rounds: 'finalRounds',\n third_place_rounds: 'thirdPlaceRounds',\n teams_count: 'teamsCount'\n }\n})\nexport class PlayoffSettings extends BaseModel {\n rounds: number;\n finalRounds: number;\n thirdPlaceRounds: number;\n teamsCount: 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 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","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 { 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';\n\nexport interface TournamentGamesFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\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_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 per_game?: boolean;\n group_by: StatisticGroupByTypes;\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getByAlias(alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${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 }\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 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 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 getBasketballStatistic(filters?: StatisticFilters): Promise<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\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params}).pipe(\n map(result => BasketballStatistic.toFront(result))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<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\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params}).pipe(\n map(result => VolleyballStatistic.toFront(result))\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 } 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}\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';\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 {\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 }\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\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 } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { GameUser } from '../models/game-user';\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';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\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 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 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","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};\n","import { OvertimeTypes } from '../models/basketball-game-config';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'До разницы в N мячей',\n [OvertimeTypes.to_score_total]: 'До N очков',\n [OvertimeTypes.time]: 'По времени'\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.moderator]: 'Модератор',\n [TeamUserRole.member]: 'Пользователь',\n [TeamUserRole.admin]: 'Владелец',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-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","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};\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 { 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\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 });\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';\n\n@Injectable()\nexport class HttpCookieInterceptor implements HttpInterceptor {\n private isBrowser = isPlatformBrowser(this.platformId);\n\n constructor(\n private injector: Injector,\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 req = req.clone({withCredentials: true});\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/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/user.ts","ng://@mtgame/core/models/tournament.ts","ng://@mtgame/core/models/team.ts","ng://@mtgame/core/models/organization.ts","ng://@mtgame/core/models/league.ts","ng://@mtgame/core/models/basketball-game-config.ts","ng://@mtgame/core/models/volleyball-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/team-user.ts","ng://@mtgame/core/models/tournament-group.ts","ng://@mtgame/core/models/tournament-team.ts","ng://@mtgame/core/models/tournament-disqualification.ts","ng://@mtgame/core/models/tournament-team-user.ts","ng://@mtgame/core/models/game-user.ts","ng://@mtgame/core/utils/data.ts","ng://@mtgame/core/models/basketball-game-log.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/basketball-statistic.ts","ng://@mtgame/core/models/basketball-game-team-statistic.ts","ng://@mtgame/core/models/basketball-game-statistic.ts","ng://@mtgame/core/models/tournament-event.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/league-news.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/volleyball-statistic.ts","ng://@mtgame/core/models/tournament-stage.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-news.ts","ng://@mtgame/core/models/game-timeline-stages.ts","ng://@mtgame/core/utils/array.ts","ng://@mtgame/core/models/user-permission.ts","ng://@mtgame/core/models/playoff.ts","ng://@mtgame/core/models/tournament-stage-team.ts","ng://@mtgame/core/api/tournament-api.ts","ng://@mtgame/core/models/tournament-join-team.ts","ng://@mtgame/core/api/tournament-join-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/localization/basketball-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/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","BaseModel","data","_b","keys","_c","toFront","dto","toBack","enumField","enumClass","isNaN","listField","modelClass","isArray","DateField","_super","date","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","slice","DateTimeField","ModelInstance","config","mappingFields","relation","path","modelType","map","item","instance","backField","frontField","extractValue","undefined","FileEngine","ToFrontHook","descriptor","args","_i","parseMethod","ToBackHook","keyParts","split","keyParts_1","keyParts_1_1","k","SportTypes","File","file","id","name","mime_type","size","engine","GameBasketballPosition","WorkHand","Sport","isBasketball","basketball","parentId","isClassicBasketball","classic_basketball","isVolleyball","volleyball","isStreetball","streetball","sport","parent_id","sub_sports","UserProfile","user_id","height","weight","City","GameVolleyballPosition","VolleyballWorkHand","BasketballProfile","position","work_hand","workHand","UserGender","VolleyballProfile","TournamentTypes","TournamentStatuses","TournamentGender","BasketballStatisticTypes","GameTimeTypes","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","wizards","city","gender","is_active","basketballProfile","volleyballProfile","Team","getEmptyLogoClass","classList","team","logo","owner","users_count","won_games_count","games_count","score_sum","closest_game_datetime","closestGameDatetime","Organization","owner_id","League","socialLinks","find","link","contact_email","contact_phone","alias","description","social_links","links","organization","tournaments_count","cover","about","OvertimeTypes","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","shot_clock_enabled","game_time_type","basketballStatisticType","gameTimeType","TournamentTeamWinner","team_id","tournament_id","points","Tournament","preview_image","location","price","regulation_files","settings","league","teams_count","status","team_winner","regulationFile","teamWinner","VolleyballGameTypes","BasketballGameConfig","overtime_timeout_count","statistic_type","overtimeType","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","originalPhoto","listPhoto","detailPhoto","videoPreview","TeamUserRole","Game","_this","scoreByPeriod","period","teamScore","competitorTeamScore","closed","competitorTeam","teamId","competitorTeamId","competitor_team","competitor_team_id","competitor_team_name","datetime","team_score","competitor_team_score","result_type","playoff_number","tournament_tour","basketball_game_config","volleyball_game_config","score_by_period","playoff_stage","tournament_stage_id","tournament_playoff_id","tournament_court","media_count","media","resultType","basketballGameConfig","volleyballGameConfig","tournamentCourt","TeamUser","teamPlayer","role","number","TournamentGroup","TournamentTeam","gamesCount","wonGamesCount","group","last_games_count","last_games_won","missed_sum","score_points_sum","missed_points_sum","games","notifications_count","TournamentDisqualification","tournament_team_user_id","date_from","date_to","matches_count","dateFrom","dateTo","TournamentTeamUser","middleName","tournament_team","team_user","disqualified","disqualification","has_changes","tournamentTeam","teamUser","GameUser","tournament_team_user","updated_at","tournamentTeamUser","updatedAt","updateItemInArray","force","checkFunction","isFunction","updateItemsInArray","items","forEach","addItemInArray","atEnd","addItemsInArray","reverse","deleteItemFromArray","functionToCheck","toString","BasketballGameLogTypes","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","BasketballStatistic","personalFouls","technicalFouls","unsportsmanlikeFouls","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","newbie","BasketballGameTeamStatistic","BasketballGameStatistic","gameUserId","game_user_id","TournamentEventTypes","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","BasketballGameApi","httpClient","configService","getById","gameId","toPromise","getUsers","getTeamStatistic","getUserStatistic","getLogs","HttpClient","Feedback","theme","message","files","FeedbackApi","sendFeedback","post","response","FileApi","upload","fileData","filename","formData","FormData","append","createZipArchive","files_1","files_1_1","responseType","LeagueNews","title","preview_text","detail_text","picture","is_main","tournaments","PollStatuses","TournamentEvent","news","event","LeagueApi","getByAlias","getByDomain","domain","getTournaments","leagueId","getEvents","page","filters","params","HttpParams","search","observe","total","headers","LeagueNewsApi","getLeagueNewsList","getMainLeagueNews","getNewsById","newsId","getTournamentNewsList","tournamentId","MediaApi","getMedia","mediaId","getTournamentGameMedia","tournamentTour","tournamentStageId","playoffId","playoffStage","getLeagueGameMedia","getGameMediaById","getGameMedia","createZip","mediaIds","GameInviteStatus","PollVariant","uuid","PollAnswer","answer_uuid","poll_id","Poll","variantsWithAnswers","_variants","_answers","calculateAnswersPercentage","variants","answersByVariant","reduce","acc","answerUuid","variant","percent","round","sort","a","author","answers","multiple_answer","anonymous","created_at","createdAt","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","tournament_team_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","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","TournamentStageStatuses","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","query","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","getVolleyballStatistic","joinTeam","leaveTeam","getGames","createGame","getTeamEvents","createTeamEvent","getTournamentTeams","getTournamentInvites","getTournamentGames","acceptTournamentInvite","inviteId","declineTournamentInvite","registerLazyUser","userData","getLazyUser","updateLazyUser","deleteLazyUser","resendLazyUserEmail","TeamEventApi","getTeamEvent","teamEventId","updateTeamEvent","deleteTeamEvent","getTeamEventInvites","createTeamEventInvite","acceptTeamEventInvite","declineTeamEventInvite","TournamentNews","text","GameTimelineStageItem","stage_id","playoff_stages_count","GameTimelineStages","current_tour","current_playoff_stage","stages","TournamentStage","generateArray","UserPermissionTypes","PlayoffSettings","rounds","final_rounds","third_place_rounds","Playoff","log","teamsCount","getPlayoffStages","stagesCount","stage","pow","is_official","TournamentStageTeam","final_standing","received_points","TournamentApi","getNews","getTournamentStages","getPlayoff","getPlayoffGames","getGamesStages","getTeams","getStageTeams","getTeamById","tournamentTeamId","getUserById","userId","getUserGames","tournamentUserId","getBasketballStatistic","per_game","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","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","isScoreType","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","BasketballGameLogTypeLocalization","_a$1","remove_game","two_point_attempt","three_point_attempt","free_throw_attempt","one_point_attempt","assist","block","steal","turnover","OvertimeTypeLocalization","_a$2","to_score_diff","to_score_total","TeamUserRoleLocalization","_a$3","moderator","member","admin","GameBasketballPositionLocalization","_a$4","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","VolleyballGameLogTypeLocalization","_a$5","CentrifugoService","channels$","subscriptions","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","fields","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 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 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 } from './util';\n\nexport enum FileEngine {\n django = 1,\n s3\n}\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n name: 'name',\n path: 'path',\n mime_type: 'mimeType',\n size: 'size',\n engine: 'engine',\n },\n relation: {\n engine: enumField(FileEngine)\n }\n})\nexport class File {\n id: number;\n name: string;\n path: string;\n mimeType: string;\n size: string;\n engine: FileEngine;\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}\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 isVolleyball() {\n return this.id === SportTypes.volleyball || this.parentId === SportTypes.volleyball;\n }\n\n isStreetball() {\n return this.id === SportTypes.streetball;\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, 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';\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 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 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 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, 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';\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 extended\n}\n\nexport enum GameTimeTypes {\n clean = 1,\n dirty,\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 shot_clock_enabled: 'shotClockEnabled',\n game_time_type: 'gameTimeType',\n },\n relation: {\n type: enumField(TournamentTypes),\n gender: enumField(TournamentGender),\n basketballStatisticType: enumField(BasketballStatisticTypes),\n gameTimeType: enumField(GameTimeTypes),\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: string;\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 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@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 },\n relation: {\n logo: File,\n cover: 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 }\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\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 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, 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 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 } from './util';\nimport { Organization } from './organization';\nimport { File } from './file';\nimport { Sport } from './sport';\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 { ModelInstance, BaseModel, ToFrontHook, ToBackHook, enumField } from './util';\nimport { BasketballStatisticTypes, GameTimeTypes } from './tournament';\n\nexport enum OvertimeTypes {\n to_score_total = 1,\n to_score_diff,\n time\n}\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, enumField } from './util';\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 },\n relation: {\n gameType: enumField(VolleyballGameTypes)\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\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, 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';\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 team_id: 'teamId',\n competitor_team: 'competitorTeam',\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 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: 'media',\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 tournamentCourt: LeagueCourt,\n media: listField(MediaItem),\n }\n})\nexport class Game extends BaseModel {\n id: number;\n status: GameStatuses;\n team: Team;\n teamId: number;\n competitorTeam: Team;\n competitorTeamId: 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 scoreByPeriod: any;\n playoffStage: string;\n tournamentStageId: number;\n tournamentPlayoffId: number;\n tournamentCourt: LeagueCourt;\n mediaCount: number;\n media: MediaItem[];\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 },\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\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 { 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}\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 @ToBackHook\n static toBack(teamPlayer: TeamUser): any {}\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 games_count: 'gamesCount',\n won_games_count: 'wonGamesCount',\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 },\n relation: {\n tournament: Tournament,\n team: Team,\n group: TournamentGroup,\n games: 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 gamesCount: number;\n wonGamesCount: 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\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 } 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 { TournamentTeam } from './tournament-team';\nimport { TeamUser } from './team-user';\nimport { File } from './file';\nimport { TournamentDisqualification } from './tournament-disqualification';\n\n@ModelInstance({\n mappingFields: {\n id: 'id',\n tournament_team: 'tournamentTeam',\n team_user: 'teamUser',\n disqualified: 'disqualified',\n first_name: 'firstName',\n last_name: 'lastName',\n middle_name: 'middleName',\n photo: 'photo',\n disqualification: 'disqualification',\n has_changes: 'hasChanges',\n },\n relation: {\n tournamentTeam: TournamentTeam,\n teamUser: TeamUser,\n photo: File,\n disqualification: TournamentDisqualification,\n }\n})\nexport class TournamentTeamUser extends BaseModel {\n id: number;\n tournamentTeam: TournamentTeam;\n teamUser: TeamUser;\n disqualified: boolean;\n firstName: string;\n lastName: string;\n middleName: string;\n photo: File; disqualification: TournamentDisqualification;\n hasChanges: boolean;\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 @ToBackHook\n static toBack(data: 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 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 updatedAt: Date;\n\n @ToFrontHook\n static toFront(data: any): any {}\n\n @ToBackHook\n static toBack(data: any): any {}\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 { 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}\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 { 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 { 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';\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 newbie: 'newbie',\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 {\n tournamentTeamUser: TournamentTeamUser;\n team: Team;\n teamUser: TeamUser;\n user: User;\n tournamentTeam: TournamentTeam;\n month: Date;\n winLose: boolean;\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 newbie: boolean;\n\n get totalFouls() {\n return this.personalFouls + this.technicalFouls + this.unsportsmanlikeFouls;\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';\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 {\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 { 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 { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Game } from '../models/game';\nimport { GameUser } from '../models/game-user';\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';\n\n@Injectable({providedIn: 'root'})\nexport class BasketballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService\n ) {\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 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 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","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 },\n relation: {\n files: File\n }\n})\nexport class Feedback {\n id: number;\n theme: string;\n message: 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","import { Injectable } from '@angular/core';\nimport { HttpClient } 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): Promise<File> {\n const formData = new FormData();\n formData.append('file', fileData, filename);\n\n return this.httpClient\n .post(`${this.configService.get('apiUrl')}/api/v1/file/`, formData)\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 { ModelInstance, BaseModel, ToFrontHook, ToBackHook, listField, DateTimeField } from './util';\nimport { File } from './file';\nimport { Tournament } from './tournament';\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 is_main: 'isMain',\n tournaments: 'tournaments',\n },\n relation: {\n datetime: DateTimeField,\n picture: File,\n cover: File,\n tournaments: listField(Tournament)\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 isMain: boolean;\n tournaments: Tournament[];\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, 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 } from '../models/tournament';\nimport { ConfigService } from '../services/config.service';\nimport { TournamentEventsListFilter } from './tournament-api';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';\nimport { GameMediaFilters } from './media-api';\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): Promise<Tournament[]> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/`).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 }\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","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from '../services/config.service';\nimport { PaginatedResponse } from './paginated-response.interface';\nimport { LeagueNews } 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): Promise<PaginatedResponse<LeagueNews[]>> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/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 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 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';\n\nexport interface GameMediaFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\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 if (filters) {\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 }\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 if (filters) {\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 }\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 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","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, 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';\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 },\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 {\n team: Team;\n teamUser: TeamUser;\n tournamentTeamUser: TournamentTeamUser;\n tournamentTeam: TournamentTeam;\n user: User;\n month: Date;\n winLose: boolean;\n gamesCount: number;\n wonGamesCount: 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 newbie: 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, 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, 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 { 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","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, 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 } from './util';\nimport { generateArray } from '../utils/array';\n\n@ModelInstance({\n mappingFields: {\n rounds: 'rounds',\n final_rounds: 'finalRounds',\n third_place_rounds: 'thirdPlaceRounds',\n teams_count: 'teamsCount'\n }\n})\nexport class PlayoffSettings extends BaseModel {\n rounds: number;\n finalRounds: number;\n thirdPlaceRounds: number;\n teamsCount: 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 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","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 { 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';\n\nexport interface TournamentGamesFilters {\n tournamentStageId?: number;\n tournamentTour?: number;\n teamId?: number;\n playoffStage?: number;\n playoffId?: number;\n status?: GameStatuses;\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_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 per_game?: boolean;\n group_by: StatisticGroupByTypes;\n}\n\nexport interface TournamentEventsListFilter {\n event?: TournamentEventTypes;\n search?: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TournamentApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\n }\n\n async getByAlias(alias: string): Promise<Tournament> {\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${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 }\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 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 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 getBasketballStatistic(filters?: StatisticFilters): Promise<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\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, {params}).pipe(\n map(result => BasketballStatistic.toFront(result))\n ).toPromise();\n }\n\n async getVolleyballStatistic(filters?: StatisticFilters): Promise<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\n return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, {params}).pipe(\n map(result => VolleyballStatistic.toFront(result))\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 } 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}\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';\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 {\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 }\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\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 } from '@angular/common/http';\nimport { Game } from '../models/game';\nimport { map } from 'rxjs/operators';\nimport { GameUser } from '../models/game-user';\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';\n\n@Injectable({providedIn: 'root'})\nexport class VolleyballGameApi {\n constructor(\n private httpClient: HttpClient,\n private configService: ConfigService,\n ) {\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 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 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","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};\n","import { OvertimeTypes } from '../models/basketball-game-config';\n\nexport const OvertimeTypeLocalization = {\n [OvertimeTypes.to_score_diff]: 'До разницы в N мячей',\n [OvertimeTypes.to_score_total]: 'До N очков',\n [OvertimeTypes.time]: 'По времени'\n};\n","import { TeamUserRole } from '../models/team-user';\n\nexport const TeamUserRoleLocalization = {\n [TeamUserRole.moderator]: 'Модератор',\n [TeamUserRole.member]: 'Пользователь',\n [TeamUserRole.admin]: 'Владелец',\n};\n","import { GameBasketballPosition, WorkHand } from '../models/basketball-profile';\nimport { GameVolleyballPosition, VolleyballWorkHand } from '../models/volleyball-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","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};\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 { 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\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 });\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';\n\n@Injectable()\nexport class HttpCookieInterceptor implements HttpInterceptor {\n private isBrowser = isPlatformBrowser(this.platformId);\n\n constructor(\n private injector: Injector,\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 req = req.clone({withCredentials: true});\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"]}