mediasfu-angular 1.0.0 → 1.0.2
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/LICENSE +21 -0
- package/README.md +194 -192
- package/dist/README.md +194 -192
- package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +37 -1
- package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +51 -1
- package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +49 -1
- package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +1 -2
- package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +25 -19
- package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +60 -1
- package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +21 -1
- package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +36 -1
- package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +39 -1
- package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +25 -41
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +22 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +23 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +24 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +24 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +16 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +28 -1
- package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +28 -19
- package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +31 -46
- package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +20 -18
- package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +33 -25
- package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +29 -17
- package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +29 -15
- package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +44 -23
- package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +26 -31
- package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +52 -59
- package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +20 -24
- package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +40 -40
- package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +29 -14
- package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +30 -24
- package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +19 -25
- package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +63 -1
- package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +29 -18
- package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +48 -39
- package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +36 -23
- package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +36 -25
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +54 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +54 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +52 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +52 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +50 -3
- package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +50 -52
- package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +7 -2
- package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +6 -1
- package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +22 -29
- package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +16 -14
- package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +25 -1
- package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +35 -1
- package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +17 -34
- package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +9 -1
- package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +15 -1
- package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +16 -1
- package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +20 -1
- package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +20 -1
- package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +18 -1
- package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +18 -1
- package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +25 -1
- package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +28 -1
- package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +16 -1
- package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +13 -1
- package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +6 -1
- package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +23 -1
- package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +18 -1
- package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +11 -1
- package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +12 -1
- package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +60 -1
- package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +22 -1
- package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +50 -1
- package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +50 -1
- package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +27 -1
- package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +19 -1
- package/dist/esm2022/lib/consumers/change-vids.service.mjs +132 -67
- package/dist/esm2022/lib/consumers/check-grid.service.mjs +33 -19
- package/dist/esm2022/lib/consumers/check-permission.service.mjs +26 -1
- package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +36 -1
- package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +103 -1
- package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +32 -1
- package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +36 -1
- package/dist/esm2022/lib/consumers/connect-ips.service.mjs +43 -1
- package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +39 -1
- package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +41 -1
- package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +45 -1
- package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +55 -1
- package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +37 -1
- package/dist/esm2022/lib/consumers/control-media.service.mjs +46 -1
- package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +47 -1
- package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +40 -1
- package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +46 -1
- package/dist/esm2022/lib/consumers/disp-streams.service.mjs +93 -1
- package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +48 -1
- package/dist/esm2022/lib/consumers/get-estimate.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/get-videos.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/mix-streams.service.mjs +23 -1
- package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +41 -1
- package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +100 -1
- package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +30 -1
- package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +38 -1
- package/dist/esm2022/lib/consumers/re-port.service.mjs +49 -1
- package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +83 -1
- package/dist/esm2022/lib/consumers/readjust.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +32 -1
- package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +28 -1
- package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +59 -1
- package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +35 -1
- package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +52 -1
- package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +37 -1
- package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +38 -38
- package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +40 -1
- package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +28 -1
- package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +41 -1
- package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +56 -1
- package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +54 -1
- package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +62 -1
- package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +59 -1
- package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +33 -1
- package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +48 -1
- package/dist/esm2022/lib/consumers/trigger.service.mjs +39 -1
- package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +55 -1
- package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +46 -1
- package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +26 -1
- package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +72 -1
- package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +25 -1
- package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +25 -1
- package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +45 -1
- package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +23 -1
- package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +76 -1
- package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +25 -1
- package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +21 -1
- package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +36 -1
- package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +23 -1
- package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +23 -1
- package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +50 -1
- package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +25 -1
- package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +47 -1
- package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +40 -1
- package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +46 -1
- package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +39 -1
- package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +33 -1
- package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +35 -1
- package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +21 -1
- package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +32 -1
- package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +25 -1
- package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +23 -1
- package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +64 -1
- package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +44 -1
- package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +28 -1
- package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +45 -1
- package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +46 -1
- package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +33 -1
- package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +51 -1
- package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +39 -1
- package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +49 -1
- package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +26 -1
- package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +40 -1
- package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +26 -1
- package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +43 -1
- package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +98 -1
- package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +32 -1
- package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +69 -1
- package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +89 -1
- package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +48 -1
- package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +51 -1
- package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +57 -1
- package/dist/esm2022/lib/methods/utils/format-number.service.mjs +27 -15
- package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +34 -1
- package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +28 -1
- package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +27 -1
- package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +37 -1
- package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +22 -1
- package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +14 -4
- package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +14 -4
- package/dist/esm2022/lib/methods/utils/initial-values.util.mjs +13 -3
- package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +38 -1
- package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +56 -1
- package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +38 -1
- package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +51 -1
- package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +38 -1
- package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +51 -1
- package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +47 -1
- package/dist/esm2022/lib/methods/utils/sleep.util.mjs +10 -4
- package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +22 -1
- package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +17 -1
- package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +19 -1
- package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +30 -1
- package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +30 -1
- package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +21 -1
- package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +24 -1
- package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +32 -1
- package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +45 -1
- package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +39 -1
- package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +39 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +74 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +72 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +28 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +37 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +38 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +25 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +27 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +25 -10
- package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +32 -49
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +30 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +24 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +28 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +32 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +26 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +62 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +63 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +46 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +30 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +39 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +39 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +63 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +42 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +26 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +26 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +22 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +43 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +31 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +41 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +15 -41
- package/dist/esm2022/lib/sockets/socket-manager.service.mjs +41 -1
- package/dist/fesm2022/mediasfu-angular.mjs +8192 -910
- package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
- package/dist/lib/components/background-components/background-modal/background-modal.component.d.ts +36 -0
- package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +50 -0
- package/dist/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.d.ts +48 -0
- package/dist/lib/components/co-host-components/co-host-modal/co-host-modal.component.d.ts +62 -0
- package/dist/lib/components/display-components/alert-component/alert.component.component.d.ts +24 -18
- package/dist/lib/components/display-components/audio-card/audio-card.component.d.ts +59 -0
- package/dist/lib/components/display-components/audio-grid/audio-grid.component.d.ts +20 -0
- package/dist/lib/components/display-components/card-video-display/card-video-display.component.d.ts +35 -0
- package/dist/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.d.ts +38 -0
- package/dist/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.d.ts +24 -40
- package/dist/lib/components/display-components/control-widgets/menu-participants-widget.component.d.ts +21 -0
- package/dist/lib/components/display-components/control-widgets/menu-record-widget.component.d.ts +22 -0
- package/dist/lib/components/display-components/control-widgets/menu-widget.component.d.ts +23 -0
- package/dist/lib/components/display-components/control-widgets/message-widget.component.d.ts +23 -0
- package/dist/lib/components/display-components/control-widgets/record-timer-widget.component.d.ts +15 -0
- package/dist/lib/components/display-components/control-widgets/screenshare-widget.component.d.ts +27 -0
- package/dist/lib/components/display-components/flexible-grid/flexible-grid.component.d.ts +27 -18
- package/dist/lib/components/display-components/flexible-video/flexible-video.component.d.ts +30 -45
- package/dist/lib/components/display-components/loading-modal/loading-modal.component.d.ts +19 -17
- package/dist/lib/components/display-components/main-aspect-component/main-aspect-component.component.d.ts +32 -24
- package/dist/lib/components/display-components/main-container-component/main-container-component.component.d.ts +28 -16
- package/dist/lib/components/display-components/main-grid-component/main-grid-component.component.d.ts +28 -14
- package/dist/lib/components/display-components/main-screen-component/main-screen-component.component.d.ts +43 -22
- package/dist/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.d.ts +25 -30
- package/dist/lib/components/display-components/mini-audio/mini-audio.component.d.ts +55 -62
- package/dist/lib/components/display-components/mini-card/mini-card.component.d.ts +19 -23
- package/dist/lib/components/display-components/mini-card-audio/mini-card-audio.component.d.ts +39 -39
- package/dist/lib/components/display-components/other-grid-component/other-grid-component.component.d.ts +28 -13
- package/dist/lib/components/display-components/pagination/pagination.component.d.ts +29 -23
- package/dist/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.d.ts +18 -24
- package/dist/lib/components/display-components/video-card/video-card.component.d.ts +62 -0
- package/dist/lib/components/display-settings-components/display-settings-modal.component.d.ts +28 -17
- package/dist/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.d.ts +47 -38
- package/dist/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.d.ts +35 -22
- package/dist/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.d.ts +35 -24
- package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +49 -0
- package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +49 -0
- package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +47 -11
- package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +47 -11
- package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +45 -11
- package/dist/lib/components/menu-components/custom-buttons/custom-buttons.component.d.ts +49 -51
- package/dist/lib/components/menu-components/meeting-id-component/meeting-id-component.component.d.ts +6 -1
- package/dist/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.d.ts +5 -0
- package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +21 -28
- package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +15 -13
- package/dist/lib/components/message-components/message-panel/message-panel.component.d.ts +24 -0
- package/dist/lib/components/message-components/messages-modal/messages-modal.component.d.ts +34 -0
- package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +16 -33
- package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +8 -0
- package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +14 -0
- package/dist/lib/components/misc-components/welcome-page/welcome-page.component.d.ts +15 -0
- package/dist/lib/components/participants-components/participant-list/participant-list.component.d.ts +19 -0
- package/dist/lib/components/participants-components/participant-list-item/participant-list-item.component.d.ts +19 -0
- package/dist/lib/components/participants-components/participant-list-others/participant-list-others.component.d.ts +17 -0
- package/dist/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.d.ts +17 -0
- package/dist/lib/components/participants-components/participants-modal/participants-modal.component.d.ts +24 -0
- package/dist/lib/components/polls-components/poll-modal/poll-modal.component.d.ts +27 -0
- package/dist/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.d.ts +15 -0
- package/dist/lib/components/recording-components/recording-modal/recording-modal.component.d.ts +12 -0
- package/dist/lib/components/recording-components/standard-panel-component/standard-panel-component.component.d.ts +5 -0
- package/dist/lib/components/requests-components/render-request-component/render-request-component.component.d.ts +22 -0
- package/dist/lib/components/requests-components/requests-modal/requests-modal.component.d.ts +17 -0
- package/dist/lib/components/screenboard-components/screenboard/screenboard.component.d.ts +10 -0
- package/dist/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.d.ts +11 -0
- package/dist/lib/components/waiting-components/waiting-room-modal.component.d.ts +59 -0
- package/dist/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.d.ts +21 -0
- package/dist/lib/components/whiteboard-components/whiteboard/whiteboard.component.d.ts +49 -0
- package/dist/lib/consumers/add-videos-grid.service.d.ts +49 -0
- package/dist/lib/consumers/auto-adjust.service.d.ts +26 -0
- package/dist/lib/consumers/calculate-rows-and-columns.service.d.ts +18 -0
- package/dist/lib/consumers/change-vids.service.d.ts +131 -66
- package/dist/lib/consumers/check-grid.service.d.ts +32 -18
- package/dist/lib/consumers/check-permission.service.d.ts +25 -0
- package/dist/lib/consumers/check-screen-share.service.d.ts +35 -0
- package/dist/lib/consumers/close-and-resize.service.d.ts +102 -0
- package/dist/lib/consumers/compare-active-names.service.d.ts +31 -0
- package/dist/lib/consumers/compare-screen-states.service.d.ts +35 -0
- package/dist/lib/consumers/connect-ips.service.d.ts +42 -0
- package/dist/lib/consumers/connect-recv-transport.service.d.ts +33 -0
- package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +38 -0
- package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +40 -0
- package/dist/lib/consumers/connect-send-transport-video.service.d.ts +44 -0
- package/dist/lib/consumers/connect-send-transport.service.d.ts +54 -0
- package/dist/lib/consumers/consumer-resume.service.d.ts +36 -0
- package/dist/lib/consumers/control-media.service.d.ts +45 -0
- package/dist/lib/consumers/create-send-transport.service.d.ts +46 -0
- package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +50 -0
- package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +39 -0
- package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +45 -0
- package/dist/lib/consumers/disp-streams.service.d.ts +92 -0
- package/dist/lib/consumers/generate-page-content.service.d.ts +47 -0
- package/dist/lib/consumers/get-estimate.service.d.ts +50 -0
- package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +33 -0
- package/dist/lib/consumers/get-producers-piped.service.d.ts +33 -0
- package/dist/lib/consumers/get-videos.service.d.ts +33 -0
- package/dist/lib/consumers/mix-streams.service.d.ts +22 -0
- package/dist/lib/consumers/on-screen-changes.service.d.ts +40 -0
- package/dist/lib/consumers/prepopulate-user-media.service.d.ts +99 -0
- package/dist/lib/consumers/process-consumer-transports-audio.service.d.ts +29 -0
- package/dist/lib/consumers/process-consumer-transports.service.d.ts +37 -0
- package/dist/lib/consumers/re-port.service.d.ts +48 -0
- package/dist/lib/consumers/re-update-inter.service.d.ts +82 -0
- package/dist/lib/consumers/readjust.service.d.ts +50 -0
- package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +31 -0
- package/dist/lib/consumers/receive-room-messages.service.d.ts +27 -0
- package/dist/lib/consumers/reorder-streams.service.d.ts +58 -0
- package/dist/lib/consumers/request-screen-share.service.d.ts +34 -0
- package/dist/lib/consumers/resume-pause-audio-streams.service.d.ts +51 -0
- package/dist/lib/consumers/resume-pause-streams.service.d.ts +33 -0
- package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +36 -0
- package/dist/lib/consumers/signal-new-consumer-transport.service.d.ts +37 -37
- package/dist/lib/consumers/socket-receive-methods/join-consume-room.service.d.ts +33 -0
- package/dist/lib/consumers/socket-receive-methods/new-pipe-producer.service.d.ts +39 -0
- package/dist/lib/consumers/socket-receive-methods/producer-closed.service.d.ts +27 -0
- package/dist/lib/consumers/start-share-screen.service.d.ts +40 -0
- package/dist/lib/consumers/stop-share-screen.service.d.ts +55 -0
- package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +53 -0
- package/dist/lib/consumers/stream-success-audio.service.d.ts +61 -0
- package/dist/lib/consumers/stream-success-screen.service.d.ts +50 -0
- package/dist/lib/consumers/stream-success-video.service.d.ts +58 -0
- package/dist/lib/consumers/switch-user-audio.service.d.ts +33 -0
- package/dist/lib/consumers/switch-user-video-alt.service.d.ts +32 -0
- package/dist/lib/consumers/switch-user-video.service.d.ts +47 -0
- package/dist/lib/consumers/trigger.service.d.ts +38 -0
- package/dist/lib/consumers/update-mini-cards-grid.service.d.ts +54 -0
- package/dist/lib/consumers/update-participant-audio-decibels.service.d.ts +45 -0
- package/dist/lib/methods/background-methods/launch-background.service.d.ts +25 -0
- package/dist/lib/methods/breakout-room-methods/breakout-room-updated.service.d.ts +71 -0
- package/dist/lib/methods/breakout-room-methods/launch-breakout-rooms.service.d.ts +24 -0
- package/dist/lib/methods/co-host-methods/launch-co-host.service.d.ts +24 -0
- package/dist/lib/methods/co-host-methods/modify-co-host-settings.service.d.ts +44 -0
- package/dist/lib/methods/display-settings-methods/launch-display-settings.service.d.ts +22 -0
- package/dist/lib/methods/display-settings-methods/modify-display-settings.service.d.ts +75 -0
- package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +24 -0
- package/dist/lib/methods/exit-methods/launch-confirm-exit.service.d.ts +20 -0
- package/dist/lib/methods/media-settings-methods/launch-media-settings.service.d.ts +35 -0
- package/dist/lib/methods/menu-methods/launch-menu-modal.service.d.ts +22 -0
- package/dist/lib/methods/message-methods/launch-messages.service.d.ts +22 -0
- package/dist/lib/methods/message-methods/send-message.service.d.ts +49 -0
- package/dist/lib/methods/participants-methods/launch-participants.service.d.ts +24 -0
- package/dist/lib/methods/participants-methods/message-participants.service.d.ts +46 -0
- package/dist/lib/methods/participants-methods/mute-participants.service.d.ts +39 -0
- package/dist/lib/methods/participants-methods/remove-participants.service.d.ts +45 -0
- package/dist/lib/methods/polls-methods/handle-create-poll.service.d.ts +38 -0
- package/dist/lib/methods/polls-methods/handle-end-poll.service.d.ts +32 -0
- package/dist/lib/methods/polls-methods/handle-vote-poll.service.d.ts +34 -0
- package/dist/lib/methods/polls-methods/launch-poll.service.d.ts +20 -0
- package/dist/lib/methods/polls-methods/poll-updated.service.d.ts +31 -0
- package/dist/lib/methods/recording-methods/check-pause-state.service.d.ts +24 -0
- package/dist/lib/methods/recording-methods/check-resume-state.service.d.ts +22 -0
- package/dist/lib/methods/recording-methods/confirm-recording.service.d.ts +63 -0
- package/dist/lib/methods/recording-methods/launch-recording.service.d.ts +43 -0
- package/dist/lib/methods/recording-methods/record-pause-timer.service.d.ts +27 -0
- package/dist/lib/methods/recording-methods/record-resume-timer.service.d.ts +44 -0
- package/dist/lib/methods/recording-methods/record-start-timer.service.d.ts +45 -0
- package/dist/lib/methods/recording-methods/record-update-timer.service.d.ts +32 -0
- package/dist/lib/methods/recording-methods/start-recording.service.d.ts +50 -0
- package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +38 -0
- package/dist/lib/methods/recording-methods/update-recording.service.d.ts +48 -0
- package/dist/lib/methods/requests-methods/launch-requests.service.d.ts +25 -0
- package/dist/lib/methods/requests-methods/respond-to-requests.service.d.ts +39 -0
- package/dist/lib/methods/settings-methods/launch-settings.service.d.ts +25 -0
- package/dist/lib/methods/settings-methods/modify-settings.service.d.ts +42 -0
- package/dist/lib/methods/stream-methods/click-audio.service.d.ts +97 -0
- package/dist/lib/methods/stream-methods/click-chat.service.d.ts +31 -0
- package/dist/lib/methods/stream-methods/click-screen-share.service.d.ts +68 -0
- package/dist/lib/methods/stream-methods/click-video.service.d.ts +88 -0
- package/dist/lib/methods/stream-methods/switch-audio.service.d.ts +47 -0
- package/dist/lib/methods/stream-methods/switch-video-alt.service.d.ts +50 -0
- package/dist/lib/methods/stream-methods/switch-video.service.d.ts +56 -0
- package/dist/lib/methods/utils/format-number.service.d.ts +26 -14
- package/dist/lib/methods/utils/generate-random-messages.service.d.ts +33 -0
- package/dist/lib/methods/utils/generate-random-participants.service.d.ts +27 -0
- package/dist/lib/methods/utils/generate-random-polls.service.d.ts +26 -0
- package/dist/lib/methods/utils/generate-random-request-list.service.d.ts +36 -0
- package/dist/lib/methods/utils/generate-random-waiting-room-list.service.d.ts +21 -0
- package/dist/lib/methods/utils/get-modal-position.util.d.ts +13 -3
- package/dist/lib/methods/utils/get-overlay-position.util.d.ts +13 -3
- package/dist/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.d.ts +37 -0
- package/dist/lib/methods/utils/mini-audio-player/mini-audio-player.component.d.ts +55 -0
- package/dist/lib/methods/utils/producer/a-params.service.d.ts +37 -0
- package/dist/lib/methods/utils/producer/h-params.service.d.ts +50 -0
- package/dist/lib/methods/utils/producer/screen-params.service.d.ts +37 -0
- package/dist/lib/methods/utils/producer/v-params.service.d.ts +50 -0
- package/dist/lib/methods/utils/producer/video-capture-constraints.service.d.ts +46 -0
- package/dist/lib/methods/utils/sleep.util.d.ts +9 -3
- package/dist/lib/methods/utils/sound-player.service.d.ts +21 -0
- package/dist/lib/methods/utils/validate-alphanumeric.service.d.ts +16 -0
- package/dist/lib/methods/waiting-methods/launch-waiting.service.d.ts +18 -0
- package/dist/lib/methods/waiting-methods/respond-to-waiting.service.d.ts +29 -0
- package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +29 -0
- package/dist/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.d.ts +20 -0
- package/dist/lib/producer-client/producer-client-emits/create-device-client.service.d.ts +23 -0
- package/dist/lib/producer-client/producer-client-emits/join-room-client.service.d.ts +31 -0
- package/dist/lib/producer-client/producer-client-emits/update-room-parameters-client.service.d.ts +44 -0
- package/dist/lib/producers/producer-emits/join-con-room.service.d.ts +38 -0
- package/dist/lib/producers/producer-emits/join-room.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +73 -0
- package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +71 -0
- package/dist/lib/producers/socket-receive-methods/all-waiting-room-members.service.d.ts +27 -0
- package/dist/lib/producers/socket-receive-methods/ban-participant.service.d.ts +36 -0
- package/dist/lib/producers/socket-receive-methods/control-media-host.service.d.ts +37 -0
- package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +24 -0
- package/dist/lib/producers/socket-receive-methods/disconnect.service.d.ts +26 -0
- package/dist/lib/producers/socket-receive-methods/get-domains.service.d.ts +24 -9
- package/dist/lib/producers/socket-receive-methods/host-request-response.service.d.ts +31 -48
- package/dist/lib/producers/socket-receive-methods/meeting-ended.service.d.ts +29 -0
- package/dist/lib/producers/socket-receive-methods/meeting-still-there.service.d.ts +23 -0
- package/dist/lib/producers/socket-receive-methods/meeting-time-remaining.service.d.ts +27 -0
- package/dist/lib/producers/socket-receive-methods/participant-requested.service.d.ts +31 -0
- package/dist/lib/producers/socket-receive-methods/person-joined.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-closed.service.d.ts +61 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-paused.service.d.ts +62 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-resumed.service.d.ts +45 -0
- package/dist/lib/producers/socket-receive-methods/re-initiate-recording.service.d.ts +29 -0
- package/dist/lib/producers/socket-receive-methods/receive-message.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/recording-notice.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/room-record-params.service.d.ts +62 -0
- package/dist/lib/producers/socket-receive-methods/screen-producer-id.service.d.ts +41 -0
- package/dist/lib/producers/socket-receive-methods/start-records.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/stopped-recording.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/time-left-recording.service.d.ts +21 -0
- package/dist/lib/producers/socket-receive-methods/update-consuming-domains.service.d.ts +42 -0
- package/dist/lib/producers/socket-receive-methods/update-media-settings.service.d.ts +30 -0
- package/dist/lib/producers/socket-receive-methods/updated-co-host.service.d.ts +40 -0
- package/dist/lib/producers/socket-receive-methods/user-waiting.service.d.ts +14 -40
- package/dist/lib/sockets/socket-manager.service.d.ts +40 -0
- package/package.json +11 -2
|
@@ -3,6 +3,55 @@ import { MiniCard } from '../components/display-components/mini-card/mini-card.c
|
|
|
3
3
|
import { VideoCard } from '../components/display-components/video-card/video-card.component';
|
|
4
4
|
import { AudioCard } from '../components/display-components/audio-card/audio-card.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* @service AddVideosGrid
|
|
8
|
+
* @description Service to manage and update video and audio components on a grid in the user interface. This service helps organize and configure participants and streams into different grid layouts.
|
|
9
|
+
*
|
|
10
|
+
* @method addVideosGrid
|
|
11
|
+
* Adds video and audio cards to the main and alternate grids based on the parameters and configuration options provided.
|
|
12
|
+
*
|
|
13
|
+
* @param {AddVideosGridOptions} options - Configuration options for setting up the grid.
|
|
14
|
+
* @param {(Stream | Participant)[]} options.mainGridStreams - Streams or participants to display on the main grid.
|
|
15
|
+
* @param {(Stream | Participant)[]} options.altGridStreams - Streams or participants to display on the alternate grid.
|
|
16
|
+
* @param {number} options.numtoadd - The number of items to add to the grid.
|
|
17
|
+
* @param {number} options.numRows - The number of rows for the main grid.
|
|
18
|
+
* @param {number} options.numCols - The number of columns for the main grid.
|
|
19
|
+
* @param {number} options.actualRows - The actual rows currently displayed.
|
|
20
|
+
* @param {number} options.lastrowcols - The number of columns in the last row of the grid.
|
|
21
|
+
* @param {boolean} options.removeAltGrid - Whether to remove the alternate grid layout.
|
|
22
|
+
* @param {AddVideosGridParameters} options.parameters - Additional parameters for updating the grid, controlling appearance, and handling events.
|
|
23
|
+
*
|
|
24
|
+
* @returns {Promise<void>} A promise that resolves once the grid layout is updated.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* await addVideosGridService.addVideosGrid({
|
|
29
|
+
* mainGridStreams: [...],
|
|
30
|
+
* altGridStreams: [...],
|
|
31
|
+
* numtoadd: 4,
|
|
32
|
+
* numRows: 2,
|
|
33
|
+
* numCols: 2,
|
|
34
|
+
* actualRows: 2,
|
|
35
|
+
* lastrowcols: 2,
|
|
36
|
+
* removeAltGrid: false,
|
|
37
|
+
* parameters: {
|
|
38
|
+
* eventType: 'webinar',
|
|
39
|
+
* updateAddAltGrid: (value) => {},
|
|
40
|
+
* ref_participants: participantsList,
|
|
41
|
+
* islevel: '1',
|
|
42
|
+
* videoAlreadyOn: true,
|
|
43
|
+
* localStreamVideo: localStream,
|
|
44
|
+
* keepBackground: true,
|
|
45
|
+
* virtualStream: virtualStream,
|
|
46
|
+
* forceFullDisplay: false,
|
|
47
|
+
* otherGridStreams: otherStreamsArray,
|
|
48
|
+
* updateOtherGridStreams: (newStreams) => {},
|
|
49
|
+
* updateMiniCardsGrid: (params) => {},
|
|
50
|
+
* getUpdatedAllParams: () => ({ /* updated parameters * / }),
|
|
51
|
+
* },
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
6
55
|
export class AddVideosGrid {
|
|
7
56
|
addVideosGrid = async ({ mainGridStreams, altGridStreams, numtoadd, numRows, numCols, actualRows, lastrowcols, removeAltGrid, parameters, }) => {
|
|
8
57
|
let { getUpdatedAllParams } = parameters;
|
|
@@ -293,4 +342,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
293
342
|
providedIn: 'root',
|
|
294
343
|
}]
|
|
295
344
|
}] });
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXZpZGVvcy1ncmlkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29uc3VtZXJzL2FkZC12aWRlb3MtZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7O0FBa0Q3RixNQUFNLE9BQU8sYUFBYTtJQUN4QixhQUFhLEdBQUcsS0FBSyxFQUFFLEVBQ3JCLGVBQWUsRUFDZixjQUFjLEVBQ2QsUUFBUSxFQUNSLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFdBQVcsRUFDWCxhQUFhLEVBQ2IsVUFBVSxHQUNXLEVBQWlCLEVBQUU7UUFDeEMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsVUFBVSxDQUFDO1FBQ3pDLFVBQVUsR0FBRyxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsbUJBQW1CLEVBQUUsRUFBRSxDQUFDO1FBRXpELElBQUksRUFDRixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLG1CQUFtQixHQUNwQixHQUFHLFVBQVUsQ0FBQztRQUVmLElBQUksYUFBYSxHQUF3QyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRSxJQUFJLFdBQWdCLENBQUM7UUFDckIsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFD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bnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWluaUNhcmQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rpc3BsYXktY29tcG9uZW50cy9taW5pLWNhcmQvbWluaS1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWRlb0NhcmQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rpc3BsYXktY29tcG9uZW50cy92aWRlby1jYXJkL3ZpZGVvLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEF1ZGlvQ2FyZCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGlzcGxheS1jb21wb25lbnRzL2F1ZGlvLWNhcmQvYXVkaW8tY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgUGFydGljaXBhbnQsXG4gIFN0cmVhbSxcbiAgVXBkYXRlTWluaUNhcmRzR3JpZFR5cGUsXG4gIFVwZGF0ZU1pbmlDYXJkc0dyaWRQYXJhbWV0ZXJzLFxuICBBdWRpb0NhcmRQYXJhbWV0ZXJzLFxuICBFdmVudFR5cGUsXG4gIEN1c3RvbU1lZGlhQ29tcG9uZW50LFxufSBmcm9tICcuLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFZpZGVvc0dyaWRQYXJhbWV0ZXJzXG4gIGV4dGVuZHMgVXBkYXRlTWluaUNhcmRzR3JpZFBhcmFtZXRlcnMsXG4gICAgQXVkaW9DYXJkUGFyYW1ldGVycyB7XG4gIGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICB1cGRhdGVBZGRBbHRHcmlkOiAoYWRkQWx0R3JpZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgcmVmX3BhcnRpY2lwYW50czogUGFydGljaXBhbnRbXTtcbiAgaXNsZXZlbDogc3RyaW5nO1xuICB2aWRlb0FscmVhZHlPbjogYm9vbGVhbjtcbiAgbG9jYWxTdHJlYW1WaWRlbzogTWVkaWFTdHJlYW0gfCBudWxsO1xuICBrZWVwQmFja2dyb3VuZDogYm9vbGVhbjtcbiAgdmlydHVhbFN0cmVhbTogTWVkaWFTdHJlYW0gfCBudWxsO1xuICBmb3JjZUZ1bGxEaXNwbGF5OiBib29sZWFuO1xuICBvdGhlckdyaWRTdHJlYW1zOiBDdXN0b21NZWRpYUNvbXBvbmVudFtdW107XG4gIHVwZGF0ZU90aGVyR3JpZFN0cmVhbXM6IChvdGhlckdyaWRTdHJlYW1zOiBDdXN0b21NZWRpYUNvbXBvbmVudFtdW10pID0+IHZvaWQ7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIHVwZGF0ZU1pbmlDYXJkc0dyaWQ6IFVwZGF0ZU1pbmlDYXJkc0dyaWRUeXBlO1xuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBBZGRWaWRlb3NHcmlkUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFZpZGVvc0dyaWRPcHRpb25zIHtcbiAgbWFpbkdyaWRTdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW107XG4gIGFsdEdyaWRTdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW107XG4gIG51bXRvYWRkOiBudW1iZXI7XG4gIG51bVJvd3M6IG51bWJlcjtcbiAgbnVtQ29sczogbnVtYmVyO1xuICBhY3R1YWxSb3dzOiBudW1iZXI7XG4gIGxhc3Ryb3djb2xzOiBudW1iZXI7XG4gIHJlbW92ZUFsdEdyaWQ6IGJvb2xlYW47XG4gIHBhcmFtZXRlcnM6IEFkZFZpZGVvc0dyaWRQYXJhbWV0ZXJzO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBBZGRWaWRlb3NHcmlkVHlwZSA9IChvcHRpb25zOiBBZGRWaWRlb3NHcmlkT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFkZFZpZGVvc0dyaWQge1xuICBhZGRWaWRlb3NHcmlkID0gYXN5bmMgKHtcbiAgICBtYWluR3JpZFN0cmVhbXMsXG4gICAgYWx0R3JpZFN0cmVhbXMsXG4gICAgbnVtdG9hZGQsXG4gICAgbnVtUm93cyxcbiAgICBudW1Db2xzLFxuICAgIGFjdHVhbFJvd3MsXG4gICAgbGFzdHJvd2NvbHMsXG4gICAgcmVtb3ZlQWx0R3JpZCxcbiAgICBwYXJhbWV0ZXJzLFxuICB9OiBBZGRWaWRlb3NHcmlkT3B0aW9ucyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGxldCB7IGdldFVwZGF0ZWRBbGxQYXJhbXMgfSA9IHBhcmFtZXRlcnM7XG4gICAgcGFyYW1ldGVycyA9IHsgLi4ucGFyYW1ldGVycywgLi4uZ2V0VXBkYXRlZEFsbFBhcmFtcygpIH07XG5cbiAgICBsZXQge1xuICAgICAgZXZlbnRUeXBlLFxuICAgICAgdXBkYXRlQWRkQWx0R3JpZCxcbiAgICAgIHJlZl9wYXJ0aWNpcGFudHMsXG4gICAgICBpc2xldmVsLFxuICAgICAgdmlkZW9BbHJlYWR5T24sXG4gICAgICBsb2NhbFN0cmVhbVZpZGVvLFxuICAgICAga2VlcEJhY2tncm91bmQsXG4gICAgICB2aXJ0dWFsU3RyZWFtLFxuICAgICAgZm9yY2VGdWxsRGlzcGxheSxcbiAgICAgIG90aGVyR3JpZFN0cmVhbXMsXG4gICAgICB1cGRhdGVPdGhlckdyaWRTdHJlYW1zLFxuICAgICAgdXBkYXRlTWluaUNhcmRzR3JpZCxcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIGxldCBuZXdDb21wb25lbnRzOiB7IGNvbXBvbmVudDogYW55OyBpbnB1dHM6IGFueSB9W11bXSA9IFtbXSwgW11dO1xuICAgIGxldCBwYXJ0aWNpcGFudDogYW55O1xuICAgIGxldCByZW1vdGVQcm9kdWNlcklkID0gJyc7XG4gICAgbGV0IHBhcnRpY2lwYW50XyA9IG51bGw7XG5cbiAgICBudW10b2FkZCA9IG1haW5HcmlkU3RyZWFtcy5sZW5ndGg7XG5cbiAgICBpZiAocmVtb3ZlQWx0R3JpZCkge1xuICAgICAgdXBkYXRlQWRkQWx0R3JpZChmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHBhcnRpY2lwYW50cyB0byB0aGUgbWFpbiBncmlkXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW10b2FkZDsgaSsrKSB7XG4gICAgICBwYXJ0aWNpcGFudCA9IG1haW5HcmlkU3RyZWFtc1tpXTtcbiAgICAgIHJlbW90ZVByb2R1Y2VySWQgPSBwYXJ0aWNpcGFudC5wcm9kdWNlcklkO1xuXG4gICAgICBsZXQgcHNldWRvTmFtZSA9ICFyZW1vdGVQcm9kdWNlcklkIHx8IHJlbW90ZVByb2R1Y2VySWQgPT09ICcnO1xuXG4gICAgICBpZiAocHNldWRvTmFtZSkge1xuICAgICAgICBwYXJ0aWNpcGFudF8gPSBwYXJ0aWNpcGFudDtcbiAgICAgICAgcmVtb3RlUHJvZHVjZXJJZCA9IGF3YWl0IHBhcnRpY2lwYW50Lm5hbWU7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJ0aWNpcGFudCwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgIHBhcnRpY2lwYW50LmF1ZGlvSUQgIT0gbnVsbCAmJlxuICAgICAgICAgIHBhcnRpY2lwYW50LmF1ZGlvSUQgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIG5ld0NvbXBvbmVudHNbMF0ucHVzaCh7XG4gICAgICAgICAgICBjb21wb25lbnQ6IEF1ZGlvQ2FyZCxcbiAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICBuYW1lOiBwYXJ0aWNpcGFudC5uYW1lLFxuICAgICAgICAgICAgICBiYXJDb2xvcjogJ3JlZCcsXG4gICAgICAgICAgICAgIHRleHRDb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgY3VzdG9tU3R5bGU6IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY29udHJvbHNQb3NpdGlvbjogJ3RvcExlZnQnLFxuICAgICAgICAgICAgICBpbmZvUG9zaXRpb246ICd0b3BSaWdodCcsXG4gICAgICAgICAgICAgIHNob3dXYXZlZm9ybTogdHJ1ZSxcbiAgICAgICAgICAgICAgcm91bmRlZEltYWdlOiB0cnVlLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgIHNob3dDb250cm9sczogZXZlbnRUeXBlICE9PSAnY2hhdCcsXG4gICAgICAgICAgICAgIHBhcnRpY2lwYW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdDb21wb25lbnRzWzBdLnB1c2goe1xuICAgICAgICAgICAgY29tcG9uZW50OiBNaW5pQ2FyZCxcbiAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICBpbml0aWFsczogcGFydGljaXBhbnQubmFtZSxcbiAgICAgICAgICAgICAgZm9udFNpemU6IDIwLFxuICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICBib3JkZXI6IGV2ZW50VHlwZSAhPT0gJ2Jyb2FkY2FzdCcgPyAnMnB4IHNvbGlkIGJsYWNrJyA6ICcwcHggc29saWQgYmxhY2snLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlbW90ZVByb2R1Y2VySWQgPT09ICd5b3V5b3UnIHx8IHJlbW90ZVByb2R1Y2VySWQgPT09ICd5b3V5b3V5b3UnKSB7XG4gICAgICAgICAgbGV0IG5hbWUgPSAnWW91JztcbiAgICAgICAgICBpZiAoaXNsZXZlbCA9PT0gJzInICYmIGV2ZW50VHlwZSAhPT0gJ2NoYXQnKSB7XG4gICAgICAgICAgICBuYW1lID0gJ1lvdSAoSG9zdCknO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdmlkZW9BbHJlYWR5T24pIHtcbiAgICAgICAgICAgIG5hbWUgPSAnWW91JztcbiAgICAgICAgICAgIGlmIChpc2xldmVsID09ICcyJyAmJiBldmVudFR5cGUgIT0gJ2NoYXQnKSB7XG4gICAgICAgICAgICAgIG5hbWUgPSAnWW91IChIb3N0KSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5ld0NvbXBvbmVudHNbMF0ucHVzaCh7XG4gICAgICAgICAgICAgIGNvbXBvbmVudDogTWluaUNhcmQsXG4gICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgIGluaXRpYWxzOiBuYW1lLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyMCxcbiAgICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50ID0ge1xuICAgICAgICAgICAgICBpZDogJ3lvdXlvdXlvdScsXG4gICAgICAgICAgICAgIHN0cmVhbToga2VlcEJhY2tncm91bmQgJiYgdmlydHVhbFN0cmVhbSA/IHZpcnR1YWxTdHJlYW0gOiBsb2NhbFN0cmVhbVZpZGVvLFxuICAgICAgICAgICAgICBuYW1lOiAneW91eW91eW91JyxcbiAgICAgICAgICAgICAgbXV0ZWQ6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcGFydGljaXBhbnRfID0ge1xuICAgICAgICAgICAgICBpZDogJ3lvdXlvdScsXG4gICAgICAgICAgICAgIHZpZGVvSUQ6ICd5b3V5b3UnLFxuICAgICAgICAgICAgICBuYW1lOiAneW91eW91eW91JyxcbiAgICAgICAgICAgICAgc3RyZWFtOiBrZWVwQmFja2dyb3VuZCAmJiB2aXJ0dWFsU3RyZWFtID8gdmlydHVhbFN0cmVhbSA6IGxvY2FsU3RyZWFtVmlkZW8sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVtb3RlUHJvZHVjZXJJZCA9ICd5b3V5b3V5b3UnO1xuXG4gICAgICAgICAgICBuZXdDb21wb25lbnRzWzBdLnB1c2goe1xuICAgICAgICAgICAgICBjb21wb25lbnQ6IFZpZGVvQ2FyZCxcbiAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgdmlkZW9TdHJlYW06IHBhcnRpY2lwYW50LnN0cmVhbSA/IHBhcnRpY2lwYW50LnN0cmVhbSA6IG51bGwsXG4gICAgICAgICAgICAgICAgcmVtb3RlUHJvZHVjZXJJZDogcGFydGljaXBhbnQuc3RyZWFtID8gcGFydGljaXBhbnQuc3RyZWFtLmlkIDogbnVsbCxcbiAgICAgICAgICAgICAgICBldmVudFR5cGUsXG4gICAgICAgICAgICAgICAgZm9yY2VGdWxsRGlzcGxheTogZXZlbnRUeXBlID09ICd3ZWJpbmFyJyA/IGZhbHNlIDogZm9yY2VGdWxsRGlzcGxheSxcbiAgICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50OiBwYXJ0aWNpcGFudCxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgc2hvd0NvbnRyb2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzaG93SW5mbzogZmFsc2UsXG4gICAgICAgICAgICAgICAgbmFtZTogcGFydGljaXBhbnQubmFtZSxcbiAgICAgICAgICAgICAgICBkb01pcnJvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcnRpY2lwYW50XyA9IHJlZl9wYXJ0aWNpcGFudHMuZmluZCgob2JqOiBhbnkpID0+IG9iai52aWRlb0lEID09PSByZW1vdGVQcm9kdWNlcklkKTtcbiAgICAgICAgICBpZiAocGFydGljaXBhbnRfKSB7XG4gICAgICAgICAgICBuZXdDb21wb25lbnRzWzBdLnB1c2goe1xuICAgICAgICAgICAgICBjb21wb25lbnQ6IFZpZGVvQ2FyZCxcbiAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgdmlkZW9TdHJlYW06IHBhcnRpY2lwYW50LnN0cmVhbSA/IHBhcnRpY2lwYW50LnN0cmVhbSA6IG51bGwsXG4gICAgICAgICAgICAgICAgcmVtb3RlUHJvZHVjZXJJZCxcbiAgICAgICAgICAgICAgICBldmVudFR5cGUsXG4gICAgICAgICAgICAgICAgZm9yY2VGdWxsRGlzcGxheSxcbiAgICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50OiBwYXJ0aWNpcGFudF8sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgIHNob3dDb250cm9sczogZXZlbnRUeXBlICE9PSAnY2hhdCcsXG4gICAgICAgICAgICAgICAgc2hvd0luZm86IHRydWUsXG4gICAgICAgICAgICAgICAgbmFtZTogcGFydGljaXBhbnRfLm5hbWUsXG4gICAgICAgICAgICAgICAgZG9NaXJyb3I6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGkgPT09IG51bXRvYWRkIC0gMSkge1xuICAgICAgICBvdGhlckdyaWRTdHJlYW1zWzBdID0gbmV3Q29tcG9uZW50c1swXTtcblxuICAgICAgICBhd2FpdCB1cGRhdGVNaW5pQ2FyZHNHcmlkKHtcbiAgICAgICAgICByb3dzOiBudW1Sb3dzLFxuICAgICAgICAgIGNvbHM6IG51bUNvbHMsXG4gICAgICAgICAgZGVmYWw6IHRydWUsXG4gICAgICAgICAgYWN0dWFsUm93czogYWN0dWFsUm93cyxcbiAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICB9KTtcblxuICAgICAgICB1cGRhdGVPdGhlckdyaWRTdHJlYW1zKG90aGVyR3JpZFN0cmVhbXMpO1xuICAgICAgICBhd2FpdCB1cGRhdGVNaW5pQ2FyZHNHcmlkKHtcbiAgICAgICAgICByb3dzOiBudW1Sb3dzLFxuICAgICAgICAgIGNvbHM6IG51bUNvbHMsXG4gICAgICAgICAgZGVmYWw6IHRydWUsXG4gICAgICAgICAgYWN0dWFsUm93cyxcbiAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGFsdGVybmF0ZSBncmlkIHN0cmVhbXNcbiAgICBpZiAoIXJlbW92ZUFsdEdyaWQpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWx0R3JpZFN0cmVhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcGFydGljaXBhbnQgPSBhbHRHcmlkU3RyZWFtc1tpXTtcbiAgICAgICAgcmVtb3RlUHJvZHVjZXJJZCA9IHBhcnRpY2lwYW50LnByb2R1Y2VySWQ7XG5cbiAgICAgICAgbGV0IHBhcnRpY2lwYW50XztcbiAgICAgICAgbGV0IHBzZXVkb05hbWUgPSBmYWxzZTtcblxuICAgICAgICAvL2NoZWNrIGlmIHRoZXJlIGlzIC5uYW1lIGluIHRoZSBwYXJ0aWNpcGFudCBvYmplY3QgYW5kIGlmIGl0IGlzIG51bGxcbiAgICAgICAgaWYgKFxuICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJ0aWNpcGFudCwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgIHBhcnRpY2lwYW50LnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgIHBhcnRpY2lwYW50LnByb2R1Y2VySWQgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIC8vYWN0dWFsIHZpZGVvXG4gICAgICAgICAgcHNldWRvTmFtZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBzZXVkb05hbWUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBzZXVkb05hbWUpIHtcbiAgICAgICAgICBwYXJ0aWNpcGFudF8gPSBwYXJ0aWNpcGFudDtcbiAgICAgICAgICByZW1vdGVQcm9kdWNlcklkID0gYXdhaXQgcGFydGljaXBhbnQubmFtZTtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJ0aWNpcGFudCwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgICAgcGFydGljaXBhbnQuYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICBwYXJ0aWNpcGFudC5hdWRpb0lEICE9PSAnJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgbmV3Q29tcG9uZW50c1sxXS5wdXNoKHtcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBBdWRpb0NhcmQsXG4gICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgIG5hbWU6IHBhcnRpY2lwYW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgYmFyQ29sb3I6ICdyZWQnLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNvbnRyb2xzUG9zaXRpb246ICd0b3BMZWZ0JyxcbiAgICAgICAgICAgICAgICBpbmZvUG9zaXRpb246ICd0b3BSaWdodCcsXG4gICAgICAgICAgICAgICAgc2hvd1dhdmVmb3JtOiB0cnVlLFxuICAgICAgICAgICAgICAgIHJvdW5kZWRJbWFnZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICBzaG93Q29udHJvbHM6IGV2ZW50VHlwZSAhPT0gJ2NoYXQnLFxuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0NvbXBvbmVudHNbMV0ucHVzaCh7XG4gICAgICAgICAgICAgIGNvbXBvbmVudDogTWluaUNhcmQsXG4gICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgIGluaXRpYWxzOiBwYXJ0aWNpcGFudC5uYW1lLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyMCxcbiAgICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcnRpY2lwYW50XyA9IHJlZl9wYXJ0aWNpcGFudHMuZmluZCgob2JqOiBhbnkpID0+IG9iai52aWRlb0lEID09PSByZW1vdGVQcm9kdWNlcklkKTtcbiAgICAgICAgICBuZXdDb21wb25lbnRzWzFdLnB1c2goe1xuICAgICAgICAgICAgY29tcG9uZW50OiBWaWRlb0NhcmQsXG4gICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgdmlkZW9TdHJlYW06IHBhcnRpY2lwYW50XyAmJiBwYXJ0aWNpcGFudF9bJ3N0cmVhbSddID8gcGFydGljaXBhbnRfWydzdHJlYW0nXSA6IG51bGwsXG4gICAgICAgICAgICAgIHJlbW90ZVByb2R1Y2VySWQsXG4gICAgICAgICAgICAgIGV2ZW50VHlwZSxcbiAgICAgICAgICAgICAgZm9yY2VGdWxsRGlzcGxheSxcbiAgICAgICAgICAgICAgY3VzdG9tU3R5bGU6IHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IGV2ZW50VHlwZSAhPT0gJ2Jyb2FkY2FzdCcgPyAnMnB4IHNvbGlkIGJsYWNrJyA6ICcwcHggc29saWQgYmxhY2snLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBwYXJ0aWNpcGFudDogcGFydGljaXBhbnRfLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgIHNob3dDb250cm9sczogZXZlbnRUeXBlICE9PSAnY2hhdCcsXG4gICAgICAgICAgICAgIHNob3dJbmZvOiB0cnVlLFxuICAgICAgICAgICAgICBuYW1lOiBwYXJ0aWNpcGFudC5uYW1lLFxuICAgICAgICAgICAgICBkb01pcnJvcjogZmFsc2UsXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGkgPT09IG51bXRvYWRkIC0gMSkge1xuICAgICAgICAgIG90aGVyR3JpZFN0cmVhbXNbMV0gPSBuZXdDb21wb25lbnRzWzFdO1xuXG4gICAgICAgICAgYXdhaXQgdXBkYXRlTWluaUNhcmRzR3JpZCh7XG4gICAgICAgICAgICByb3dzOiAxLFxuICAgICAgICAgICAgY29sczogbGFzdHJvd2NvbHMsXG4gICAgICAgICAgICBkZWZhbDogZmFsc2UsXG4gICAgICAgICAgICBhY3R1YWxSb3dzLFxuICAgICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHVwZGF0ZU90aGVyR3JpZFN0cmVhbXMob3RoZXJHcmlkU3RyZWFtcyk7XG4gICAgICAgICAgYXdhaXQgdXBkYXRlTWluaUNhcmRzR3JpZCh7XG4gICAgICAgICAgICByb3dzOiAxLFxuICAgICAgICAgICAgY29sczogbGFzdHJvd2NvbHMsXG4gICAgICAgICAgICBkZWZhbDogZmFsc2UsXG4gICAgICAgICAgICBhY3R1YWxSb3dzLFxuICAgICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGVBZGRBbHRHcmlkKGZhbHNlKTtcbiAgICAgIG90aGVyR3JpZFN0cmVhbXNbMV0gPSBbXTtcblxuICAgICAgYXdhaXQgdXBkYXRlTWluaUNhcmRzR3JpZCh7XG4gICAgICAgIHJvd3M6IDAsXG4gICAgICAgIGNvbHM6IDAsXG4gICAgICAgIGRlZmFsOiBmYWxzZSxcbiAgICAgICAgYWN0dWFsUm93czogYWN0dWFsUm93cyxcbiAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgIH0pO1xuXG4gICAgICB1cGRhdGVPdGhlckdyaWRTdHJlYW1zKG90aGVyR3JpZFN0cmVhbXMpO1xuICAgICAgYXdhaXQgdXBkYXRlTWluaUNhcmRzR3JpZCh7XG4gICAgICAgIHJvd3M6IDAsXG4gICAgICAgIGNvbHM6IDAsXG4gICAgICAgIGRlZmFsOiBmYWxzZSxcbiAgICAgICAgYWN0dWFsUm93cyxcbiAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXZpZGVvcy1ncmlkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29uc3VtZXJzL2FkZC12aWRlb3MtZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7O0FBK0M3Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0RHO0FBTUgsTUFBTSxPQUFPLGFBQWE7SUFDeEIsYUFBYSxHQUFHLEtBQUssRUFBRSxFQUNyQixlQUFlLEVBQ2YsY0FBYyxFQUNkLFFBQVEsRUFDUixPQUFPLEVBQ1AsT0FBTyxFQUNQLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxFQUNiLFVBQVUsR0FDVyxFQUFpQixFQUFFO1FBQ3hDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUN6QyxVQUFVLEdBQUcsRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztRQUV6RCxJQUFJLEVBQ0YsU0FBUyxFQUNULGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsR0FBRyxVQUFVLENBQUM7UUFFZixJQUFJLGFBQWEsR0FBd0MsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7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QUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1pbmlDYXJkIH0gZnJvbSAnLi4vY29tcG9uZW50cy9kaXNwbGF5LWNvbXBvbmVudHMvbWluaS1jYXJkL21pbmktY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlkZW9DYXJkIH0gZnJvbSAnLi4vY29tcG9uZW50cy9kaXNwbGF5LWNvbXBvbmVudHMvdmlkZW8tY2FyZC92aWRlby1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdWRpb0NhcmQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rpc3BsYXktY29tcG9uZW50cy9hdWRpby1jYXJkL2F1ZGlvLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIFBhcnRpY2lwYW50LFxuICBTdHJlYW0sXG4gIFVwZGF0ZU1pbmlDYXJkc0dyaWRUeXBlLFxuICBVcGRhdGVNaW5pQ2FyZHNHcmlkUGFyYW1ldGVycyxcbiAgQXVkaW9DYXJkUGFyYW1ldGVycyxcbiAgRXZlbnRUeXBlLFxuICBDdXN0b21NZWRpYUNvbXBvbmVudCxcbn0gZnJvbSAnLi4vQHR5cGVzL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBZGRWaWRlb3NHcmlkUGFyYW1ldGVyc1xuICBleHRlbmRzIFVwZGF0ZU1pbmlDYXJkc0dyaWRQYXJhbWV0ZXJzLFxuICAgIEF1ZGlvQ2FyZFBhcmFtZXRlcnMge1xuICBldmVudFR5cGU6IEV2ZW50VHlwZTtcbiAgdXBkYXRlQWRkQWx0R3JpZDogKGFkZEFsdEdyaWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHJlZl9wYXJ0aWNpcGFudHM6IFBhcnRpY2lwYW50W107XG4gIGlzbGV2ZWw6IHN0cmluZztcbiAgdmlkZW9BbHJlYWR5T246IGJvb2xlYW47XG4gIGxvY2FsU3RyZWFtVmlkZW86IE1lZGlhU3RyZWFtIHwgbnVsbDtcbiAga2VlcEJhY2tncm91bmQ6IGJvb2xlYW47XG4gIHZpcnR1YWxTdHJlYW06IE1lZGlhU3RyZWFtIHwgbnVsbDtcbiAgZm9yY2VGdWxsRGlzcGxheTogYm9vbGVhbjtcbiAgb3RoZXJHcmlkU3RyZWFtczogQ3VzdG9tTWVkaWFDb21wb25lbnRbXVtdO1xuICB1cGRhdGVPdGhlckdyaWRTdHJlYW1zOiAob3RoZXJHcmlkU3RyZWFtczogQ3VzdG9tTWVkaWFDb21wb25lbnRbXVtdKSA9PiB2b2lkO1xuXG4gIC8vIG1lZGlhc2Z1IGZ1bmN0aW9uc1xuICB1cGRhdGVNaW5pQ2FyZHNHcmlkOiBVcGRhdGVNaW5pQ2FyZHNHcmlkVHlwZTtcbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gQWRkVmlkZW9zR3JpZFBhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRWaWRlb3NHcmlkT3B0aW9ucyB7XG4gIG1haW5HcmlkU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdO1xuICBhbHRHcmlkU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdO1xuICBudW10b2FkZDogbnVtYmVyO1xuICBudW1Sb3dzOiBudW1iZXI7XG4gIG51bUNvbHM6IG51bWJlcjtcbiAgYWN0dWFsUm93czogbnVtYmVyO1xuICBsYXN0cm93Y29sczogbnVtYmVyO1xuICByZW1vdmVBbHRHcmlkOiBib29sZWFuO1xuICBwYXJhbWV0ZXJzOiBBZGRWaWRlb3NHcmlkUGFyYW1ldGVycztcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgQWRkVmlkZW9zR3JpZFR5cGUgPSAob3B0aW9uczogQWRkVmlkZW9zR3JpZE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogQHNlcnZpY2UgQWRkVmlkZW9zR3JpZFxuICogQGRlc2NyaXB0aW9uIFNlcnZpY2UgdG8gbWFuYWdlIGFuZCB1cGRhdGUgdmlkZW8gYW5kIGF1ZGlvIGNvbXBvbmVudHMgb24gYSBncmlkIGluIHRoZSB1c2VyIGludGVyZmFjZS4gVGhpcyBzZXJ2aWNlIGhlbHBzIG9yZ2FuaXplIGFuZCBjb25maWd1cmUgcGFydGljaXBhbnRzIGFuZCBzdHJlYW1zIGludG8gZGlmZmVyZW50IGdyaWQgbGF5b3V0cy5cbiAqXG4gKiBAbWV0aG9kIGFkZFZpZGVvc0dyaWRcbiAqIEFkZHMgdmlkZW8gYW5kIGF1ZGlvIGNhcmRzIHRvIHRoZSBtYWluIGFuZCBhbHRlcm5hdGUgZ3JpZHMgYmFzZWQgb24gdGhlIHBhcmFtZXRlcnMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0ge0FkZFZpZGVvc0dyaWRPcHRpb25zfSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBzZXR0aW5nIHVwIHRoZSBncmlkLlxuICogQHBhcmFtIHsoU3RyZWFtIHwgUGFydGljaXBhbnQpW119IG9wdGlvbnMubWFpbkdyaWRTdHJlYW1zIC0gU3RyZWFtcyBvciBwYXJ0aWNpcGFudHMgdG8gZGlzcGxheSBvbiB0aGUgbWFpbiBncmlkLlxuICogQHBhcmFtIHsoU3RyZWFtIHwgUGFydGljaXBhbnQpW119IG9wdGlvbnMuYWx0R3JpZFN0cmVhbXMgLSBTdHJlYW1zIG9yIHBhcnRpY2lwYW50cyB0byBkaXNwbGF5IG9uIHRoZSBhbHRlcm5hdGUgZ3JpZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLm51bXRvYWRkIC0gVGhlIG51bWJlciBvZiBpdGVtcyB0byBhZGQgdG8gdGhlIGdyaWQuXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5udW1Sb3dzIC0gVGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgbWFpbiBncmlkLlxuICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMubnVtQ29scyAtIFRoZSBudW1iZXIgb2YgY29sdW1ucyBmb3IgdGhlIG1haW4gZ3JpZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLmFjdHVhbFJvd3MgLSBUaGUgYWN0dWFsIHJvd3MgY3VycmVudGx5IGRpc3BsYXllZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLmxhc3Ryb3djb2xzIC0gVGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBsYXN0IHJvdyBvZiB0aGUgZ3JpZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5yZW1vdmVBbHRHcmlkIC0gV2hldGhlciB0byByZW1vdmUgdGhlIGFsdGVybmF0ZSBncmlkIGxheW91dC5cbiAqIEBwYXJhbSB7QWRkVmlkZW9zR3JpZFBhcmFtZXRlcnN9IG9wdGlvbnMucGFyYW1ldGVycyAtIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdXBkYXRpbmcgdGhlIGdyaWQsIGNvbnRyb2xsaW5nIGFwcGVhcmFuY2UsIGFuZCBoYW5kbGluZyBldmVudHMuXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGdyaWQgbGF5b3V0IGlzIHVwZGF0ZWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGF3YWl0IGFkZFZpZGVvc0dyaWRTZXJ2aWNlLmFkZFZpZGVvc0dyaWQoe1xuICogICBtYWluR3JpZFN0cmVhbXM6IFsuLi5dLFxuICogICBhbHRHcmlkU3RyZWFtczogWy4uLl0sXG4gKiAgIG51bXRvYWRkOiA0LFxuICogICBudW1Sb3dzOiAyLFxuICogICBudW1Db2xzOiAyLFxuICogICBhY3R1YWxSb3dzOiAyLFxuICogICBsYXN0cm93Y29sczogMixcbiAqICAgcmVtb3ZlQWx0R3JpZDogZmFsc2UsXG4gKiAgIHBhcmFtZXRlcnM6IHtcbiAqICAgICBldmVudFR5cGU6ICd3ZWJpbmFyJyxcbiAqICAgICB1cGRhdGVBZGRBbHRHcmlkOiAodmFsdWUpID0+IHt9LFxuICogICAgIHJlZl9wYXJ0aWNpcGFudHM6IHBhcnRpY2lwYW50c0xpc3QsXG4gKiAgICAgaXNsZXZlbDogJzEnLFxuICogICAgIHZpZGVvQWxyZWFkeU9uOiB0cnVlLFxuICogICAgIGxvY2FsU3RyZWFtVmlkZW86IGxvY2FsU3RyZWFtLFxuICogICAgIGtlZXBCYWNrZ3JvdW5kOiB0cnVlLFxuICogICAgIHZpcnR1YWxTdHJlYW06IHZpcnR1YWxTdHJlYW0sXG4gKiAgICAgZm9yY2VGdWxsRGlzcGxheTogZmFsc2UsXG4gKiAgICAgb3RoZXJHcmlkU3RyZWFtczogb3RoZXJTdHJlYW1zQXJyYXksXG4gKiAgICAgdXBkYXRlT3RoZXJHcmlkU3RyZWFtczogKG5ld1N0cmVhbXMpID0+IHt9LFxuICogICAgIHVwZGF0ZU1pbmlDYXJkc0dyaWQ6IChwYXJhbXMpID0+IHt9LFxuICogICAgIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+ICh7IC8qIHVwZGF0ZWQgcGFyYW1ldGVycyAqIC8gfSksXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFkZFZpZGVvc0dyaWQge1xuICBhZGRWaWRlb3NHcmlkID0gYXN5bmMgKHtcbiAgICBtYWluR3JpZFN0cmVhbXMsXG4gICAgYWx0R3JpZFN0cmVhbXMsXG4gICAgbnVtdG9hZGQsXG4gICAgbnVtUm93cyxcbiAgICBudW1Db2xzLFxuICAgIGFjdHVhbFJvd3MsXG4gICAgbGFzdHJvd2NvbHMsXG4gICAgcmVtb3ZlQWx0R3JpZCxcbiAgICBwYXJhbWV0ZXJzLFxuICB9OiBBZGRWaWRlb3NHcmlkT3B0aW9ucyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGxldCB7IGdldFVwZGF0ZWRBbGxQYXJhbXMgfSA9IHBhcmFtZXRlcnM7XG4gICAgcGFyYW1ldGVycyA9IHsgLi4ucGFyYW1ldGVycywgLi4uZ2V0VXBkYXRlZEFsbFBhcmFtcygpIH07XG5cbiAgICBsZXQge1xuICAgICAgZXZlbnRUeXBlLFxuICAgICAgdXBkYXRlQWRkQWx0R3JpZCxcbiAgICAgIHJlZl9wYXJ0aWNpcGFudHMsXG4gICAgICBpc2xldmVsLFxuICAgICAgdmlkZW9BbHJlYWR5T24sXG4gICAgICBsb2NhbFN0cmVhbVZpZGVvLFxuICAgICAga2VlcEJhY2tncm91bmQsXG4gICAgICB2aXJ0dWFsU3RyZWFtLFxuICAgICAgZm9yY2VGdWxsRGlzcGxheSxcbiAgICAgIG90aGVyR3JpZFN0cmVhbXMsXG4gICAgICB1cGRhdGVPdGhlckdyaWRTdHJlYW1zLFxuICAgICAgdXBkYXRlTWluaUNhcmRzR3JpZCxcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIGxldCBuZXdDb21wb25lbnRzOiB7IGNvbXBvbmVudDogYW55OyBpbnB1dHM6IGFueSB9W11bXSA9IFtbXSwgW11dO1xuICAgIGxldCBwYXJ0aWNpcGFudDogYW55O1xuICAgIGxldCByZW1vdGVQcm9kdWNlcklkID0gJyc7XG4gICAgbGV0IHBhcnRpY2lwYW50XyA9IG51bGw7XG5cbiAgICBudW10b2FkZCA9IG1haW5HcmlkU3RyZWFtcy5sZW5ndGg7XG5cbiAgICBpZiAocmVtb3ZlQWx0R3JpZCkge1xuICAgICAgdXBkYXRlQWRkQWx0R3JpZChmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHBhcnRpY2lwYW50cyB0byB0aGUgbWFpbiBncmlkXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW10b2FkZDsgaSsrKSB7XG4gICAgICBwYXJ0aWNpcGFudCA9IG1haW5HcmlkU3RyZWFtc1tpXTtcbiAgICAgIHJlbW90ZVByb2R1Y2VySWQgPSBwYXJ0aWNpcGFudC5wcm9kdWNlcklkO1xuXG4gICAgICBsZXQgcHNldWRvTmFtZSA9ICFyZW1vdGVQcm9kdWNlcklkIHx8IHJlbW90ZVByb2R1Y2VySWQgPT09ICcnO1xuXG4gICAgICBpZiAocHNldWRvTmFtZSkge1xuICAgICAgICBwYXJ0aWNpcGFudF8gPSBwYXJ0aWNpcGFudDtcbiAgICAgICAgcmVtb3RlUHJvZHVjZXJJZCA9IGF3YWl0IHBhcnRpY2lwYW50Lm5hbWU7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJ0aWNpcGFudCwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgIHBhcnRpY2lwYW50LmF1ZGlvSUQgIT0gbnVsbCAmJlxuICAgICAgICAgIHBhcnRpY2lwYW50LmF1ZGlvSUQgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIG5ld0NvbXBvbmVudHNbMF0ucHVzaCh7XG4gICAgICAgICAgICBjb21wb25lbnQ6IEF1ZGlvQ2FyZCxcbiAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICBuYW1lOiBwYXJ0aWNpcGFudC5uYW1lLFxuICAgICAgICAgICAgICBiYXJDb2xvcjogJ3JlZCcsXG4gICAgICAgICAgICAgIHRleHRDb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgY3VzdG9tU3R5bGU6IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY29udHJvbHNQb3NpdGlvbjogJ3RvcExlZnQnLFxuICAgICAgICAgICAgICBpbmZvUG9zaXRpb246ICd0b3BSaWdodCcsXG4gICAgICAgICAgICAgIHNob3dXYXZlZm9ybTogdHJ1ZSxcbiAgICAgICAgICAgICAgcm91bmRlZEltYWdlOiB0cnVlLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgIHNob3dDb250cm9sczogZXZlbnRUeXBlICE9PSAnY2hhdCcsXG4gICAgICAgICAgICAgIHBhcnRpY2lwYW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdDb21wb25lbnRzWzBdLnB1c2goe1xuICAgICAgICAgICAgY29tcG9uZW50OiBNaW5pQ2FyZCxcbiAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICBpbml0aWFsczogcGFydGljaXBhbnQubmFtZSxcbiAgICAgICAgICAgICAgZm9udFNpemU6IDIwLFxuICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICBib3JkZXI6IGV2ZW50VHlwZSAhPT0gJ2Jyb2FkY2FzdCcgPyAnMnB4IHNvbGlkIGJsYWNrJyA6ICcwcHggc29saWQgYmxhY2snLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlbW90ZVByb2R1Y2VySWQgPT09ICd5b3V5b3UnIHx8IHJlbW90ZVByb2R1Y2VySWQgPT09ICd5b3V5b3V5b3UnKSB7XG4gICAgICAgICAgbGV0IG5hbWUgPSAnWW91JztcbiAgICAgICAgICBpZiAoaXNsZXZlbCA9PT0gJzInICYmIGV2ZW50VHlwZSAhPT0gJ2NoYXQnKSB7XG4gICAgICAgICAgICBuYW1lID0gJ1lvdSAoSG9zdCknO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdmlkZW9BbHJlYWR5T24pIHtcbiAgICAgICAgICAgIG5hbWUgPSAnWW91JztcbiAgICAgICAgICAgIGlmIChpc2xldmVsID09ICcyJyAmJiBldmVudFR5cGUgIT0gJ2NoYXQnKSB7XG4gICAgICAgICAgICAgIG5hbWUgPSAnWW91IChIb3N0KSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5ld0NvbXBvbmVudHNbMF0ucHVzaCh7XG4gICAgICAgICAgICAgIGNvbXBvbmVudDogTWluaUNhcmQsXG4gICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgIGluaXRpYWxzOiBuYW1lLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyMCxcbiAgICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50ID0ge1xuICAgICAgICAgICAgICBpZDogJ3lvdXlvdXlvdScsXG4gICAgICAgICAgICAgIHN0cmVhbToga2VlcEJhY2tncm91bmQgJiYgdmlydHVhbFN0cmVhbSA/IHZpcnR1YWxTdHJlYW0gOiBsb2NhbFN0cmVhbVZpZGVvLFxuICAgICAgICAgICAgICBuYW1lOiAneW91eW91eW91JyxcbiAgICAgICAgICAgICAgbXV0ZWQ6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcGFydGljaXBhbnRfID0ge1xuICAgICAgICAgICAgICBpZDogJ3lvdXlvdScsXG4gICAgICAgICAgICAgIHZpZGVvSUQ6ICd5b3V5b3UnLFxuICAgICAgICAgICAgICBuYW1lOiAneW91eW91eW91JyxcbiAgICAgICAgICAgICAgc3RyZWFtOiBrZWVwQmFja2dyb3VuZCAmJiB2aXJ0dWFsU3RyZWFtID8gdmlydHVhbFN0cmVhbSA6IGxvY2FsU3RyZWFtVmlkZW8sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVtb3RlUHJvZHVjZXJJZCA9ICd5b3V5b3V5b3UnO1xuXG4gICAgICAgICAgICBuZXdDb21wb25lbnRzWzBdLnB1c2goe1xuICAgICAgICAgICAgICBjb21wb25lbnQ6IFZpZGVvQ2FyZCxcbiAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgdmlkZW9TdHJlYW06IHBhcnRpY2lwYW50LnN0cmVhbSA/IHBhcnRpY2lwYW50LnN0cmVhbSA6IG51bGwsXG4gICAgICAgICAgICAgICAgcmVtb3RlUHJvZHVjZXJJZDogcGFydGljaXBhbnQuc3RyZWFtID8gcGFydGljaXBhbnQuc3RyZWFtLmlkIDogbnVsbCxcbiAgICAgICAgICAgICAgICBldmVudFR5cGUsXG4gICAgICAgICAgICAgICAgZm9yY2VGdWxsRGlzcGxheTogZXZlbnRUeXBlID09ICd3ZWJpbmFyJyA/IGZhbHNlIDogZm9yY2VGdWxsRGlzcGxheSxcbiAgICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50OiBwYXJ0aWNpcGFudCxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgc2hvd0NvbnRyb2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzaG93SW5mbzogZmFsc2UsXG4gICAgICAgICAgICAgICAgbmFtZTogcGFydGljaXBhbnQubmFtZSxcbiAgICAgICAgICAgICAgICBkb01pcnJvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcnRpY2lwYW50XyA9IHJlZl9wYXJ0aWNpcGFudHMuZmluZCgob2JqOiBhbnkpID0+IG9iai52aWRlb0lEID09PSByZW1vdGVQcm9kdWNlcklkKTtcbiAgICAgICAgICBpZiAocGFydGljaXBhbnRfKSB7XG4gICAgICAgICAgICBuZXdDb21wb25lbnRzWzBdLnB1c2goe1xuICAgICAgICAgICAgICBjb21wb25lbnQ6IFZpZGVvQ2FyZCxcbiAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgdmlkZW9TdHJlYW06IHBhcnRpY2lwYW50LnN0cmVhbSA/IHBhcnRpY2lwYW50LnN0cmVhbSA6IG51bGwsXG4gICAgICAgICAgICAgICAgcmVtb3RlUHJvZHVjZXJJZCxcbiAgICAgICAgICAgICAgICBldmVudFR5cGUsXG4gICAgICAgICAgICAgICAgZm9yY2VGdWxsRGlzcGxheSxcbiAgICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50OiBwYXJ0aWNpcGFudF8sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgIHNob3dDb250cm9sczogZXZlbnRUeXBlICE9PSAnY2hhdCcsXG4gICAgICAgICAgICAgICAgc2hvd0luZm86IHRydWUsXG4gICAgICAgICAgICAgICAgbmFtZTogcGFydGljaXBhbnRfLm5hbWUsXG4gICAgICAgICAgICAgICAgZG9NaXJyb3I6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGkgPT09IG51bXRvYWRkIC0gMSkge1xuICAgICAgICBvdGhlckdyaWRTdHJlYW1zWzBdID0gbmV3Q29tcG9uZW50c1swXTtcblxuICAgICAgICBhd2FpdCB1cGRhdGVNaW5pQ2FyZHNHcmlkKHtcbiAgICAgICAgICByb3dzOiBudW1Sb3dzLFxuICAgICAgICAgIGNvbHM6IG51bUNvbHMsXG4gICAgICAgICAgZGVmYWw6IHRydWUsXG4gICAgICAgICAgYWN0dWFsUm93czogYWN0dWFsUm93cyxcbiAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICB9KTtcblxuICAgICAgICB1cGRhdGVPdGhlckdyaWRTdHJlYW1zKG90aGVyR3JpZFN0cmVhbXMpO1xuICAgICAgICBhd2FpdCB1cGRhdGVNaW5pQ2FyZHNHcmlkKHtcbiAgICAgICAgICByb3dzOiBudW1Sb3dzLFxuICAgICAgICAgIGNvbHM6IG51bUNvbHMsXG4gICAgICAgICAgZGVmYWw6IHRydWUsXG4gICAgICAgICAgYWN0dWFsUm93cyxcbiAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGFsdGVybmF0ZSBncmlkIHN0cmVhbXNcbiAgICBpZiAoIXJlbW92ZUFsdEdyaWQpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWx0R3JpZFN0cmVhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcGFydGljaXBhbnQgPSBhbHRHcmlkU3RyZWFtc1tpXTtcbiAgICAgICAgcmVtb3RlUHJvZHVjZXJJZCA9IHBhcnRpY2lwYW50LnByb2R1Y2VySWQ7XG5cbiAgICAgICAgbGV0IHBhcnRpY2lwYW50XztcbiAgICAgICAgbGV0IHBzZXVkb05hbWUgPSBmYWxzZTtcblxuICAgICAgICAvL2NoZWNrIGlmIHRoZXJlIGlzIC5uYW1lIGluIHRoZSBwYXJ0aWNpcGFudCBvYmplY3QgYW5kIGlmIGl0IGlzIG51bGxcbiAgICAgICAgaWYgKFxuICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJ0aWNpcGFudCwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgIHBhcnRpY2lwYW50LnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgIHBhcnRpY2lwYW50LnByb2R1Y2VySWQgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIC8vYWN0dWFsIHZpZGVvXG4gICAgICAgICAgcHNldWRvTmFtZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBzZXVkb05hbWUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBzZXVkb05hbWUpIHtcbiAgICAgICAgICBwYXJ0aWNpcGFudF8gPSBwYXJ0aWNpcGFudDtcbiAgICAgICAgICByZW1vdGVQcm9kdWNlcklkID0gYXdhaXQgcGFydGljaXBhbnQubmFtZTtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJ0aWNpcGFudCwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgICAgcGFydGljaXBhbnQuYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICBwYXJ0aWNpcGFudC5hdWRpb0lEICE9PSAnJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgbmV3Q29tcG9uZW50c1sxXS5wdXNoKHtcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBBdWRpb0NhcmQsXG4gICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgIG5hbWU6IHBhcnRpY2lwYW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgYmFyQ29sb3I6ICdyZWQnLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNvbnRyb2xzUG9zaXRpb246ICd0b3BMZWZ0JyxcbiAgICAgICAgICAgICAgICBpbmZvUG9zaXRpb246ICd0b3BSaWdodCcsXG4gICAgICAgICAgICAgICAgc2hvd1dhdmVmb3JtOiB0cnVlLFxuICAgICAgICAgICAgICAgIHJvdW5kZWRJbWFnZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICBzaG93Q29udHJvbHM6IGV2ZW50VHlwZSAhPT0gJ2NoYXQnLFxuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0NvbXBvbmVudHNbMV0ucHVzaCh7XG4gICAgICAgICAgICAgIGNvbXBvbmVudDogTWluaUNhcmQsXG4gICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgIGluaXRpYWxzOiBwYXJ0aWNpcGFudC5uYW1lLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyMCxcbiAgICAgICAgICAgICAgICBjdXN0b21TdHlsZToge1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBldmVudFR5cGUgIT09ICdicm9hZGNhc3QnID8gJzJweCBzb2xpZCBibGFjaycgOiAnMHB4IHNvbGlkIGJsYWNrJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcnRpY2lwYW50XyA9IHJlZl9wYXJ0aWNpcGFudHMuZmluZCgob2JqOiBhbnkpID0+IG9iai52aWRlb0lEID09PSByZW1vdGVQcm9kdWNlcklkKTtcbiAgICAgICAgICBuZXdDb21wb25lbnRzWzFdLnB1c2goe1xuICAgICAgICAgICAgY29tcG9uZW50OiBWaWRlb0NhcmQsXG4gICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgdmlkZW9TdHJlYW06IHBhcnRpY2lwYW50XyAmJiBwYXJ0aWNpcGFudF9bJ3N0cmVhbSddID8gcGFydGljaXBhbnRfWydzdHJlYW0nXSA6IG51bGwsXG4gICAgICAgICAgICAgIHJlbW90ZVByb2R1Y2VySWQsXG4gICAgICAgICAgICAgIGV2ZW50VHlwZSxcbiAgICAgICAgICAgICAgZm9yY2VGdWxsRGlzcGxheSxcbiAgICAgICAgICAgICAgY3VzdG9tU3R5bGU6IHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IGV2ZW50VHlwZSAhPT0gJ2Jyb2FkY2FzdCcgPyAnMnB4IHNvbGlkIGJsYWNrJyA6ICcwcHggc29saWQgYmxhY2snLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBwYXJ0aWNpcGFudDogcGFydGljaXBhbnRfLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgIHNob3dDb250cm9sczogZXZlbnRUeXBlICE9PSAnY2hhdCcsXG4gICAgICAgICAgICAgIHNob3dJbmZvOiB0cnVlLFxuICAgICAgICAgICAgICBuYW1lOiBwYXJ0aWNpcGFudC5uYW1lLFxuICAgICAgICAgICAgICBkb01pcnJvcjogZmFsc2UsXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGkgPT09IG51bXRvYWRkIC0gMSkge1xuICAgICAgICAgIG90aGVyR3JpZFN0cmVhbXNbMV0gPSBuZXdDb21wb25lbnRzWzFdO1xuXG4gICAgICAgICAgYXdhaXQgdXBkYXRlTWluaUNhcmRzR3JpZCh7XG4gICAgICAgICAgICByb3dzOiAxLFxuICAgICAgICAgICAgY29sczogbGFzdHJvd2NvbHMsXG4gICAgICAgICAgICBkZWZhbDogZmFsc2UsXG4gICAgICAgICAgICBhY3R1YWxSb3dzLFxuICAgICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHVwZGF0ZU90aGVyR3JpZFN0cmVhbXMob3RoZXJHcmlkU3RyZWFtcyk7XG4gICAgICAgICAgYXdhaXQgdXBkYXRlTWluaUNhcmRzR3JpZCh7XG4gICAgICAgICAgICByb3dzOiAxLFxuICAgICAgICAgICAgY29sczogbGFzdHJvd2NvbHMsXG4gICAgICAgICAgICBkZWZhbDogZmFsc2UsXG4gICAgICAgICAgICBhY3R1YWxSb3dzLFxuICAgICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGVBZGRBbHRHcmlkKGZhbHNlKTtcbiAgICAgIG90aGVyR3JpZFN0cmVhbXNbMV0gPSBbXTtcblxuICAgICAgYXdhaXQgdXBkYXRlTWluaUNhcmRzR3JpZCh7XG4gICAgICAgIHJvd3M6IDAsXG4gICAgICAgIGNvbHM6IDAsXG4gICAgICAgIGRlZmFsOiBmYWxzZSxcbiAgICAgICAgYWN0dWFsUm93czogYWN0dWFsUm93cyxcbiAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgIH0pO1xuXG4gICAgICB1cGRhdGVPdGhlckdyaWRTdHJlYW1zKG90aGVyR3JpZFN0cmVhbXMpO1xuICAgICAgYXdhaXQgdXBkYXRlTWluaUNhcmRzR3JpZCh7XG4gICAgICAgIHJvd3M6IDAsXG4gICAgICAgIGNvbHM6IDAsXG4gICAgICAgIGRlZmFsOiBmYWxzZSxcbiAgICAgICAgYWN0dWFsUm93cyxcbiAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @service AutoAdjust
|
|
5
|
+
* @description Service to auto-adjust layout values based on the event type, number of participants, and sharing conditions. Useful for dynamically adjusting UI elements in different event settings.
|
|
6
|
+
*
|
|
7
|
+
* @method autoAdjust
|
|
8
|
+
* Dynamically calculates and adjusts layout values (e.g., grid columns) based on conditions such as event type, participant count, and sharing status.
|
|
9
|
+
*
|
|
10
|
+
* @param {AutoAdjustOptions} options - Configuration options for the auto-adjustment.
|
|
11
|
+
* @param {number} options.n - Number of participants in the event.
|
|
12
|
+
* @param {EventType} options.eventType - Type of event (e.g., 'broadcast', 'chat', 'conference').
|
|
13
|
+
* @param {boolean} options.shareScreenStarted - Indicates whether screen sharing is active.
|
|
14
|
+
* @param {boolean} options.shared - Indicates if another resource is currently shared.
|
|
15
|
+
*
|
|
16
|
+
* @returns {Promise<number[]>} A promise resolving to an array of two adjusted layout values.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const [primaryLayout, secondaryLayout] = await autoAdjustService.autoAdjust({
|
|
21
|
+
* n: 5,
|
|
22
|
+
* eventType: 'conference',
|
|
23
|
+
* shareScreenStarted: false,
|
|
24
|
+
* shared: false,
|
|
25
|
+
* });
|
|
26
|
+
* console.log(primaryLayout, secondaryLayout); // Adjusted layout values based on inputs
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
3
29
|
export class AutoAdjust {
|
|
4
30
|
/**
|
|
5
31
|
* Adjusts values based on the provided options.
|
|
@@ -80,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
80
106
|
providedIn: 'root',
|
|
81
107
|
}]
|
|
82
108
|
}] });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1hZGp1c3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9jb25zdW1lcnMvYXV0by1hZGp1c3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVkzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQU1ILE1BQU0sT0FBTyxVQUFVO0lBQ3JCOzs7Ozs7Ozs7O09BVUc7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQ2YsQ0FBQyxFQUNELFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsTUFBTSxHQUNZO1FBQ2xCLGlCQUFpQjtRQUNqQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRXJCLDhCQUE4QjtRQUU5Qix3REFBd0Q7UUFDeEQsSUFBSSxTQUFTLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUNULElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7YUFBTSxJQUNMLFNBQVMsS0FBSyxNQUFNO1lBQ3BCLENBQUMsU0FBUyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLENBQUMsRUFDL0QsQ0FBQztZQUNELElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksa0JBQWtCLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDbkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHdEQUF3RDtnQkFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ1osSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDVCxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDbkIsQ0FBQztxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMzQixJQUFJLEdBQUcsQ0FBQyxDQUFDO29CQUNULElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixDQUFDO3FCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzNCLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQ1QsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ25CLENBQUM7cUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDVCxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDbkIsQ0FBQztxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUM1QixJQUFJLEdBQUcsQ0FBQyxDQUFDO29CQUNULElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixDQUFDO3FCQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7b0JBQzdCLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQ1QsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ25CLENBQUM7cUJBQU0sSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDVCxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDbkIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ1YsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ25CLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7dUdBdEVVLFVBQVU7MkdBQVYsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXZlbnRUeXBlIH0gZnJvbSAnLi4vQHR5cGVzL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRvQWRqdXN0T3B0aW9ucyB7XG4gIG46IG51bWJlcjtcbiAgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gIHNoYXJlU2NyZWVuU3RhcnRlZDogYm9vbGVhbjtcbiAgc2hhcmVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBBdXRvQWRqdXN0VHlwZSA9IChvcHRpb25zOiBBdXRvQWRqdXN0T3B0aW9ucykgPT4gUHJvbWlzZTxudW1iZXJbXT47XG5cbi8qKlxuICogQHNlcnZpY2UgQXV0b0FkanVzdFxuICogQGRlc2NyaXB0aW9uIFNlcnZpY2UgdG8gYXV0by1hZGp1c3QgbGF5b3V0IHZhbHVlcyBiYXNlZCBvbiB0aGUgZXZlbnQgdHlwZSwgbnVtYmVyIG9mIHBhcnRpY2lwYW50cywgYW5kIHNoYXJpbmcgY29uZGl0aW9ucy4gVXNlZnVsIGZvciBkeW5hbWljYWxseSBhZGp1c3RpbmcgVUkgZWxlbWVudHMgaW4gZGlmZmVyZW50IGV2ZW50IHNldHRpbmdzLlxuICpcbiAqIEBtZXRob2QgYXV0b0FkanVzdFxuICogRHluYW1pY2FsbHkgY2FsY3VsYXRlcyBhbmQgYWRqdXN0cyBsYXlvdXQgdmFsdWVzIChlLmcuLCBncmlkIGNvbHVtbnMpIGJhc2VkIG9uIGNvbmRpdGlvbnMgc3VjaCBhcyBldmVudCB0eXBlLCBwYXJ0aWNpcGFudCBjb3VudCwgYW5kIHNoYXJpbmcgc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7QXV0b0FkanVzdE9wdGlvbnN9IG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBhdXRvLWFkanVzdG1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5uIC0gTnVtYmVyIG9mIHBhcnRpY2lwYW50cyBpbiB0aGUgZXZlbnQuXG4gKiBAcGFyYW0ge0V2ZW50VHlwZX0gb3B0aW9ucy5ldmVudFR5cGUgLSBUeXBlIG9mIGV2ZW50IChlLmcuLCAnYnJvYWRjYXN0JywgJ2NoYXQnLCAnY29uZmVyZW5jZScpLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnNoYXJlU2NyZWVuU3RhcnRlZCAtIEluZGljYXRlcyB3aGV0aGVyIHNjcmVlbiBzaGFyaW5nIGlzIGFjdGl2ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5zaGFyZWQgLSBJbmRpY2F0ZXMgaWYgYW5vdGhlciByZXNvdXJjZSBpcyBjdXJyZW50bHkgc2hhcmVkLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcltdPn0gQSBwcm9taXNlIHJlc29sdmluZyB0byBhbiBhcnJheSBvZiB0d28gYWRqdXN0ZWQgbGF5b3V0IHZhbHVlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgW3ByaW1hcnlMYXlvdXQsIHNlY29uZGFyeUxheW91dF0gPSBhd2FpdCBhdXRvQWRqdXN0U2VydmljZS5hdXRvQWRqdXN0KHtcbiAqICAgbjogNSxcbiAqICAgZXZlbnRUeXBlOiAnY29uZmVyZW5jZScsXG4gKiAgIHNoYXJlU2NyZWVuU3RhcnRlZDogZmFsc2UsXG4gKiAgIHNoYXJlZDogZmFsc2UsXG4gKiB9KTtcbiAqIGNvbnNvbGUubG9nKHByaW1hcnlMYXlvdXQsIHNlY29uZGFyeUxheW91dCk7IC8vIEFkanVzdGVkIGxheW91dCB2YWx1ZXMgYmFzZWQgb24gaW5wdXRzXG4gKiBgYGBcbiAqL1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvQWRqdXN0IHtcbiAgLyoqXG4gICAqIEFkanVzdHMgdmFsdWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge0F1dG9BZGp1c3RPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGF1dG8gYWRqdXN0bWVudC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMubiAtIFRoZSBudW1iZXIgb2YgcGFydGljaXBhbnRzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5ldmVudFR5cGUgLSBUaGUgdHlwZSBvZiBldmVudCAoZS5nLiwgJ2Jyb2FkY2FzdCcsICdjaGF0JywgJ2NvbmZlcmVuY2UnKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnNoYXJlU2NyZWVuU3RhcnRlZCAtIEluZGljYXRlcyBpZiBzY3JlZW4gc2hhcmluZyBoYXMgc3RhcnRlZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnNoYXJlZCAtIEluZGljYXRlcyBpZiBzb21ldGhpbmcgaXMgc2hhcmVkLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXJbXT59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGFkanVzdGVkIHZhbHVlcy5cbiAgICovXG4gIGFzeW5jIGF1dG9BZGp1c3Qoe1xuICAgIG4sXG4gICAgZXZlbnRUeXBlLFxuICAgIHNoYXJlU2NyZWVuU3RhcnRlZCxcbiAgICBzaGFyZWQsXG4gIH06IEF1dG9BZGp1c3RPcHRpb25zKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIC8vIERlZmF1bHQgdmFsdWVzXG4gICAgbGV0IHZhbDEgPSA2O1xuICAgIGxldCB2YWwyID0gMTIgLSB2YWwxO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHBlcmNlbnRhZ2UgdmFsdWVzXG5cbiAgICAvLyBBZGp1c3QgdmFsdWVzIGJhc2VkIG9uIGV2ZW50VHlwZSBhbmQgb3RoZXIgY29uZGl0aW9uc1xuICAgIGlmIChldmVudFR5cGUgPT09ICdicm9hZGNhc3QnKSB7XG4gICAgICB2YWwxID0gMDtcbiAgICAgIHZhbDIgPSAxMiAtIHZhbDE7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGV2ZW50VHlwZSA9PT0gJ2NoYXQnIHx8XG4gICAgICAoZXZlbnRUeXBlID09PSAnY29uZmVyZW5jZScgJiYgIShzaGFyZVNjcmVlblN0YXJ0ZWQgfHwgc2hhcmVkKSlcbiAgICApIHtcbiAgICAgIHZhbDEgPSAxMjtcbiAgICAgIHZhbDIgPSAxMiAtIHZhbDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzaGFyZVNjcmVlblN0YXJ0ZWQgfHwgc2hhcmVkKSB7XG4gICAgICAgIHZhbDIgPSAxMDtcbiAgICAgICAgdmFsMSA9IDEyIC0gdmFsMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkanVzdCB2YWx1ZXMgYmFzZWQgb24gdGhlIG51bWJlciBvZiBwYXJ0aWNpcGFudHMgKG4pXG4gICAgICAgIGlmIChuID09PSAwKSB7XG4gICAgICAgICAgdmFsMSA9IDE7XG4gICAgICAgICAgdmFsMiA9IDEyIC0gdmFsMTtcbiAgICAgICAgfSBlbHNlIGlmIChuID49IDEgJiYgbiA8IDQpIHtcbiAgICAgICAgICB2YWwxID0gNDtcbiAgICAgICAgICB2YWwyID0gMTIgLSB2YWwxO1xuICAgICAgICB9IGVsc2UgaWYgKG4gPj0gNCAmJiBuIDwgNikge1xuICAgICAgICAgIHZhbDEgPSA2O1xuICAgICAgICAgIHZhbDIgPSAxMiAtIHZhbDE7XG4gICAgICAgIH0gZWxzZSBpZiAobiA+PSA2ICYmIG4gPCA5KSB7XG4gICAgICAgICAgdmFsMSA9IDY7XG4gICAgICAgICAgdmFsMiA9IDEyIC0gdmFsMTtcbiAgICAgICAgfSBlbHNlIGlmIChuID49IDkgJiYgbiA8IDEyKSB7XG4gICAgICAgICAgdmFsMSA9IDY7XG4gICAgICAgICAgdmFsMiA9IDEyIC0gdmFsMTtcbiAgICAgICAgfSBlbHNlIGlmIChuID49IDEyICYmIG4gPCAyMCkge1xuICAgICAgICAgIHZhbDEgPSA4O1xuICAgICAgICAgIHZhbDIgPSAxMiAtIHZhbDE7XG4gICAgICAgIH0gZWxzZSBpZiAobiA+PSAyMCAmJiBuIDwgNTApIHtcbiAgICAgICAgICB2YWwxID0gODtcbiAgICAgICAgICB2YWwyID0gMTIgLSB2YWwxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbDEgPSAxMDtcbiAgICAgICAgICB2YWwyID0gMTIgLSB2YWwxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGFycmF5IHdpdGggYWRqdXN0ZWQgdmFsdWVzXG4gICAgcmV0dXJuIFt2YWwxLCB2YWwyXTtcbiAgfVxufVxuIl19
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @service CalculateRowsAndColumns
|
|
5
|
+
* @description Service to calculate the optimal number of rows and columns needed to display a given number of items in a grid. Useful for dynamically determining grid layout in responsive designs.
|
|
6
|
+
*
|
|
7
|
+
* @method calculateRowsAndColumns
|
|
8
|
+
* Calculates the optimal number of rows and columns to display a specified number of items in a compact grid format.
|
|
9
|
+
*
|
|
10
|
+
* @param {CalculateRowsAndColumnsOptions} options - Configuration options for row and column calculation.
|
|
11
|
+
* @param {number} options.n - The number of items to display in the grid.
|
|
12
|
+
*
|
|
13
|
+
* @returns {[number, number]} A tuple where the first value is the number of rows and the second is the number of columns.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const [rows, cols] = calculateRowsAndColumnsService.calculateRowsAndColumns({ n: 10 });
|
|
18
|
+
* console.log(rows, cols); // Outputs optimized rows and columns for displaying 10 items
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
3
21
|
export class CalculateRowsAndColumns {
|
|
4
22
|
/**
|
|
5
23
|
* Calculates the number of rows and columns needed to display a given number of items in a grid.
|
|
@@ -39,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
39
57
|
providedIn: 'root',
|
|
40
58
|
}]
|
|
41
59
|
}] });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLXJvd3MtYW5kLWNvbHVtbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9jb25zdW1lcnMvY2FsY3VsYXRlLXJvd3MtYW5kLWNvbHVtbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVczQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFNSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDOzs7Ozs7T0FNRztJQUNILHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxFQUFrQztRQUMzRCxpQ0FBaUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxQiwyREFBMkQ7UUFDM0QsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QiwwREFBMEQ7UUFDMUQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFL0IsNENBQTRDO1FBQzVDLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7UUFFdkIsMEVBQTBFO1FBQzFFLE9BQU8sSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hCLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsQ0FBQztZQUNULENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEVBQUUsQ0FBQztZQUNULENBQUM7WUFDRCxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO1FBRUQsaUVBQWlFO1FBQ2pFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQzt1R0FqQ1UsdUJBQXVCOzJHQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBDYWxjdWxhdGVSb3dzQW5kQ29sdW1uc09wdGlvbnMge1xuICBuOiBudW1iZXI7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENhbGN1bGF0ZVJvd3NBbmRDb2x1bW5zVHlwZSA9IChcbiAgb3B0aW9uczogQ2FsY3VsYXRlUm93c0FuZENvbHVtbnNPcHRpb25zLFxuKSA9PiBbbnVtYmVyLCBudW1iZXJdO1xuXG4vKipcbiAqIEBzZXJ2aWNlIENhbGN1bGF0ZVJvd3NBbmRDb2x1bW5zXG4gKiBAZGVzY3JpcHRpb24gU2VydmljZSB0byBjYWxjdWxhdGUgdGhlIG9wdGltYWwgbnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMgbmVlZGVkIHRvIGRpc3BsYXkgYSBnaXZlbiBudW1iZXIgb2YgaXRlbXMgaW4gYSBncmlkLiBVc2VmdWwgZm9yIGR5bmFtaWNhbGx5IGRldGVybWluaW5nIGdyaWQgbGF5b3V0IGluIHJlc3BvbnNpdmUgZGVzaWducy5cbiAqXG4gKiBAbWV0aG9kIGNhbGN1bGF0ZVJvd3NBbmRDb2x1bW5zXG4gKiBDYWxjdWxhdGVzIHRoZSBvcHRpbWFsIG51bWJlciBvZiByb3dzIGFuZCBjb2x1bW5zIHRvIGRpc3BsYXkgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIGl0ZW1zIGluIGEgY29tcGFjdCBncmlkIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge0NhbGN1bGF0ZVJvd3NBbmRDb2x1bW5zT3B0aW9uc30gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igcm93IGFuZCBjb2x1bW4gY2FsY3VsYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5uIC0gVGhlIG51bWJlciBvZiBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBncmlkLlxuICpcbiAqIEByZXR1cm5zIHtbbnVtYmVyLCBudW1iZXJdfSBBIHR1cGxlIHdoZXJlIHRoZSBmaXJzdCB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIHJvd3MgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIG51bWJlciBvZiBjb2x1bW5zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBbcm93cywgY29sc10gPSBjYWxjdWxhdGVSb3dzQW5kQ29sdW1uc1NlcnZpY2UuY2FsY3VsYXRlUm93c0FuZENvbHVtbnMoeyBuOiAxMCB9KTtcbiAqIGNvbnNvbGUubG9nKHJvd3MsIGNvbHMpOyAvLyBPdXRwdXRzIG9wdGltaXplZCByb3dzIGFuZCBjb2x1bW5zIGZvciBkaXNwbGF5aW5nIDEwIGl0ZW1zXG4gKiBgYGBcbiAqL1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxjdWxhdGVSb3dzQW5kQ29sdW1ucyB7XG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2Ygcm93cyBhbmQgY29sdW1ucyBuZWVkZWQgdG8gZGlzcGxheSBhIGdpdmVuIG51bWJlciBvZiBpdGVtcyBpbiBhIGdyaWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Q2FsY3VsYXRlUm93c0FuZENvbHVtbnNPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGNhbGN1bGF0aW5nIHJvd3MgYW5kIGNvbHVtbnMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLm4gLSBUaGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGRpc3BsYXkuXG4gICAqIEByZXR1cm5zIHtbbnVtYmVyLCBudW1iZXJdfSBBIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiByb3dzIGFuZCBjb2x1bW5zLlxuICAgKi9cbiAgY2FsY3VsYXRlUm93c0FuZENvbHVtbnMoeyBuIH06IENhbGN1bGF0ZVJvd3NBbmRDb2x1bW5zT3B0aW9ucyk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIC8vIENhbGN1bGF0ZSB0aGUgc3F1YXJlIHJvb3Qgb2YgblxuICAgIGNvbnN0IHNxcnQgPSBNYXRoLnNxcnQobik7XG5cbiAgICAvLyBJbml0aWFsaXplIGNvbHVtbnMgYmFzZWQgb24gdGhlIGZsb29yIG9mIHRoZSBzcXVhcmUgcm9vdFxuICAgIGxldCBjb2xzID0gTWF0aC5mbG9vcihzcXJ0KTtcblxuICAgIC8vIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHJvd3MgbmVlZGVkIHRvIGRpc3BsYXkgbiB2aWRlb3NcbiAgICBsZXQgcm93cyA9IE1hdGguY2VpbChuIC8gY29scyk7XG5cbiAgICAvLyBDYWxjdWxhdGUgdGhlIHByb2R1Y3Qgb2Ygcm93cyBhbmQgY29sdW1uc1xuICAgIGxldCBwcm9kID0gcm93cyAqIGNvbHM7XG5cbiAgICAvLyBBZGp1c3Qgcm93cyBhbmQgY29sdW1ucyB1bnRpbCB0aGUgcHJvZHVjdCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gblxuICAgIHdoaWxlIChwcm9kIDwgbikge1xuICAgICAgaWYgKGNvbHMgPCByb3dzKSB7XG4gICAgICAgIGNvbHMrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvd3MrKztcbiAgICAgIH1cbiAgICAgIHByb2QgPSByb3dzICogY29scztcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gYXJyYXkgd2l0aCB0aGUgY2FsY3VsYXRlZCBudW1iZXIgb2Ygcm93cyBhbmQgY29sdW1uc1xuICAgIHJldHVybiBbcm93cywgY29sc107XG4gIH1cbn1cbiJdfQ==
|