@mtgame/core 0.2.26 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/basketball-game-api.d.ts +3 -0
- package/api/feedback-api.d.ts +5 -2
- package/api/file-api.d.ts +3 -0
- package/api/football-game-api.d.ts +3 -0
- package/api/game-base-api.d.ts +3 -0
- package/api/handball-game-api.d.ts +3 -0
- package/api/hockey-game-api.d.ts +3 -0
- package/api/league-api.d.ts +3 -0
- package/api/league-news-api.d.ts +3 -0
- package/api/league-player-api.d.ts +3 -0
- package/api/media-api.d.ts +5 -2
- package/api/notification-api.d.ts +3 -0
- package/api/notification-base-api.d.ts +3 -0
- package/api/org-notification-api.d.ts +3 -0
- package/api/public-team-api.d.ts +3 -2
- package/api/public-user-api.d.ts +3 -0
- package/api/reference-api.d.ts +3 -0
- package/api/rugby-game-api.d.ts +3 -0
- package/api/team-api.d.ts +4 -1
- package/api/team-event-api.d.ts +3 -0
- package/api/tournament-api.d.ts +3 -2
- package/api/tournament-join-api.d.ts +3 -0
- package/api/tournament-round-api.d.ts +3 -0
- package/api/tournament-season-api.d.ts +3 -0
- package/api/tournament-stage-api.d.ts +3 -0
- package/api/user-api.d.ts +5 -2
- package/api/volleyball-game-api.d.ts +3 -1
- package/api/waterpolo-game-api.d.ts +3 -0
- package/esm2020/api/basketball-game-api.mjs +44 -0
- package/esm2020/api/feedback-api.mjs +29 -0
- package/esm2020/api/file-api.mjs +41 -0
- package/esm2020/api/football-game-api.mjs +49 -0
- package/esm2020/api/game-base-api.mjs +40 -0
- package/esm2020/api/handball-game-api.mjs +49 -0
- package/esm2020/api/hockey-game-api.mjs +49 -0
- package/esm2020/api/league-api.mjs +119 -0
- package/esm2020/api/league-news-api.mjs +57 -0
- package/esm2020/api/league-player-api.mjs +31 -0
- package/esm2020/api/media-api.mjs +124 -0
- package/esm2020/api/notification-api.mjs +16 -0
- package/esm2020/api/notification-base-api.mjs +62 -0
- package/esm2020/api/org-notification-api.mjs +16 -0
- package/{esm2015/api/paginated-response.interface.js → esm2020/api/paginated-response.interface.mjs} +0 -0
- package/{esm2015/api/public-api.js → esm2020/api/public-api.mjs} +0 -0
- package/esm2020/api/public-team-api.mjs +28 -0
- package/esm2020/api/public-user-api.mjs +38 -0
- package/esm2020/api/reference-api.mjs +30 -0
- package/esm2020/api/rugby-game-api.mjs +47 -0
- package/esm2020/api/team-api.mjs +302 -0
- package/esm2020/api/team-event-api.mjs +61 -0
- package/esm2020/api/tournament-api.mjs +391 -0
- package/esm2020/api/tournament-join-api.mjs +55 -0
- package/esm2020/api/tournament-round-api.mjs +57 -0
- package/esm2020/api/tournament-season-api.mjs +92 -0
- package/esm2020/api/tournament-stage-api.mjs +48 -0
- package/esm2020/api/user-api.mjs +219 -0
- package/esm2020/api/volleyball-game-api.mjs +49 -0
- package/esm2020/api/waterpolo-game-api.mjs +49 -0
- package/esm2020/http-cookie.interceptor.mjs +38 -0
- package/{esm2015/localization/basketball-game-log-types.js → esm2020/localization/basketball-game-log-types.mjs} +0 -0
- package/{esm2015/localization/basketball-game-sub-log-types.js → esm2020/localization/basketball-game-sub-log-types.mjs} +2 -5
- package/{esm2015/localization/football-game-log-types.js → esm2020/localization/football-game-log-types.mjs} +0 -0
- package/{esm2015/localization/handball-game-log-types.js → esm2020/localization/handball-game-log-types.mjs} +0 -0
- package/{esm2015/localization/hockey-game-log-types.js → esm2020/localization/hockey-game-log-types.mjs} +2 -5
- package/esm2020/localization/hockey-penalty-types.mjs +50 -0
- package/{esm2015/localization/organization-statuses.js → esm2020/localization/organization-statuses.mjs} +0 -0
- package/{esm2015/localization/overtime-types.js → esm2020/localization/overtime-types.mjs} +0 -0
- package/{esm2015/localization/public-api.js → esm2020/localization/public-api.mjs} +0 -0
- package/{esm2015/localization/rugby-foul-game-stage.js → esm2020/localization/rugby-foul-game-stage.mjs} +0 -0
- package/{esm2015/localization/rugby-foul-sanction.js → esm2020/localization/rugby-foul-sanction.mjs} +0 -0
- package/{esm2015/localization/rugby-game-log-types.js → esm2020/localization/rugby-game-log-types.mjs} +0 -0
- package/{esm2015/localization/team-event-type.js → esm2020/localization/team-event-type.mjs} +0 -0
- package/{esm2015/localization/team-user-role.js → esm2020/localization/team-user-role.mjs} +0 -0
- package/{esm2015/localization/user-profile.js → esm2020/localization/user-profile.mjs} +0 -0
- package/{esm2015/localization/volleyball-game-log-types.js → esm2020/localization/volleyball-game-log-types.mjs} +0 -0
- package/{esm2015/localization/waterpolo-game-log-types.js → esm2020/localization/waterpolo-game-log-types.mjs} +3 -3
- package/esm2020/models/achievement.mjs +18 -0
- package/esm2020/models/base-statistic.mjs +4 -0
- package/esm2020/models/basketball-game-config.mjs +18 -0
- package/esm2020/models/basketball-game-log.mjs +158 -0
- package/esm2020/models/basketball-game-statistic.mjs +47 -0
- package/esm2020/models/basketball-game-team-statistic.mjs +15 -0
- package/esm2020/models/basketball-profile.mjs +27 -0
- package/esm2020/models/basketball-statistic.mjs +62 -0
- package/esm2020/models/city.mjs +9 -0
- package/esm2020/models/feedback.mjs +14 -0
- package/esm2020/models/file.mjs +31 -0
- package/esm2020/models/football-game-config.mjs +22 -0
- package/esm2020/models/football-game-log.mjs +83 -0
- package/esm2020/models/football-game-statistic.mjs +93 -0
- package/esm2020/models/football-game-team-statistic.mjs +15 -0
- package/esm2020/models/football-profile.mjs +27 -0
- package/esm2020/models/football-statistic.mjs +76 -0
- package/esm2020/models/game-bill.mjs +30 -0
- package/esm2020/models/game-config-base.mjs +4 -0
- package/esm2020/models/game-invite.mjs +22 -0
- package/esm2020/models/game-log-base.mjs +4 -0
- package/esm2020/models/game-statistic-base.mjs +7 -0
- package/{esm2015/models/game-team-statistic-base.js → esm2020/models/game-team-statistic-base.mjs} +0 -0
- package/esm2020/models/game-timeline-stages.mjs +19 -0
- package/esm2020/models/game-user-disqualification.mjs +14 -0
- package/esm2020/models/game-user-limitation.mjs +19 -0
- package/esm2020/models/game-user.mjs +20 -0
- package/esm2020/models/game.mjs +188 -0
- package/esm2020/models/handball-game-config.mjs +16 -0
- package/esm2020/models/handball-game-log.mjs +71 -0
- package/esm2020/models/handball-game-statistic.mjs +67 -0
- package/esm2020/models/handball-game-team-statistic.mjs +15 -0
- package/esm2020/models/handball-profile.mjs +23 -0
- package/esm2020/models/handball-statistic.mjs +37 -0
- package/esm2020/models/hockey-game-config.mjs +25 -0
- package/esm2020/models/hockey-game-log.mjs +102 -0
- package/esm2020/models/hockey-game-statistic.mjs +101 -0
- package/esm2020/models/hockey-game-team-statistic.mjs +15 -0
- package/esm2020/models/hockey-penalty-types.mjs +6 -0
- package/esm2020/models/hockey-profile.mjs +25 -0
- package/esm2020/models/hockey-statistic.mjs +49 -0
- package/esm2020/models/league-banner.mjs +21 -0
- package/esm2020/models/league-court.mjs +9 -0
- package/esm2020/models/league-document.mjs +14 -0
- package/esm2020/models/league-news.mjs +25 -0
- package/esm2020/models/league-partner.mjs +14 -0
- package/esm2020/models/league-player.mjs +81 -0
- package/esm2020/models/league-playlist.mjs +14 -0
- package/esm2020/models/league-user.mjs +38 -0
- package/esm2020/models/league.mjs +38 -0
- package/esm2020/models/media-item.mjs +20 -0
- package/esm2020/models/notification-settings.mjs +20 -0
- package/esm2020/models/notification.mjs +105 -0
- package/esm2020/models/organization-bill.mjs +31 -0
- package/esm2020/models/organization-statistic.mjs +9 -0
- package/esm2020/models/organization-tariff.mjs +16 -0
- package/esm2020/models/organization.mjs +21 -0
- package/esm2020/models/playoff.mjs +56 -0
- package/esm2020/models/poll.mjs +83 -0
- package/esm2020/models/public-api.mjs +110 -0
- package/esm2020/models/rugby-foul-type.mjs +39 -0
- package/esm2020/models/rugby-game-config.mjs +23 -0
- package/esm2020/models/rugby-game-log.mjs +120 -0
- package/esm2020/models/rugby-game-statistic.mjs +29 -0
- package/esm2020/models/rugby-game-team-statistic.mjs +15 -0
- package/esm2020/models/rugby-profile.mjs +22 -0
- package/esm2020/models/rugby-statistic.mjs +37 -0
- package/esm2020/models/season-tournament.mjs +9 -0
- package/esm2020/models/sport.mjs +96 -0
- package/esm2020/models/team-access.mjs +14 -0
- package/esm2020/models/team-achievement.mjs +18 -0
- package/esm2020/models/team-event-invite.mjs +18 -0
- package/{esm2015/models/team-event-type.js → esm2020/models/team-event-type.mjs} +0 -0
- package/esm2020/models/team-event.mjs +27 -0
- package/esm2020/models/team-invite-external.mjs +9 -0
- package/esm2020/models/team-invite.mjs +18 -0
- package/esm2020/models/team-permission.mjs +23 -0
- package/esm2020/models/team-user.mjs +30 -0
- package/esm2020/models/team.mjs +46 -0
- package/esm2020/models/teams-and-users.mjs +20 -0
- package/esm2020/models/tournament-disqualification.mjs +14 -0
- package/esm2020/models/tournament-division.mjs +14 -0
- package/esm2020/models/tournament-event.mjs +28 -0
- package/esm2020/models/tournament-group.mjs +9 -0
- package/esm2020/models/tournament-invite.mjs +21 -0
- package/esm2020/models/tournament-join-team.mjs +27 -0
- package/esm2020/models/tournament-join1x1-data.mjs +15 -0
- package/esm2020/models/tournament-news.mjs +17 -0
- package/esm2020/models/tournament-round-team.mjs +40 -0
- package/esm2020/models/tournament-round.mjs +22 -0
- package/esm2020/models/tournament-season.mjs +25 -0
- package/esm2020/models/tournament-stage-team.mjs +22 -0
- package/esm2020/models/tournament-stage.mjs +20 -0
- package/esm2020/models/tournament-team-user-invite.mjs +14 -0
- package/esm2020/models/tournament-team-user.mjs +20 -0
- package/esm2020/models/tournament-team.mjs +35 -0
- package/esm2020/models/tournament.mjs +153 -0
- package/esm2020/models/user-access.mjs +9 -0
- package/esm2020/models/user-permission.mjs +23 -0
- package/esm2020/models/user-profile.mjs +9 -0
- package/esm2020/models/user.mjs +55 -0
- package/esm2020/models/util.mjs +143 -0
- package/esm2020/models/volleyball-game-config.mjs +27 -0
- package/esm2020/models/volleyball-game-log.mjs +124 -0
- package/esm2020/models/volleyball-game-statistic.mjs +34 -0
- package/esm2020/models/volleyball-game-team-statistic.mjs +15 -0
- package/esm2020/models/volleyball-profile.mjs +27 -0
- package/esm2020/models/volleyball-statistic.mjs +44 -0
- package/esm2020/models/waterpolo-game-config.mjs +25 -0
- package/esm2020/models/waterpolo-game-log.mjs +142 -0
- package/esm2020/models/waterpolo-game-statistic.mjs +472 -0
- package/esm2020/models/waterpolo-game-team-statistic.mjs +15 -0
- package/esm2020/models/waterpolo-profile.mjs +26 -0
- package/esm2020/models/waterpolo-statistic.mjs +57 -0
- package/{esm2015/mtgame-core.js → esm2020/mtgame-core.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -1
- package/esm2020/services/base.controller.mjs +19 -0
- package/esm2020/services/base.service.mjs +18 -0
- package/esm2020/services/centrifugo.service.mjs +105 -0
- package/esm2020/services/config.service.mjs +44 -0
- package/{esm2015/services/public-api.js → esm2020/services/public-api.mjs} +2 -1
- package/esm2020/storage/local-storage-engine.mjs +18 -0
- package/esm2020/storage/new.mjs +46 -0
- package/esm2020/storage/old-local-storage-engine.mjs +18 -0
- package/esm2020/storage/old-storage-engine.mjs +49 -0
- package/esm2020/storage/public-api.mjs +7 -0
- package/esm2020/storage/storage-engine.mjs +47 -0
- package/{esm2015/storage/store.js → esm2020/storage/store.mjs} +1 -1
- package/{esm2015/utils/array.js → esm2020/utils/array.mjs} +0 -0
- package/esm2020/utils/component-destroyed.mjs +27 -0
- package/{esm2015/utils/cookie.js → esm2020/utils/cookie.mjs} +0 -0
- package/esm2020/utils/data.mjs +164 -0
- package/{esm2015/utils/date.js → esm2020/utils/date.mjs} +0 -0
- package/{esm2015/utils/device.js → esm2020/utils/device.mjs} +0 -0
- package/{esm2015/utils/enum.js → esm2020/utils/enum.mjs} +0 -0
- package/{esm2015/utils/errors.js → esm2020/utils/errors.mjs} +2 -4
- package/{esm2015/utils/favicon.js → esm2020/utils/favicon.mjs} +0 -0
- package/{esm2015/utils/form.js → esm2020/utils/form.mjs} +0 -0
- package/{esm2015/utils/public-api.js → esm2020/utils/public-api.mjs} +0 -0
- package/{esm2015/utils/validators.js → esm2020/utils/validators.mjs} +0 -0
- package/esm2020/websocket/game.websocket.mjs +61 -0
- package/esm2020/websocket/public-api.mjs +2 -0
- package/fesm2015/{mtgame-core.js → mtgame-core.mjs} +1667 -4844
- package/fesm2015/mtgame-core.mjs.map +1 -0
- package/fesm2020/mtgame-core.mjs +7276 -0
- package/fesm2020/mtgame-core.mjs.map +1 -0
- package/http-cookie.interceptor.d.ts +3 -0
- package/localization/basketball-game-sub-log-types.d.ts +0 -3
- package/localization/football-game-log-types.d.ts +29 -29
- package/localization/hockey-game-log-types.d.ts +0 -3
- package/localization/hockey-penalty-types.d.ts +2 -5
- package/models/achievement.d.ts +0 -2
- package/models/base-statistic.d.ts +2 -1
- package/models/basketball-game-config.d.ts +2 -4
- package/models/basketball-game-log.d.ts +2 -9
- package/models/basketball-game-statistic.d.ts +1 -4
- package/models/basketball-game-team-statistic.d.ts +0 -2
- package/models/basketball-profile.d.ts +0 -2
- package/models/basketball-statistic.d.ts +1 -4
- package/models/city.d.ts +0 -2
- package/models/feedback.d.ts +2 -3
- package/models/file.d.ts +2 -3
- package/models/football-game-config.d.ts +2 -4
- package/models/football-game-log.d.ts +30 -33
- package/models/football-game-statistic.d.ts +1 -4
- package/models/football-game-team-statistic.d.ts +0 -2
- package/models/football-profile.d.ts +0 -2
- package/models/football-statistic.d.ts +1 -4
- package/models/game-bill.d.ts +0 -2
- package/models/game-config-base.d.ts +3 -0
- package/models/game-invite.d.ts +0 -2
- package/models/game-log-base.d.ts +3 -2
- package/models/game-statistic-base.d.ts +3 -1
- package/models/game-timeline-stages.d.ts +1 -5
- package/models/game-user-disqualification.d.ts +0 -2
- package/models/game-user-limitation.d.ts +0 -4
- package/models/game-user.d.ts +0 -2
- package/models/game.d.ts +10 -21
- package/models/handball-game-config.d.ts +2 -4
- package/models/handball-game-log.d.ts +1 -4
- package/models/handball-game-statistic.d.ts +1 -4
- package/models/handball-game-team-statistic.d.ts +0 -2
- package/models/handball-profile.d.ts +0 -2
- package/models/handball-statistic.d.ts +1 -4
- package/models/hockey-game-config.d.ts +2 -4
- package/models/hockey-game-log.d.ts +4 -15
- package/models/hockey-game-statistic.d.ts +1 -18
- package/models/hockey-game-team-statistic.d.ts +0 -2
- package/models/hockey-penalty-types.d.ts +7 -0
- package/models/hockey-profile.d.ts +0 -2
- package/models/hockey-statistic.d.ts +1 -18
- package/models/league-banner.d.ts +0 -2
- package/models/league-court.d.ts +0 -2
- package/models/league-document.d.ts +0 -2
- package/models/league-news.d.ts +0 -2
- package/models/league-partner.d.ts +0 -2
- package/models/league-player.d.ts +2 -13
- package/models/league-playlist.d.ts +0 -2
- package/models/league-user.d.ts +0 -2
- package/models/league.d.ts +1 -6
- package/models/media-item.d.ts +0 -2
- package/models/notification-settings.d.ts +0 -2
- package/models/notification.d.ts +0 -2
- package/models/organization-bill.d.ts +0 -2
- package/models/organization-statistic.d.ts +0 -2
- package/models/organization-tariff.d.ts +0 -2
- package/models/organization.d.ts +0 -2
- package/models/playoff.d.ts +0 -4
- package/models/poll.d.ts +0 -6
- package/models/public-api.d.ts +0 -6
- package/models/rugby-foul-type.d.ts +0 -2
- package/models/rugby-game-config.d.ts +2 -4
- package/models/rugby-game-log.d.ts +1 -4
- package/models/rugby-game-statistic.d.ts +7 -10
- package/models/rugby-game-team-statistic.d.ts +0 -2
- package/models/rugby-profile.d.ts +0 -2
- package/models/rugby-statistic.d.ts +1 -4
- package/models/season-tournament.d.ts +0 -2
- package/models/sport.d.ts +0 -2
- package/models/team-access.d.ts +0 -2
- package/models/team-achievement.d.ts +0 -2
- package/models/team-event-invite.d.ts +2 -3
- package/models/team-event.d.ts +0 -2
- package/models/team-invite-external.d.ts +0 -2
- package/models/team-invite.d.ts +0 -2
- package/models/team-permission.d.ts +0 -2
- package/models/team-user.d.ts +0 -2
- package/models/team.d.ts +0 -2
- package/models/teams-and-users.d.ts +0 -2
- package/models/tournament-disqualification.d.ts +0 -2
- package/models/tournament-division.d.ts +0 -2
- package/models/tournament-event.d.ts +0 -2
- package/models/tournament-group.d.ts +0 -2
- package/models/tournament-invite.d.ts +0 -2
- package/models/tournament-join-team.d.ts +0 -4
- package/models/tournament-join1x1-data.d.ts +0 -2
- package/models/tournament-news.d.ts +0 -2
- package/models/tournament-round-team.d.ts +4 -14
- package/models/tournament-round.d.ts +0 -2
- package/models/tournament-season.d.ts +0 -2
- package/models/tournament-stage-team.d.ts +0 -2
- package/models/tournament-stage.d.ts +0 -2
- package/models/tournament-team-user-invite.d.ts +0 -2
- package/models/tournament-team-user.d.ts +0 -5
- package/models/tournament-team.d.ts +2 -13
- package/models/tournament.d.ts +5 -21
- package/models/user-access.d.ts +0 -2
- package/models/user-permission.d.ts +0 -2
- package/models/user-profile.d.ts +2 -3
- package/models/user.d.ts +2 -6
- package/models/util.d.ts +22 -46
- package/models/volleyball-game-config.d.ts +2 -4
- package/models/volleyball-game-log.d.ts +1 -4
- package/models/volleyball-game-statistic.d.ts +1 -4
- package/models/volleyball-game-team-statistic.d.ts +0 -2
- package/models/volleyball-profile.d.ts +0 -2
- package/models/volleyball-statistic.d.ts +1 -4
- package/models/waterpolo-game-config.d.ts +2 -4
- package/models/waterpolo-game-log.d.ts +1 -4
- package/models/waterpolo-game-statistic.d.ts +1 -4
- package/models/waterpolo-game-team-statistic.d.ts +0 -2
- package/models/waterpolo-profile.d.ts +0 -2
- package/models/waterpolo-statistic.d.ts +1 -4
- package/mtgame-core.d.ts +1 -0
- package/package.json +23 -10
- package/public-api.d.ts +1 -0
- package/services/base.controller.d.ts +12 -0
- package/services/base.service.d.ts +3 -0
- package/services/centrifugo.service.d.ts +6 -4
- package/services/config.service.d.ts +3 -0
- package/services/public-api.d.ts +1 -0
- package/storage/local-storage-engine.d.ts +2 -2
- package/storage/new.d.ts +17 -0
- package/storage/old-local-storage-engine.d.ts +6 -0
- package/storage/old-storage-engine.d.ts +24 -0
- package/storage/public-api.d.ts +5 -2
- package/storage/storage-engine.d.ts +25 -18
- package/storage/store.d.ts +3 -3
- package/utils/component-destroyed.d.ts +1 -1
- package/utils/data.d.ts +36 -6
- package/websocket/game.websocket.d.ts +24 -0
- package/websocket/public-api.d.ts +1 -0
- package/bundles/mtgame-core.umd.js +0 -14010
- package/bundles/mtgame-core.umd.js.map +0 -1
- package/esm2015/api/basketball-game-api.js +0 -61
- package/esm2015/api/feedback-api.js +0 -38
- package/esm2015/api/file-api.js +0 -49
- package/esm2015/api/football-game-api.js +0 -65
- package/esm2015/api/game-base-api.js +0 -54
- package/esm2015/api/handball-game-api.js +0 -65
- package/esm2015/api/hockey-game-api.js +0 -65
- package/esm2015/api/league-api.js +0 -151
- package/esm2015/api/league-news-api.js +0 -71
- package/esm2015/api/league-player-api.js +0 -34
- package/esm2015/api/media-api.js +0 -131
- package/esm2015/api/notification-api.js +0 -16
- package/esm2015/api/notification-base-api.js +0 -82
- package/esm2015/api/org-notification-api.js +0 -16
- package/esm2015/api/public-team-api.js +0 -41
- package/esm2015/api/public-user-api.js +0 -41
- package/esm2015/api/reference-api.js +0 -39
- package/esm2015/api/rugby-game-api.js +0 -63
- package/esm2015/api/team-api.js +0 -393
- package/esm2015/api/team-event-api.js +0 -80
- package/esm2015/api/tournament-api.js +0 -471
- package/esm2015/api/tournament-join-api.js +0 -72
- package/esm2015/api/tournament-round-api.js +0 -71
- package/esm2015/api/tournament-season-api.js +0 -112
- package/esm2015/api/tournament-stage-api.js +0 -63
- package/esm2015/api/user-api.js +0 -283
- package/esm2015/api/volleyball-game-api.js +0 -73
- package/esm2015/api/waterpolo-game-api.js +0 -65
- package/esm2015/http-cookie.interceptor.js +0 -37
- package/esm2015/localization/hockey-penalty-types.js +0 -50
- package/esm2015/models/achievement.js +0 -33
- package/esm2015/models/base-statistic.js +0 -2
- package/esm2015/models/basketball-game-config.js +0 -41
- package/esm2015/models/basketball-game-log.js +0 -192
- package/esm2015/models/basketball-game-statistic.js +0 -81
- package/esm2015/models/basketball-game-team-statistic.js +0 -27
- package/esm2015/models/basketball-profile.js +0 -43
- package/esm2015/models/basketball-statistic.js +0 -114
- package/esm2015/models/city.js +0 -22
- package/esm2015/models/feedback.js +0 -34
- package/esm2015/models/file.js +0 -54
- package/esm2015/models/football-game-config.js +0 -44
- package/esm2015/models/football-game-log.js +0 -104
- package/esm2015/models/football-game-statistic.js +0 -137
- package/esm2015/models/football-game-team-statistic.js +0 -27
- package/esm2015/models/football-profile.js +0 -43
- package/esm2015/models/football-statistic.js +0 -150
- package/esm2015/models/game-bill.js +0 -47
- package/esm2015/models/game-invite.js +0 -37
- package/esm2015/models/game-log-base.js +0 -2
- package/esm2015/models/game-statistic-base.js +0 -2
- package/esm2015/models/game-timeline-stages.js +0 -53
- package/esm2015/models/game-user-disqualification.js +0 -28
- package/esm2015/models/game-user-limitation.js +0 -51
- package/esm2015/models/game-user.js +0 -37
- package/esm2015/models/game.js +0 -281
- package/esm2015/models/handball-game-config.js +0 -34
- package/esm2015/models/handball-game-log.js +0 -92
- package/esm2015/models/handball-game-statistic.js +0 -101
- package/esm2015/models/handball-game-team-statistic.js +0 -27
- package/esm2015/models/handball-profile.js +0 -39
- package/esm2015/models/handball-statistic.js +0 -95
- package/esm2015/models/hockey-game-config.js +0 -48
- package/esm2015/models/hockey-game-log.js +0 -128
- package/esm2015/models/hockey-game-statistic.js +0 -159
- package/esm2015/models/hockey-game-team-statistic.js +0 -27
- package/esm2015/models/hockey-profile.js +0 -41
- package/esm2015/models/hockey-statistic.js +0 -143
- package/esm2015/models/league-banner.js +0 -39
- package/esm2015/models/league-court.js +0 -25
- package/esm2015/models/league-document.js +0 -26
- package/esm2015/models/league-field-base-value.js +0 -4
- package/esm2015/models/league-field-base.js +0 -25
- package/esm2015/models/league-news.js +0 -50
- package/esm2015/models/league-partner.js +0 -29
- package/esm2015/models/league-player-field-value.js +0 -32
- package/esm2015/models/league-player-field.js +0 -30
- package/esm2015/models/league-player.js +0 -116
- package/esm2015/models/league-playlist.js +0 -28
- package/esm2015/models/league-team-field.js +0 -30
- package/esm2015/models/league-user.js +0 -52
- package/esm2015/models/league.js +0 -71
- package/esm2015/models/media-item.js +0 -41
- package/esm2015/models/notification-settings.js +0 -35
- package/esm2015/models/notification.js +0 -134
- package/esm2015/models/organization-bill.js +0 -50
- package/esm2015/models/organization-statistic.js +0 -26
- package/esm2015/models/organization-tariff.js +0 -30
- package/esm2015/models/organization.js +0 -40
- package/esm2015/models/playoff.js +0 -91
- package/esm2015/models/poll.js +0 -132
- package/esm2015/models/public-api.js +0 -116
- package/esm2015/models/rugby-foul-type.js +0 -53
- package/esm2015/models/rugby-game-config.js +0 -42
- package/esm2015/models/rugby-game-log.js +0 -144
- package/esm2015/models/rugby-game-statistic.js +0 -89
- package/esm2015/models/rugby-game-team-statistic.js +0 -27
- package/esm2015/models/rugby-profile.js +0 -37
- package/esm2015/models/rugby-statistic.js +0 -123
- package/esm2015/models/season-tournament.js +0 -22
- package/esm2015/models/sport.js +0 -115
- package/esm2015/models/team-access.js +0 -45
- package/esm2015/models/team-achievement.js +0 -34
- package/esm2015/models/team-event-invite.js +0 -32
- package/esm2015/models/team-event.js +0 -45
- package/esm2015/models/team-invite-external.js +0 -25
- package/esm2015/models/team-invite.js +0 -41
- package/esm2015/models/team-permission.js +0 -38
- package/esm2015/models/team-user.js +0 -48
- package/esm2015/models/team.js +0 -71
- package/esm2015/models/teams-and-users.js +0 -32
- package/esm2015/models/tournament-disqualification.js +0 -30
- package/esm2015/models/tournament-division.js +0 -27
- package/esm2015/models/tournament-event.js +0 -45
- package/esm2015/models/tournament-group.js +0 -26
- package/esm2015/models/tournament-invite.js +0 -39
- package/esm2015/models/tournament-join-team.js +0 -55
- package/esm2015/models/tournament-join1x1-data.js +0 -32
- package/esm2015/models/tournament-news.js +0 -33
- package/esm2015/models/tournament-round-team.js +0 -95
- package/esm2015/models/tournament-round.js +0 -36
- package/esm2015/models/tournament-season.js +0 -45
- package/esm2015/models/tournament-stage-team.js +0 -47
- package/esm2015/models/tournament-stage.js +0 -35
- package/esm2015/models/tournament-team-field-value.js +0 -32
- package/esm2015/models/tournament-team-user-invite.js +0 -29
- package/esm2015/models/tournament-team-user.js +0 -39
- package/esm2015/models/tournament-team.js +0 -103
- package/esm2015/models/tournament.js +0 -266
- package/esm2015/models/user-access.js +0 -25
- package/esm2015/models/user-permission.js +0 -38
- package/esm2015/models/user-profile.js +0 -24
- package/esm2015/models/user.js +0 -91
- package/esm2015/models/util.js +0 -237
- package/esm2015/models/volleyball-game-config.js +0 -44
- package/esm2015/models/volleyball-game-log.js +0 -145
- package/esm2015/models/volleyball-game-statistic.js +0 -64
- package/esm2015/models/volleyball-game-team-statistic.js +0 -27
- package/esm2015/models/volleyball-profile.js +0 -43
- package/esm2015/models/volleyball-statistic.js +0 -92
- package/esm2015/models/waterpolo-game-config.js +0 -45
- package/esm2015/models/waterpolo-game-log.js +0 -167
- package/esm2015/models/waterpolo-game-statistic.js +0 -641
- package/esm2015/models/waterpolo-game-team-statistic.js +0 -27
- package/esm2015/models/waterpolo-profile.js +0 -42
- package/esm2015/models/waterpolo-statistic.js +0 -336
- package/esm2015/services/base.service.js +0 -16
- package/esm2015/services/centrifugo.service.js +0 -123
- package/esm2015/services/config.service.js +0 -37
- package/esm2015/storage/local-storage-engine.js +0 -18
- package/esm2015/storage/public-api.js +0 -4
- package/esm2015/storage/storage-engine.js +0 -61
- package/esm2015/utils/component-destroyed.js +0 -26
- package/esm2015/utils/data.js +0 -75
- package/fesm2015/mtgame-core.js.map +0 -1
- package/models/league-field-base-value.d.ts +0 -7
- package/models/league-field-base.d.ts +0 -24
- package/models/league-player-field-value.d.ts +0 -8
- package/models/league-player-field.d.ts +0 -5
- package/models/league-team-field.d.ts +0 -5
- package/models/tournament-team-field-value.d.ts +0 -8
- package/mtgame-core.metadata.json +0 -1
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpParams } from '@angular/common/http';
|
|
3
|
+
import { Tournament } from '../models/tournament';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import { TournamentNews } from '../models/tournament-news';
|
|
6
|
+
import { Game, GameStatuses } from '../models/game';
|
|
7
|
+
import { GameTimelineStages } from '../models/game-timeline-stages';
|
|
8
|
+
import { TournamentTeam } from '../models/tournament-team';
|
|
9
|
+
import { TournamentStage } from '../models/tournament-stage';
|
|
10
|
+
import { Playoff } from '../models/playoff';
|
|
11
|
+
import { BasketballStatistic } from '../models/basketball-statistic';
|
|
12
|
+
import { VolleyballStatistic } from '../models/volleyball-statistic';
|
|
13
|
+
import { TournamentTeamUser } from '../models/tournament-team-user';
|
|
14
|
+
import { TournamentStageTeam } from '../models/tournament-stage-team';
|
|
15
|
+
import { TournamentEvent, TournamentEventTypes } from '../models/tournament-event';
|
|
16
|
+
import { HockeyStatistic } from '../models/hockey-statistic';
|
|
17
|
+
import { FootballStatistic } from '../models/football-statistic';
|
|
18
|
+
import { LeagueUserPermissions } from '../models/league-user';
|
|
19
|
+
import { HandballStatistic } from '../models/handball-statistic';
|
|
20
|
+
import { RugbyStatistic } from '../models/rugby-statistic';
|
|
21
|
+
import { TournamentGroup } from '../models/tournament-group';
|
|
22
|
+
import { TeamAchievement } from '../models/team-achievement';
|
|
23
|
+
import { WaterpoloStatistic } from '../models/waterpolo-statistic';
|
|
24
|
+
import { TournamentRound } from '../models/tournament-round';
|
|
25
|
+
import { TournamentDivision } from '../models/tournament-division';
|
|
26
|
+
import * as i0 from "@angular/core";
|
|
27
|
+
import * as i1 from "@angular/common/http";
|
|
28
|
+
import * as i2 from "../services/config.service";
|
|
29
|
+
export class TournamentApi {
|
|
30
|
+
constructor(httpClient, configService) {
|
|
31
|
+
this.httpClient = httpClient;
|
|
32
|
+
this.configService = configService;
|
|
33
|
+
}
|
|
34
|
+
async getById(tournamentId) {
|
|
35
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/`)
|
|
36
|
+
.pipe(map(result => new Tournament(result)))
|
|
37
|
+
.toPromise();
|
|
38
|
+
}
|
|
39
|
+
async getByAlias(leagueId, alias) {
|
|
40
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/league/${leagueId}/tournaments/${alias}/`)
|
|
41
|
+
.pipe(map(result => new Tournament(result)))
|
|
42
|
+
.toPromise();
|
|
43
|
+
}
|
|
44
|
+
async getSeasonTournaments(seasonTournamentId) {
|
|
45
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/season_tournament/${seasonTournamentId}/tournaments/`)
|
|
46
|
+
.pipe(map(result => result.map(item => new Tournament(item))))
|
|
47
|
+
.toPromise();
|
|
48
|
+
}
|
|
49
|
+
async getNews(tournamentId) {
|
|
50
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/news/`)
|
|
51
|
+
.pipe(map(result => result.map(item => new TournamentNews(item))))
|
|
52
|
+
.toPromise();
|
|
53
|
+
}
|
|
54
|
+
async getEvents(tournamentId, page, size, filters) {
|
|
55
|
+
let params = new HttpParams().set('page', page.toString())
|
|
56
|
+
.set('size', size.toString());
|
|
57
|
+
if (filters) {
|
|
58
|
+
if (filters.event) {
|
|
59
|
+
params = params.set('event', TournamentEventTypes[filters.event]);
|
|
60
|
+
}
|
|
61
|
+
if (filters.search) {
|
|
62
|
+
params = params.set('search', filters.search);
|
|
63
|
+
}
|
|
64
|
+
if (filters.tournamentTour) {
|
|
65
|
+
params = params.set('tournament_tour', filters.tournamentTour.toString());
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/events/`, { params, observe: 'response' })
|
|
69
|
+
.pipe(map(result => ({
|
|
70
|
+
total: +result.headers.get('X-Page-Count'),
|
|
71
|
+
data: result.body.map(item => new TournamentEvent(item))
|
|
72
|
+
})))
|
|
73
|
+
.toPromise();
|
|
74
|
+
}
|
|
75
|
+
async getTournamentStages(tournamentId) {
|
|
76
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stages/`).pipe(map(data => data.map(item => new TournamentStage(item)))).toPromise();
|
|
77
|
+
}
|
|
78
|
+
async getTournamentRounds(tournamentId) {
|
|
79
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/rounds/`).pipe(map(data => data.map(item => new TournamentRound(item)))).toPromise();
|
|
80
|
+
}
|
|
81
|
+
async getTournamentDivisions(tournamentId) {
|
|
82
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/divisions/`).pipe(map(data => data.map(item => new TournamentDivision(item)))).toPromise();
|
|
83
|
+
}
|
|
84
|
+
async getPlayoff(tournamentId) {
|
|
85
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/playoff/`).pipe(map(result => result.map(item => new Playoff(item)))).toPromise();
|
|
86
|
+
}
|
|
87
|
+
async getPlayoffGames(playoffId, playoffNumber) {
|
|
88
|
+
let params = new HttpParams();
|
|
89
|
+
if (playoffNumber) {
|
|
90
|
+
params = params.set('playoff_number', playoffNumber);
|
|
91
|
+
}
|
|
92
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_playoff/${playoffId}/games/`, { params }).pipe(map(result => result.map(item => new Game(item)))).toPromise();
|
|
93
|
+
}
|
|
94
|
+
async getGamesStages(tournamentId, roundId) {
|
|
95
|
+
let params = new HttpParams();
|
|
96
|
+
if (roundId) {
|
|
97
|
+
params = params.set('tournament_round_id', roundId.toString());
|
|
98
|
+
}
|
|
99
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games_stages/`, { params })
|
|
100
|
+
.pipe(map(data => new GameTimelineStages(data)))
|
|
101
|
+
.toPromise();
|
|
102
|
+
}
|
|
103
|
+
async getGames(tournamentId, page, size, filters = {}) {
|
|
104
|
+
let params = new HttpParams().set('page', page.toString());
|
|
105
|
+
if (size) {
|
|
106
|
+
params = params.set('size', size.toString());
|
|
107
|
+
}
|
|
108
|
+
params = applyGamesFilters(filters, params);
|
|
109
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games/`, { params, observe: 'response' })
|
|
110
|
+
.pipe(map(result => ({
|
|
111
|
+
total: +result.headers.get('X-Page-Count'),
|
|
112
|
+
data: result.body.map(item => new Game(item)),
|
|
113
|
+
}))).toPromise();
|
|
114
|
+
}
|
|
115
|
+
async getGamesDates(tournamentId) {
|
|
116
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/games_dates/`, { observe: 'response' }).pipe(map(result => ({
|
|
117
|
+
total: +result.headers.get('X-Page-Count'),
|
|
118
|
+
data: result.body
|
|
119
|
+
}))).toPromise();
|
|
120
|
+
}
|
|
121
|
+
async getGroups(tournamentId) {
|
|
122
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/groups/`)
|
|
123
|
+
.pipe(map(result => result.map(item => new TournamentGroup(item))))
|
|
124
|
+
.toPromise();
|
|
125
|
+
}
|
|
126
|
+
async getTeams(tournamentId, groupId, short) {
|
|
127
|
+
let params = new HttpParams();
|
|
128
|
+
if (groupId) {
|
|
129
|
+
params = params.set('group_id', groupId.toString());
|
|
130
|
+
}
|
|
131
|
+
if (short) {
|
|
132
|
+
params = params.set('short', '1');
|
|
133
|
+
}
|
|
134
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams/`, { params })
|
|
135
|
+
.pipe(map(result => result.map(item => new TournamentTeam(item))))
|
|
136
|
+
.toPromise();
|
|
137
|
+
}
|
|
138
|
+
async getStageTeams(tournamentId) {
|
|
139
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/stage_teams/`)
|
|
140
|
+
.pipe(map(result => result.map(item => new TournamentStageTeam(item))))
|
|
141
|
+
.toPromise();
|
|
142
|
+
}
|
|
143
|
+
async getTeamsAchievements(tournamentId) {
|
|
144
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/achievements/`)
|
|
145
|
+
.pipe(map(result => result.map(item => new TeamAchievement(item))))
|
|
146
|
+
.toPromise();
|
|
147
|
+
}
|
|
148
|
+
async getTeamById(tournamentTeamId) {
|
|
149
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/`)
|
|
150
|
+
.pipe(map(result => new TournamentTeam(result)))
|
|
151
|
+
.toPromise();
|
|
152
|
+
}
|
|
153
|
+
async getUserById(userId) {
|
|
154
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${userId}/`)
|
|
155
|
+
.pipe(map(result => new TournamentTeamUser(result)))
|
|
156
|
+
.toPromise();
|
|
157
|
+
}
|
|
158
|
+
async getUserGames(tournamentUserId) {
|
|
159
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentUserId}/games/`)
|
|
160
|
+
.pipe(map(result => result.map(item => new Game(item))))
|
|
161
|
+
.toPromise();
|
|
162
|
+
}
|
|
163
|
+
async downloadTable(tournamentId, format, isChess) {
|
|
164
|
+
let httpParams = new HttpParams().set('file_type', format);
|
|
165
|
+
if (isChess) {
|
|
166
|
+
httpParams = httpParams.set('isChess', true);
|
|
167
|
+
}
|
|
168
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/table_file/`, {
|
|
169
|
+
params: httpParams,
|
|
170
|
+
responseType: 'blob'
|
|
171
|
+
}).toPromise();
|
|
172
|
+
}
|
|
173
|
+
async getBasketballStatisticLeaders(filters) {
|
|
174
|
+
let params = new HttpParams();
|
|
175
|
+
params = applyStatisticLeadersFilters(filters, params);
|
|
176
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic_leaders/`, { params }).pipe(map((result) => {
|
|
177
|
+
for (const key of Object.keys(result)) {
|
|
178
|
+
result[key] = result[key].map(item => new BasketballStatistic(item));
|
|
179
|
+
}
|
|
180
|
+
return result;
|
|
181
|
+
})).toPromise();
|
|
182
|
+
}
|
|
183
|
+
async getVolleyballStatisticLeaders(filters) {
|
|
184
|
+
let params = new HttpParams();
|
|
185
|
+
params = applyStatisticLeadersFilters(filters, params);
|
|
186
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic_leaders/`, { params }).pipe(map((result) => {
|
|
187
|
+
for (const key of Object.keys(result)) {
|
|
188
|
+
result[key] = result[key].map(item => new VolleyballStatistic(item));
|
|
189
|
+
}
|
|
190
|
+
return result;
|
|
191
|
+
})).toPromise();
|
|
192
|
+
}
|
|
193
|
+
async getHockeyStatisticLeaders(filters) {
|
|
194
|
+
let params = new HttpParams();
|
|
195
|
+
params = applyStatisticLeadersFilters(filters, params);
|
|
196
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic_leaders/`, { params }).pipe(map((result) => {
|
|
197
|
+
for (const key of Object.keys(result)) {
|
|
198
|
+
result[key] = result[key].map(item => new HockeyStatistic(item));
|
|
199
|
+
}
|
|
200
|
+
return result;
|
|
201
|
+
})).toPromise();
|
|
202
|
+
}
|
|
203
|
+
async getFootballStatisticLeaders(filters) {
|
|
204
|
+
let params = new HttpParams();
|
|
205
|
+
params = applyStatisticLeadersFilters(filters, params);
|
|
206
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic_leaders/`, { params }).pipe(map((result) => {
|
|
207
|
+
for (const key of Object.keys(result)) {
|
|
208
|
+
result[key] = result[key].map(item => new FootballStatistic(item));
|
|
209
|
+
}
|
|
210
|
+
return result;
|
|
211
|
+
})).toPromise();
|
|
212
|
+
}
|
|
213
|
+
async getHandballStatisticLeaders(filters) {
|
|
214
|
+
let params = new HttpParams();
|
|
215
|
+
params = applyStatisticLeadersFilters(filters, params);
|
|
216
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic_leaders/`, { params }).pipe(map((result) => {
|
|
217
|
+
for (const key of Object.keys(result)) {
|
|
218
|
+
result[key] = result[key].map(item => new HandballStatistic(item));
|
|
219
|
+
}
|
|
220
|
+
return result;
|
|
221
|
+
})).toPromise();
|
|
222
|
+
}
|
|
223
|
+
async getWaterpoloStatisticLeaders(filters) {
|
|
224
|
+
let params = new HttpParams();
|
|
225
|
+
params = applyStatisticLeadersFilters(filters, params);
|
|
226
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/waterpolo_statistic_leaders/`, { params }).pipe(map((result) => {
|
|
227
|
+
for (const key of Object.keys(result)) {
|
|
228
|
+
result[key] = result[key].map(item => new WaterpoloStatistic(item));
|
|
229
|
+
}
|
|
230
|
+
return result;
|
|
231
|
+
})).toPromise();
|
|
232
|
+
}
|
|
233
|
+
async getBasketballStatistic(filters) {
|
|
234
|
+
let params = new HttpParams();
|
|
235
|
+
params = applyStatisticFilters(filters, params);
|
|
236
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/basketball_statistic/`, { params, observe: 'response' }).pipe(map(result => ({
|
|
237
|
+
total: +result.headers.get('X-Page-Count'),
|
|
238
|
+
data: result.body.map(item => new BasketballStatistic(item))
|
|
239
|
+
}))).toPromise();
|
|
240
|
+
}
|
|
241
|
+
async getVolleyballStatistic(filters) {
|
|
242
|
+
let params = new HttpParams();
|
|
243
|
+
params = applyStatisticFilters(filters, params);
|
|
244
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/volleyball_statistic/`, { params, observe: 'response' }).pipe(map(result => ({
|
|
245
|
+
total: +result.headers.get('X-Page-Count'),
|
|
246
|
+
data: result.body.map(item => new VolleyballStatistic(item)),
|
|
247
|
+
}))).toPromise();
|
|
248
|
+
}
|
|
249
|
+
async getHockeyStatistic(filters) {
|
|
250
|
+
let params = new HttpParams();
|
|
251
|
+
params = applyStatisticFilters(filters, params);
|
|
252
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/hockey_statistic/`, { params, observe: 'response' }).pipe(map(result => ({
|
|
253
|
+
total: +result.headers.get('X-Page-Count'),
|
|
254
|
+
data: result.body.map(item => new HockeyStatistic(item)),
|
|
255
|
+
}))).toPromise();
|
|
256
|
+
}
|
|
257
|
+
async getFootballStatistic(filters) {
|
|
258
|
+
let params = new HttpParams();
|
|
259
|
+
params = applyStatisticFilters(filters, params);
|
|
260
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/football_statistic/`, { params, observe: 'response' }).pipe(map(result => ({
|
|
261
|
+
total: +result.headers.get('X-Page-Count'),
|
|
262
|
+
data: result.body.map(item => new FootballStatistic(item)),
|
|
263
|
+
}))).toPromise();
|
|
264
|
+
}
|
|
265
|
+
async getHandballStatistic(filters) {
|
|
266
|
+
let params = new HttpParams();
|
|
267
|
+
params = applyStatisticFilters(filters, params);
|
|
268
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/handball_statistic/`, { params, observe: 'response' }).pipe(map(result => ({
|
|
269
|
+
total: +result.headers.get('X-Page-Count'),
|
|
270
|
+
data: result.body.map(item => new HandballStatistic(item)),
|
|
271
|
+
}))).toPromise();
|
|
272
|
+
}
|
|
273
|
+
async getRugbyStatistic(filters) {
|
|
274
|
+
let params = new HttpParams();
|
|
275
|
+
params = applyStatisticFilters(filters, params);
|
|
276
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/rugby_statistic/`, { params, observe: 'response' }).pipe(map(result => ({
|
|
277
|
+
total: +result.headers.get('X-Page-Count'),
|
|
278
|
+
data: result.body.map(item => new RugbyStatistic(item))
|
|
279
|
+
}))).toPromise();
|
|
280
|
+
}
|
|
281
|
+
async getWaterpoloStatistic(filters) {
|
|
282
|
+
let params = new HttpParams();
|
|
283
|
+
params = applyStatisticFilters(filters, params);
|
|
284
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/waterpolo_statistic/`, { params, observe: 'response' }).pipe(map(result => ({
|
|
285
|
+
total: +result.headers.get('X-Page-Count'),
|
|
286
|
+
data: result.body.map(item => new WaterpoloStatistic(item)),
|
|
287
|
+
}))).toPromise();
|
|
288
|
+
}
|
|
289
|
+
async getTournamentTeamUsers(tournamentTeamId) {
|
|
290
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/users/`).pipe(map(result => result.map(item => new TournamentTeamUser(item)))).toPromise();
|
|
291
|
+
}
|
|
292
|
+
async myPermission(tournamentId) {
|
|
293
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/permission/`).pipe(map((data) => (data.permissions || []).map(item => LeagueUserPermissions[item]))).toPromise();
|
|
294
|
+
}
|
|
295
|
+
async getTournamentTeamTournaments(tournamentTeamId) {
|
|
296
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team/${tournamentTeamId}/tournaments/`).pipe(map(result => result.map(item => new Tournament(item)))).toPromise();
|
|
297
|
+
}
|
|
298
|
+
async getTournamentUserTournaments(tournamentTeamUserId) {
|
|
299
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament_team_user/${tournamentTeamUserId}/tournaments/`).pipe(map(result => result.map(item => new Tournament(item)))).toPromise();
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
TournamentApi.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TournamentApi, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
303
|
+
TournamentApi.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TournamentApi, providedIn: 'root' });
|
|
304
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TournamentApi, decorators: [{
|
|
305
|
+
type: Injectable,
|
|
306
|
+
args: [{ providedIn: 'root' }]
|
|
307
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ConfigService }]; } });
|
|
308
|
+
export function applyGamesFilters(filters, params) {
|
|
309
|
+
if (filters.tournamentIds) {
|
|
310
|
+
params = params.set('tournament_ids', filters.tournamentIds.join(','));
|
|
311
|
+
}
|
|
312
|
+
if (filters.tournamentStageId) {
|
|
313
|
+
params = params.set('tournament_stage_id', filters.tournamentStageId.toString());
|
|
314
|
+
}
|
|
315
|
+
if (filters.tournamentRoundId) {
|
|
316
|
+
params = params.set('tournament_round_id', filters.tournamentRoundId.toString());
|
|
317
|
+
}
|
|
318
|
+
if (filters.divisionId) {
|
|
319
|
+
params = params.set('division_id', filters.divisionId.toString());
|
|
320
|
+
}
|
|
321
|
+
if (filters.tournamentTour) {
|
|
322
|
+
params = params.set('tournament_tour', filters.tournamentTour.toString());
|
|
323
|
+
}
|
|
324
|
+
if (filters.playoffStage) {
|
|
325
|
+
params = params.set('playoff_stage', filters.playoffStage.toString());
|
|
326
|
+
}
|
|
327
|
+
if (filters.playoffRound) {
|
|
328
|
+
params = params.set('playoff_round', filters.playoffRound.toString());
|
|
329
|
+
}
|
|
330
|
+
if (filters.teamId) {
|
|
331
|
+
params = params.set('team_id', filters.teamId.toString());
|
|
332
|
+
}
|
|
333
|
+
if (filters.status) {
|
|
334
|
+
params = params.set('status', GameStatuses[filters.status]);
|
|
335
|
+
}
|
|
336
|
+
if (filters.statuses) {
|
|
337
|
+
const statuses = filters.statuses.map(i => GameStatuses[i]);
|
|
338
|
+
params = params.set('statuses', statuses.join(','));
|
|
339
|
+
}
|
|
340
|
+
if (filters.tournamentCourtId) {
|
|
341
|
+
params = params.set('tournament_court_id', filters.tournamentCourtId.toString());
|
|
342
|
+
}
|
|
343
|
+
if (filters.leaguePlayerId) {
|
|
344
|
+
params = params.set('league_player_id', filters.leaguePlayerId.toString());
|
|
345
|
+
}
|
|
346
|
+
if (filters.userId) {
|
|
347
|
+
params = params.set('user_id', filters.userId.toString());
|
|
348
|
+
}
|
|
349
|
+
if (filters.query) {
|
|
350
|
+
params = params.set('query', filters.query);
|
|
351
|
+
}
|
|
352
|
+
if (filters.isPlayoff !== undefined && filters.isPlayoff !== null) {
|
|
353
|
+
params = params.set('is_playoff', filters.isPlayoff ? '1' : '0');
|
|
354
|
+
}
|
|
355
|
+
return params;
|
|
356
|
+
}
|
|
357
|
+
export function applyStatisticFilters(filters, params) {
|
|
358
|
+
for (const key of Object.keys(filters)) {
|
|
359
|
+
if (filters[key]) {
|
|
360
|
+
params = params.set(key, filters[key]);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
if (filters.per_game !== undefined) {
|
|
364
|
+
params = params.set('per_game', filters.per_game ? '1' : '0');
|
|
365
|
+
}
|
|
366
|
+
if (filters.tournament_ids) {
|
|
367
|
+
params = params.set('tournament_ids', filters.tournament_ids.join(','));
|
|
368
|
+
}
|
|
369
|
+
if (filters.is_playoff !== undefined && filters.is_playoff !== null) {
|
|
370
|
+
params = params.set('is_playoff', filters.is_playoff ? '1' : '0');
|
|
371
|
+
}
|
|
372
|
+
return params;
|
|
373
|
+
}
|
|
374
|
+
export function applyStatisticLeadersFilters(filters, params) {
|
|
375
|
+
for (const key of Object.keys(filters)) {
|
|
376
|
+
if (filters[key]) {
|
|
377
|
+
params = params.set(key, filters[key]);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
if (filters.per_game !== undefined) {
|
|
381
|
+
params = params.set('per_game', filters.per_game ? '1' : '0');
|
|
382
|
+
}
|
|
383
|
+
if (filters.tournament_ids) {
|
|
384
|
+
params = params.set('tournament_ids', filters.tournament_ids.join(','));
|
|
385
|
+
}
|
|
386
|
+
if (filters.fields) {
|
|
387
|
+
params = params.set('fields', filters.fields.join(','));
|
|
388
|
+
}
|
|
389
|
+
return params;
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9hcGkvdG91cm5hbWVudC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4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R0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN4QztLQUNGO0lBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtRQUNsQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMvRDtJQUVELElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRTtRQUMxQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ3pFO0lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2xCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ3pEO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBUb3VybmFtZW50IH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVG91cm5hbWVudE5ld3MgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1uZXdzJztcbmltcG9ydCB7IEdhbWUsIEdhbWVTdGF0dXNlcyB9IGZyb20gJy4uL21vZGVscy9nYW1lJztcbmltcG9ydCB7IEdhbWVUaW1lbGluZVN0YWdlcyB9IGZyb20gJy4uL21vZGVscy9nYW1lLXRpbWVsaW5lLXN0YWdlcyc7XG5pbXBvcnQgeyBUb3VybmFtZW50VGVhbSB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LXRlYW0nO1xuaW1wb3J0IHsgVG91cm5hbWVudFN0YWdlIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtc3RhZ2UnO1xuaW1wb3J0IHsgUGxheW9mZiB9IGZyb20gJy4uL21vZGVscy9wbGF5b2ZmJztcbmltcG9ydCB7IFBhZ2luYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi9wYWdpbmF0ZWQtcmVzcG9uc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhc2tldGJhbGxTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvYmFza2V0YmFsbC1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgVm9sbGV5YmFsbFN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy92b2xsZXliYWxsLXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBUb3VybmFtZW50VGVhbVVzZXIgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC10ZWFtLXVzZXInO1xuaW1wb3J0IHsgVG91cm5hbWVudFN0YWdlVGVhbSB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LXN0YWdlLXRlYW0nO1xuaW1wb3J0IHsgVG91cm5hbWVudEV2ZW50LCBUb3VybmFtZW50RXZlbnRUeXBlcyB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LWV2ZW50JztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBIb2NrZXlTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvaG9ja2V5LXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBGb290YmFsbFN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy9mb290YmFsbC1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgTGVhZ3VlVXNlclBlcm1pc3Npb25zIH0gZnJvbSAnLi4vbW9kZWxzL2xlYWd1ZS11c2VyJztcbmltcG9ydCB7IEhhbmRiYWxsU3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL2hhbmRiYWxsLXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBSdWdieVN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy9ydWdieS1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgVG91cm5hbWVudEdyb3VwIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtZ3JvdXAnO1xuaW1wb3J0IHsgVGVhbUFjaGlldmVtZW50IH0gZnJvbSAnLi4vbW9kZWxzL3RlYW0tYWNoaWV2ZW1lbnQnO1xuaW1wb3J0IHsgV2F0ZXJwb2xvU3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL3dhdGVycG9sby1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgVG91cm5hbWVudFJvdW5kIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtcm91bmQnO1xuaW1wb3J0IHsgVG91cm5hbWVudERpdmlzaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtZGl2aXNpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJuYW1lbnRHYW1lc0ZpbHRlcnMge1xuICB0b3VybmFtZW50SWRzPzogbnVtYmVyW107XG4gIHRvdXJuYW1lbnRTZWFzb25JZD86IG51bWJlcjtcbiAgdG91cm5hbWVudFN0YWdlSWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRSb3VuZElkPzogbnVtYmVyO1xuICBkaXZpc2lvbklkPzogbnVtYmVyO1xuICB0b3VybmFtZW50VG91cj86IG51bWJlcjtcbiAgdGVhbUlkPzogbnVtYmVyO1xuICBwbGF5b2ZmU3RhZ2U/OiBudW1iZXI7XG4gIHBsYXlvZmZSb3VuZD86IG51bWJlcjtcbiAgcGxheW9mZklkPzogbnVtYmVyO1xuICBpc1BsYXlvZmY/OiBib29sZWFuO1xuICBzdGF0dXM/OiBHYW1lU3RhdHVzZXM7XG4gIHN0YXR1c2VzPzogR2FtZVN0YXR1c2VzW107XG4gIHRvdXJuYW1lbnRDb3VydElkPzogbnVtYmVyO1xuICBsZWFndWVQbGF5ZXJJZD86IG51bWJlcjtcbiAgdXNlcklkPzogbnVtYmVyO1xuICBxdWVyeT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgU3RhdGlzdGljR3JvdXBCeVR5cGVzID0gJ3RlYW0nIHwgJ3VzZXInIHwgJ3RlYW1fdXNlcicgfCAndG91cm5hbWVudF90ZWFtJyB8ICdsZWFndWVfcGxheWVyJyB8ICd0b3VybmFtZW50X3RlYW1fdXNlcidcbiAgfCAnbW9udGgnIHwgJ3dpbl9sb3Nlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGlzdGljRmlsdGVycyB7XG4gIGxlYWd1ZV9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9pZHM/OiBudW1iZXJbXTtcbiAgdG91cm5hbWVudF9zZWFzb25faWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfdGVhbV9pZD86IG51bWJlcjtcbiAgbGVhZ3VlX3BsYXllcl9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF90ZWFtX3VzZXJfaWQ/OiBudW1iZXI7XG4gIHRlYW1faWQ/OiBudW1iZXI7XG4gIHRlYW1fdXNlcl9pZD86IG51bWJlcjtcbiAgdXNlcl9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9zdGFnZV9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9yb3VuZF9pZD86IG51bWJlcjtcbiAgZGl2aXNpb25faWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfZ3JvdXBfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfdG91cj86IG51bWJlcjtcbiAgcGxheW9mZl9zdGFnZT86IG51bWJlcjtcbiAgcGxheW9mZl9yb3VuZD86IG51bWJlcjtcbiAgcGxheW9mZl9pZD86IG51bWJlcjtcbiAgaXNfcGxheW9mZj86IGJvb2xlYW47XG4gIGRhdGVfZnJvbT86IHN0cmluZztcbiAgZGF0ZV90bz86IHN0cmluZztcbiAgcXVlcnk/OiBzdHJpbmc7XG4gIHBlcl9nYW1lPzogYm9vbGVhbjtcbiAgZ3JvdXBfYnk6IFN0YXRpc3RpY0dyb3VwQnlUeXBlcztcbiAgb3JkZXJfYnk/OiBzdHJpbmc7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMge1xuICB0b3VybmFtZW50X2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X2lkcz86IG51bWJlcltdO1xuICB0b3VybmFtZW50X3NlYXNvbl9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF90ZWFtX2lkPzogbnVtYmVyO1xuICB0ZWFtX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3N0YWdlX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3RvdXI/OiBudW1iZXI7XG4gIHBsYXlvZmZfc3RhZ2U/OiBudW1iZXI7XG4gIHBsYXlvZmZfaWQ/OiBudW1iZXI7XG4gIGRhdGVfZnJvbT86IHN0cmluZztcbiAgZGF0ZV90bz86IHN0cmluZztcbiAgcGVyX2dhbWU/OiBib29sZWFuO1xuICBncm91cF9ieTogU3RhdGlzdGljR3JvdXBCeVR5cGVzO1xuICBzaXplPzogbnVtYmVyO1xuICBmaWVsZHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJuYW1lbnRFdmVudHNMaXN0RmlsdGVyIHtcbiAgZXZlbnQ/OiBUb3VybmFtZW50RXZlbnRUeXBlcztcbiAgc2VhcmNoPzogc3RyaW5nO1xuICB0b3VybmFtZW50VG91cj86IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVG91cm5hbWVudEFwaSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgYXN5bmMgZ2V0QnlJZCh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gbmV3IFRvdXJuYW1lbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRCeUFsaWFzKGxlYWd1ZUlkOiBudW1iZXIsIGFsaWFzOiBzdHJpbmcpOiBQcm9taXNlPFRvdXJuYW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2xlYWd1ZS8ke2xlYWd1ZUlkfS90b3VybmFtZW50cy8ke2FsaWFzfS9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBuZXcgVG91cm5hbWVudChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFNlYXNvblRvdXJuYW1lbnRzKHNlYXNvblRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3NlYXNvbl90b3VybmFtZW50LyR7c2Vhc29uVG91cm5hbWVudElkfS90b3VybmFtZW50cy9gXG4gICAgKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiByZXN1bHQubWFwKGl0ZW0gPT4gbmV3IFRvdXJuYW1lbnQoaXRlbSkpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldE5ld3ModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnROZXdzW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9uZXdzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IHJlc3VsdC5tYXAoaXRlbSA9PiBuZXcgVG91cm5hbWVudE5ld3MoaXRlbSkpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEV2ZW50cyhcbiAgICB0b3VybmFtZW50SWQ6IG51bWJlciwgcGFnZTogbnVtYmVyLCBzaXplOiBudW1iZXIsXG4gICAgZmlsdGVycz86IFRvdXJuYW1lbnRFdmVudHNMaXN0RmlsdGVyXG4gICk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8VG91cm5hbWVudEV2ZW50W10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwYWdlJywgcGFnZS50b1N0cmluZygpKVxuICAgICAgLnNldCgnc2l6ZScsIHNpemUudG9TdHJpbmcoKSk7XG4gICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgIGlmIChmaWx0ZXJzLmV2ZW50KSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2V2ZW50JywgVG91cm5hbWVudEV2ZW50VHlwZXNbZmlsdGVycy5ldmVudF0pO1xuICAgICAgfVxuICAgICAgaWYgKGZpbHRlcnMuc2VhcmNoKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NlYXJjaCcsIGZpbHRlcnMuc2VhcmNoKTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRUb3VyKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfdG91cicsIGZpbHRlcnMudG91cm5hbWVudFRvdXIudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PG9iamVjdFtdPihgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2V2ZW50cy9gLCB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSlcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiByZXN1bHQuYm9keS5tYXAoaXRlbSA9PiBuZXcgVG91cm5hbWVudEV2ZW50KGl0ZW0pKVxuICAgICAgfSkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudFN0YWdlcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFN0YWdlW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9zdGFnZXMvYCkucGlwZShcbiAgICAgIG1hcChkYXRhID0+IGRhdGEubWFwKGl0ZW0gPT4gbmV3IFRvdXJuYW1lbnRTdGFnZShpdGVtKSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRSb3VuZHModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRSb3VuZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8b2JqZWN0W10+KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vcm91bmRzL2ApLnBpcGUoXG4gICAgICBtYXAoZGF0YSA9PiBkYXRhLm1hcChpdGVtID0+IG5ldyBUb3VybmFtZW50Um91bmQoaXRlbSkpKSxcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudERpdmlzaW9ucyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudERpdmlzaW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9kaXZpc2lvbnMvYCkucGlwZShcbiAgICAgIG1hcChkYXRhID0+IGRhdGEubWFwKGl0ZW0gPT4gbmV3IFRvdXJuYW1lbnREaXZpc2lvbihpdGVtKSkpLFxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRQbGF5b2ZmKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxQbGF5b2ZmW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9wbGF5b2ZmL2ApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5tYXAoaXRlbSA9PiBuZXcgUGxheW9mZihpdGVtKSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFBsYXlvZmZHYW1lcyhwbGF5b2ZmSWQ6IG51bWJlciwgcGxheW9mZk51bWJlcj86IHN0cmluZyk6IFByb21pc2U8R2FtZVtdPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHBsYXlvZmZOdW1iZXIpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BsYXlvZmZfbnVtYmVyJywgcGxheW9mZk51bWJlcik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PG9iamVjdFtdPihgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfcGxheW9mZi8ke3BsYXlvZmZJZH0vZ2FtZXMvYCxcbiAgICAgIHtwYXJhbXN9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiByZXN1bHQubWFwKGl0ZW0gPT4gbmV3IEdhbWUoaXRlbSkpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRHYW1lc1N0YWdlcyh0b3VybmFtZW50SWQ6IG51bWJlciwgcm91bmRJZD86IG51bWJlcik6IFByb21pc2U8R2FtZVRpbWVsaW5lU3RhZ2VzPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHJvdW5kSWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfcm91bmRfaWQnLCByb3VuZElkLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZ2FtZXNfc3RhZ2VzL2AsXG4gICAgICB7cGFyYW1zfVxuICAgIClcbiAgICAgIC5waXBlKG1hcChkYXRhID0+IG5ldyBHYW1lVGltZWxpbmVTdGFnZXMoZGF0YSkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0R2FtZXMoXG4gICAgdG91cm5hbWVudElkOiBudW1iZXIsIHBhZ2U6IG51bWJlciwgc2l6ZTogbnVtYmVyLFxuICAgIGZpbHRlcnM6IFRvdXJuYW1lbnRHYW1lc0ZpbHRlcnMgPSB7fVxuICApOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEdhbWVbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3BhZ2UnLCBwYWdlLnRvU3RyaW5nKCkpO1xuICAgIGlmIChzaXplKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzaXplJywgc2l6ZS50b1N0cmluZygpKTtcbiAgICB9XG4gICAgcGFyYW1zID0gYXBwbHlHYW1lc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2dhbWVzL2AsXG4gICAgICB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfVxuICAgIClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiByZXN1bHQuYm9keS5tYXAoaXRlbSA9PiBuZXcgR2FtZShpdGVtKSksXG4gICAgICB9KSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0R2FtZXNEYXRlcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2dhbWVzX2RhdGVzL2AsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogcmVzdWx0LmJvZHlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRHcm91cHModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8b2JqZWN0W10+KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZ3JvdXBzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IHJlc3VsdC5tYXAoaXRlbSA9PiBuZXcgVG91cm5hbWVudEdyb3VwKGl0ZW0pKSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUZWFtcyh0b3VybmFtZW50SWQ6IG51bWJlciwgZ3JvdXBJZD86IG51bWJlciwgc2hvcnQ/OiBib29sZWFuKTogUHJvbWlzZTxUb3VybmFtZW50VGVhbVtdPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKGdyb3VwSWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2dyb3VwX2lkJywgZ3JvdXBJZC50b1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKHNob3J0KSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzaG9ydCcsICcxJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PG9iamVjdFtdPihcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vdGVhbXMvYCxcbiAgICAgIHtwYXJhbXN9XG4gICAgKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiByZXN1bHQubWFwKGl0ZW0gPT4gbmV3IFRvdXJuYW1lbnRUZWFtKGl0ZW0pKSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRTdGFnZVRlYW1zKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50U3RhZ2VUZWFtW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9zdGFnZV90ZWFtcy9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiByZXN1bHQubWFwKGl0ZW0gPT4gbmV3IFRvdXJuYW1lbnRTdGFnZVRlYW0oaXRlbSkpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRlYW1zQWNoaWV2ZW1lbnRzKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUZWFtQWNoaWV2ZW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PG9iamVjdFtdPihgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2FjaGlldmVtZW50cy9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiByZXN1bHQubWFwKGl0ZW0gPT4gbmV3IFRlYW1BY2hpZXZlbWVudChpdGVtKSkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VGVhbUJ5SWQodG91cm5hbWVudFRlYW1JZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50VGVhbT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtLyR7dG91cm5hbWVudFRlYW1JZH0vYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gbmV3IFRvdXJuYW1lbnRUZWFtKHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VXNlckJ5SWQodXNlcklkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRUZWFtVXNlcj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtX3VzZXIvJHt1c2VySWR9L2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IG5ldyBUb3VybmFtZW50VGVhbVVzZXIocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRVc2VyR2FtZXModG91cm5hbWVudFVzZXJJZDogbnVtYmVyKTogUHJvbWlzZTxHYW1lW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW1fdXNlci8ke3RvdXJuYW1lbnRVc2VySWR9L2dhbWVzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IHJlc3VsdC5tYXAoaXRlbSA9PiBuZXcgR2FtZShpdGVtKSkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZG93bmxvYWRUYWJsZSh0b3VybmFtZW50SWQ6IG51bWJlciwgZm9ybWF0OiAncGRmJyB8ICd4bHN4JywgaXNDaGVzcz86IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIGxldCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2ZpbGVfdHlwZScsIGZvcm1hdCk7XG4gICAgaWYgKGlzQ2hlc3MpIHtcbiAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgnaXNDaGVzcycsIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3RhYmxlX2ZpbGUvYCwge1xuICAgICAgcGFyYW1zOiBodHRwUGFyYW1zLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcbiAgICB9KS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJhc2tldGJhbGxTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogQmFza2V0YmFsbFN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2Jhc2tldGJhbGxfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSByZXN1bHRba2V5XS5tYXAoaXRlbSA9PiBuZXcgQmFza2V0YmFsbFN0YXRpc3RpYyhpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFZvbGxleWJhbGxTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogVm9sbGV5YmFsbFN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3ZvbGxleWJhbGxfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSByZXN1bHRba2V5XS5tYXAoaXRlbSA9PiBuZXcgVm9sbGV5YmFsbFN0YXRpc3RpYyhpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhvY2tleVN0YXRpc3RpY0xlYWRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMpOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBIb2NrZXlTdGF0aXN0aWNbXX0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9ob2NrZXlfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSByZXN1bHRba2V5XS5tYXAoaXRlbSA9PiBuZXcgSG9ja2V5U3RhdGlzdGljKGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Rm9vdGJhbGxTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogRm9vdGJhbGxTdGF0aXN0aWNbXX0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9mb290YmFsbF9zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IHJlc3VsdFtrZXldLm1hcChpdGVtID0+IG5ldyBGb290YmFsbFN0YXRpc3RpYyhpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhhbmRiYWxsU3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IEhhbmRiYWxsU3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvaGFuZGJhbGxfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSByZXN1bHRba2V5XS5tYXAoaXRlbSA9PiBuZXcgSGFuZGJhbGxTdGF0aXN0aWMoaXRlbSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRXYXRlcnBvbG9TdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogV2F0ZXJwb2xvU3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvd2F0ZXJwb2xvX3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gcmVzdWx0W2tleV0ubWFwKGl0ZW0gPT4gbmV3IFdhdGVycG9sb1N0YXRpc3RpYyhpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJhc2tldGJhbGxTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEJhc2tldGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PG9iamVjdFtdPihcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvYmFza2V0YmFsbF9zdGF0aXN0aWMvYCxcbiAgICAgIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IHJlc3VsdC5ib2R5Lm1hcChpdGVtID0+IG5ldyBCYXNrZXRiYWxsU3RhdGlzdGljKGl0ZW0pKVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFZvbGxleWJhbGxTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFZvbGxleWJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PG9iamVjdFtdPihcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdm9sbGV5YmFsbF9zdGF0aXN0aWMvYCxcbiAgICAgIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IHJlc3VsdC5ib2R5Lm1hcChpdGVtID0+IG5ldyBWb2xsZXliYWxsU3RhdGlzdGljKGl0ZW0pKSxcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRIb2NrZXlTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPEhvY2tleVN0YXRpc3RpY1tdPj4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8b2JqZWN0W10+KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9ob2NrZXlfc3RhdGlzdGljL2AsXG4gICAgICB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfVxuICAgICkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiByZXN1bHQuYm9keS5tYXAoaXRlbSA9PiBuZXcgSG9ja2V5U3RhdGlzdGljKGl0ZW0pKSxcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRGb290YmFsbFN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8Rm9vdGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PG9iamVjdFtdPihcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvZm9vdGJhbGxfc3RhdGlzdGljL2AsXG4gICAgICB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfVxuICAgICkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiByZXN1bHQuYm9keS5tYXAoaXRlbSA9PiBuZXcgRm9vdGJhbGxTdGF0aXN0aWMoaXRlbSkpLFxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhhbmRiYWxsU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxIYW5kYmFsbFN0YXRpc3RpY1tdPj4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8b2JqZWN0W10+KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9oYW5kYmFsbF9zdGF0aXN0aWMvYCxcbiAgICAgIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IHJlc3VsdC5ib2R5Lm1hcChpdGVtID0+IG5ldyBIYW5kYmFsbFN0YXRpc3RpYyhpdGVtKSksXG4gICAgICB9KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0UnVnYnlTdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFJ1Z2J5U3RhdGlzdGljW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3J1Z2J5X3N0YXRpc3RpYy9gLFxuICAgICAge3BhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogcmVzdWx0LmJvZHkubWFwKGl0ZW0gPT4gbmV3IFJ1Z2J5U3RhdGlzdGljKGl0ZW0pKVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFdhdGVycG9sb1N0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8V2F0ZXJwb2xvU3RhdGlzdGljW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3dhdGVycG9sb19zdGF0aXN0aWMvYCxcbiAgICAgIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IHJlc3VsdC5ib2R5Lm1hcChpdGVtID0+IG5ldyBXYXRlcnBvbG9TdGF0aXN0aWMoaXRlbSkpLFxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRUZWFtVXNlcnModG91cm5hbWVudFRlYW1JZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50VGVhbVVzZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PG9iamVjdFtdPihcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtLyR7dG91cm5hbWVudFRlYW1JZH0vdXNlcnMvYFxuICAgICkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gcmVzdWx0Lm1hcChpdGVtID0+IG5ldyBUb3VybmFtZW50VGVhbVVzZXIoaXRlbSkpKSxcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgbXlQZXJtaXNzaW9uKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxMZWFndWVVc2VyUGVybWlzc2lvbnNbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9wZXJtaXNzaW9uL2BcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKGRhdGE6IGFueSkgPT4gKGRhdGEucGVybWlzc2lvbnMgfHwgW10pLm1hcChpdGVtID0+IExlYWd1ZVVzZXJQZXJtaXNzaW9uc1tpdGVtXSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRUZWFtVG91cm5hbWVudHModG91cm5hbWVudFRlYW1JZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxvYmplY3RbXT4oXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfdGVhbS8ke3RvdXJuYW1lbnRUZWFtSWR9L3RvdXJuYW1lbnRzL2BcbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5tYXAoaXRlbSA9PiBuZXcgVG91cm5hbWVudChpdGVtKSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRVc2VyVG91cm5hbWVudHModG91cm5hbWVudFRlYW1Vc2VySWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8b2JqZWN0W10+KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW1fdXNlci8ke3RvdXJuYW1lbnRUZWFtVXNlcklkfS90b3VybmFtZW50cy9gXG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiByZXN1bHQubWFwKGl0ZW0gPT4gbmV3IFRvdXJuYW1lbnQoaXRlbSkpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5R2FtZXNGaWx0ZXJzKGZpbHRlcnM6IFRvdXJuYW1lbnRHYW1lc0ZpbHRlcnMsIHBhcmFtczogSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICBpZiAoZmlsdGVycy50b3VybmFtZW50SWRzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9pZHMnLCBmaWx0ZXJzLnRvdXJuYW1lbnRJZHMuam9pbignLCcpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50b3VybmFtZW50U3RhZ2VJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfc3RhZ2VfaWQnLCBmaWx0ZXJzLnRvdXJuYW1lbnRTdGFnZUlkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRSb3VuZElkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9yb3VuZF9pZCcsIGZpbHRlcnMudG91cm5hbWVudFJvdW5kSWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuZGl2aXNpb25JZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2RpdmlzaW9uX2lkJywgZmlsdGVycy5kaXZpc2lvbklkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRUb3VyKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF90b3VyJywgZmlsdGVycy50b3VybmFtZW50VG91ci50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5wbGF5b2ZmU3RhZ2UpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwbGF5b2ZmX3N0YWdlJywgZmlsdGVycy5wbGF5b2ZmU3RhZ2UudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMucGxheW9mZlJvdW5kKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGxheW9mZl9yb3VuZCcsIGZpbHRlcnMucGxheW9mZlJvdW5kLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRlYW1JZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RlYW1faWQnLCBmaWx0ZXJzLnRlYW1JZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5zdGF0dXMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzdGF0dXMnLCBHYW1lU3RhdHVzZXNbZmlsdGVycy5zdGF0dXNdKTtcbiAgfVxuICBpZiAoZmlsdGVycy5zdGF0dXNlcykge1xuICAgIGNvbnN0IHN0YXR1c2VzID0gZmlsdGVycy5zdGF0dXNlcy5tYXAoaSA9PiBHYW1lU3RhdHVzZXNbaV0pO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3N0YXR1c2VzJywgc3RhdHVzZXMuam9pbignLCcpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50b3VybmFtZW50Q291cnRJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfY291cnRfaWQnLCBmaWx0ZXJzLnRvdXJuYW1lbnRDb3VydElkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLmxlYWd1ZVBsYXllcklkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbGVhZ3VlX3BsYXllcl9pZCcsIGZpbHRlcnMubGVhZ3VlUGxheWVySWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudXNlcklkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndXNlcl9pZCcsIGZpbHRlcnMudXNlcklkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnF1ZXJ5KSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncXVlcnknLCBmaWx0ZXJzLnF1ZXJ5KTtcbiAgfVxuICBpZiAoZmlsdGVycy5pc1BsYXlvZmYgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJzLmlzUGxheW9mZiAhPT0gbnVsbCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2lzX3BsYXlvZmYnLCBmaWx0ZXJzLmlzUGxheW9mZiA/ICcxJyA6ICcwJyk7XG4gIH1cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNGaWx0ZXJzLCBwYXJhbXM6IEh0dHBQYXJhbXMpOiBIdHRwUGFyYW1zIHtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZmlsdGVycykpIHtcbiAgICBpZiAoZmlsdGVyc1trZXldKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGtleSwgZmlsdGVyc1trZXldKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZmlsdGVycy5wZXJfZ2FtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGVyX2dhbWUnLCBmaWx0ZXJzLnBlcl9nYW1lID8gJzEnIDogJzAnKTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRfaWRzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9pZHMnLCBmaWx0ZXJzLnRvdXJuYW1lbnRfaWRzLmpvaW4oJywnKSk7XG4gIH1cblxuICBpZiAoZmlsdGVycy5pc19wbGF5b2ZmICE9PSB1bmRlZmluZWQgJiYgZmlsdGVycy5pc19wbGF5b2ZmICE9PSBudWxsKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnaXNfcGxheW9mZicsIGZpbHRlcnMuaXNfcGxheW9mZiA/ICcxJyA6ICcwJyk7XG4gIH1cblxuICByZXR1cm4gcGFyYW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycywgcGFyYW1zOiBIdHRwUGFyYW1zKTogSHR0cFBhcmFtcyB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGZpbHRlcnMpKSB7XG4gICAgaWYgKGZpbHRlcnNba2V5XSkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChrZXksIGZpbHRlcnNba2V5XSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGZpbHRlcnMucGVyX2dhbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Blcl9nYW1lJywgZmlsdGVycy5wZXJfZ2FtZSA/ICcxJyA6ICcwJyk7XG4gIH1cblxuICBpZiAoZmlsdGVycy50b3VybmFtZW50X2lkcykge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfaWRzJywgZmlsdGVycy50b3VybmFtZW50X2lkcy5qb2luKCcsJykpO1xuICB9XG4gIGlmIChmaWx0ZXJzLmZpZWxkcykge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2ZpZWxkcycsIGZpbHRlcnMuZmllbGRzLmpvaW4oJywnKSk7XG4gIH1cbiAgcmV0dXJuIHBhcmFtcztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { TournamentJoinTeam } from '../models/tournament-join-team';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { TeamUser } from '../models/team-user';
|
|
5
|
+
import { TournamentInvite } from '../models/tournament-invite';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common/http";
|
|
8
|
+
import * as i2 from "../services/config.service";
|
|
9
|
+
export var TournamentJoin1x1Status;
|
|
10
|
+
(function (TournamentJoin1x1Status) {
|
|
11
|
+
TournamentJoin1x1Status[TournamentJoin1x1Status["not_sent"] = 1] = "not_sent";
|
|
12
|
+
TournamentJoin1x1Status[TournamentJoin1x1Status["invite_sent"] = 2] = "invite_sent";
|
|
13
|
+
TournamentJoin1x1Status[TournamentJoin1x1Status["in_tournament"] = 3] = "in_tournament";
|
|
14
|
+
TournamentJoin1x1Status[TournamentJoin1x1Status["not_valid"] = 4] = "not_valid";
|
|
15
|
+
})(TournamentJoin1x1Status || (TournamentJoin1x1Status = {}));
|
|
16
|
+
export class TournamentJoinApi {
|
|
17
|
+
constructor(httpClient, configService) {
|
|
18
|
+
this.httpClient = httpClient;
|
|
19
|
+
this.configService = configService;
|
|
20
|
+
}
|
|
21
|
+
async getTeamsForJoin(tournamentId) {
|
|
22
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/teams_for_join/`).pipe(map(response => response.map(item => new TournamentJoinTeam(item)))).toPromise();
|
|
23
|
+
}
|
|
24
|
+
async getTeamUsers(teamId) {
|
|
25
|
+
return this.httpClient
|
|
26
|
+
.get(`${this.configService.get('apiUrl')}/api/v1/team/${teamId}/users/`)
|
|
27
|
+
.pipe(map(data => data.map(item => new TeamUser(item)))).toPromise();
|
|
28
|
+
}
|
|
29
|
+
async joinTournament(tournamentId, teamId, invites) {
|
|
30
|
+
const body = {
|
|
31
|
+
team: { id: teamId },
|
|
32
|
+
user_invites: invites.map(item => item.json())
|
|
33
|
+
};
|
|
34
|
+
return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join/`, body)
|
|
35
|
+
.pipe(map(data => new TournamentInvite(data)))
|
|
36
|
+
.toPromise();
|
|
37
|
+
}
|
|
38
|
+
async join1x1Tournament(tournamentId, additionalData) {
|
|
39
|
+
return this.httpClient.post(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join_1x1/`, additionalData.json())
|
|
40
|
+
.pipe(map(data => new TournamentInvite(data)))
|
|
41
|
+
.toPromise();
|
|
42
|
+
}
|
|
43
|
+
async join1x1TournamentStatus(tournamentId) {
|
|
44
|
+
return this.httpClient.get(`${this.configService.get('apiUrl')}/api/v1/tournament/${tournamentId}/join_1x1_status/`)
|
|
45
|
+
.pipe(map((data) => TournamentJoin1x1Status[data.status]))
|
|
46
|
+
.toPromise();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
TournamentJoinApi.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TournamentJoinApi, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
+
TournamentJoinApi.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TournamentJoinApi, providedIn: 'root' });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TournamentJoinApi, decorators: [{
|
|
52
|
+
type: Injectable,
|
|
53
|
+
args: [{ providedIn: 'root' }]
|
|
54
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ConfigService }]; } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC1qb2luLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2FwaS90b3VybmFtZW50LWpvaW4tYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUkvRCxNQUFNLENBQU4sSUFBWSx1QkFLWDtBQUxELFdBQVksdUJBQXVCO0lBQ2pDLDZFQUFZLENBQUE7SUFDWixtRkFBVyxDQUFBO0lBQ1gsdUZBQWEsQ0FBQTtJQUNiLCtFQUFTLENBQUE7QUFDWCxDQUFDLEVBTFcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUtsQztBQUdELE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFDVSxVQUFzQixFQUN0QixhQUE0QjtRQUQ1QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBRXRDLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQW9CO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLHNCQUFzQixZQUFZLGtCQUFrQixDQUN4RixDQUFDLElBQUksQ0FDSixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3BFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBYztRQUMvQixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLEdBQUcsQ0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsTUFBTSxTQUFTLENBQUM7YUFDakYsSUFBSSxDQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ2xELENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBb0IsRUFBRSxNQUFjLEVBQUUsT0FBbUM7UUFDNUYsTUFBTSxJQUFJLEdBQUc7WUFDWCxJQUFJLEVBQUUsRUFBQyxFQUFFLEVBQUUsTUFBTSxFQUFDO1lBQ2xCLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQy9DLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLHNCQUFzQixZQUFZLFFBQVEsRUFBRSxJQUFJLENBQUM7YUFDN0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUM3QyxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFlBQW9CLEVBQUUsY0FBcUM7UUFDakYsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLFlBQVksWUFBWSxFQUNqRixjQUFjLENBQUMsSUFBSSxFQUFFLENBQ3RCO2FBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUM3QyxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFlBQW9CO1FBQ2hELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLFlBQVksbUJBQW1CLENBQUM7YUFDakgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQXdCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQzdFLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7OytHQTlDVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQURMLE1BQU07NEZBQ2xCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVG91cm5hbWVudEpvaW5UZWFtIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtam9pbi10ZWFtJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRlYW1Vc2VyIH0gZnJvbSAnLi4vbW9kZWxzL3RlYW0tdXNlcic7XG5pbXBvcnQgeyBUb3VybmFtZW50VGVhbVVzZXJJbnZpdGUgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC10ZWFtLXVzZXItaW52aXRlJztcbmltcG9ydCB7IFRvdXJuYW1lbnRJbnZpdGUgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1pbnZpdGUnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRvdXJuYW1lbnRKb2luMXgxRGF0YSB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LWpvaW4xeDEtZGF0YSc7XG5cbmV4cG9ydCBlbnVtIFRvdXJuYW1lbnRKb2luMXgxU3RhdHVzIHtcbiAgbm90X3NlbnQgPSAxLFxuICBpbnZpdGVfc2VudCxcbiAgaW5fdG91cm5hbWVudCxcbiAgbm90X3ZhbGlkLFxufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBUb3VybmFtZW50Sm9pbkFwaSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgYXN5bmMgZ2V0VGVhbXNGb3JKb2luKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50Sm9pblRlYW1bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PG9iamVjdFtdPihcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vdGVhbXNfZm9yX2pvaW4vYFxuICAgICkucGlwZShcbiAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5tYXAoaXRlbSA9PiBuZXcgVG91cm5hbWVudEpvaW5UZWFtKGl0ZW0pKSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VGVhbVVzZXJzKHRlYW1JZDogbnVtYmVyKTogUHJvbWlzZTxUZWFtVXNlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgLmdldDxvYmplY3RbXT4oYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90ZWFtLyR7dGVhbUlkfS91c2Vycy9gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChkYXRhID0+IGRhdGEubWFwKGl0ZW0gPT4gbmV3IFRlYW1Vc2VyKGl0ZW0pKSlcbiAgICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBqb2luVG91cm5hbWVudCh0b3VybmFtZW50SWQ6IG51bWJlciwgdGVhbUlkOiBudW1iZXIsIGludml0ZXM6IFRvdXJuYW1lbnRUZWFtVXNlckludml0ZVtdKTogUHJvbWlzZTxUb3VybmFtZW50SW52aXRlPiB7XG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIHRlYW06IHtpZDogdGVhbUlkfSxcbiAgICAgIHVzZXJfaW52aXRlczogaW52aXRlcy5tYXAoaXRlbSA9PiBpdGVtLmpzb24oKSlcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2pvaW4vYCwgYm9keSlcbiAgICAgIC5waXBlKG1hcChkYXRhID0+IG5ldyBUb3VybmFtZW50SW52aXRlKGRhdGEpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGpvaW4xeDFUb3VybmFtZW50KHRvdXJuYW1lbnRJZDogbnVtYmVyLCBhZGRpdGlvbmFsRGF0YTogVG91cm5hbWVudEpvaW4xeDFEYXRhKTogUHJvbWlzZTxUb3VybmFtZW50SW52aXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9qb2luXzF4MS9gLFxuICAgICAgYWRkaXRpb25hbERhdGEuanNvbigpXG4gICAgKVxuICAgICAgLnBpcGUobWFwKGRhdGEgPT4gbmV3IFRvdXJuYW1lbnRJbnZpdGUoZGF0YSkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgam9pbjF4MVRvdXJuYW1lbnRTdGF0dXModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRKb2luMXgxU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9qb2luXzF4MV9zdGF0dXMvYClcbiAgICAgIC5waXBlKG1hcCgoZGF0YTogeyBzdGF0dXM6IHN0cmluZyB9KSA9PiBUb3VybmFtZW50Sm9pbjF4MVN0YXR1c1tkYXRhLnN0YXR1c10pKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG59XG4iXX0=
|