@rocketshow/designer 1.32.0 → 1.35.0
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/assets/i18n/de.json +2 -1
- package/assets/i18n/en.json +2 -1
- package/esm2022/lib/array-sort-pipe.mjs +30 -0
- package/esm2022/lib/designer.component.mjs +672 -0
- package/esm2022/lib/designer.module.mjs +186 -0
- package/esm2022/lib/designer.service.mjs +14 -0
- package/esm2022/lib/dropzone/dropzone.component.mjs +93 -0
- package/esm2022/lib/effect/effect-curve/effect-curve.component.mjs +577 -0
- package/esm2022/lib/effect/effect-pan-tilt/effect-pan-tilt.component.mjs +36 -0
- package/esm2022/lib/effect/effect.component.mjs +174 -0
- package/esm2022/lib/error-dialog/error-dialog.component.mjs +75 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.mjs +222 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.mjs +147 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.mjs +213 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.mjs +78 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.mjs +119 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability.component.mjs +169 -0
- package/esm2022/lib/fixture/fixture-channel/fixture-channel.component.mjs +162 -0
- package/esm2022/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.mjs +365 -0
- package/esm2022/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.mjs +151 -0
- package/esm2022/lib/fixture/fixture-settings/fixture-settings.component.mjs +46 -0
- package/esm2022/lib/fixture/fixture.component.mjs +148 -0
- package/esm2022/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.mjs +145 -0
- package/esm2022/lib/fixture-pool/fixture-pool.component.mjs +643 -0
- package/esm2022/lib/intro/intro.component.mjs +95 -0
- package/esm2022/lib/master-dimmer/master-dimmer.component.mjs +66 -0
- package/esm2022/lib/models/cached-fixture-capability.mjs +9 -0
- package/esm2022/lib/models/cached-fixture-channel.mjs +7 -0
- package/esm2022/lib/models/cached-fixture.mjs +6 -0
- package/esm2022/lib/models/color.mjs +8 -0
- package/esm2022/lib/models/composition.mjs +46 -0
- package/esm2022/lib/models/effect-curve-profile-channel.mjs +15 -0
- package/esm2022/lib/models/effect-curve.mjs +69 -0
- package/esm2022/lib/models/effect-pan-tilt.mjs +19 -0
- package/esm2022/lib/models/effect.mjs +12 -0
- package/esm2022/lib/models/fixture-capability-value.mjs +15 -0
- package/esm2022/lib/models/fixture-capability.mjs +84 -0
- package/esm2022/lib/models/fixture-channel-value.mjs +11 -0
- package/esm2022/lib/models/fixture-channel.mjs +24 -0
- package/esm2022/lib/models/fixture-matrix-pixel-group-constraints.mjs +27 -0
- package/esm2022/lib/models/fixture-matrix-pixel-group.mjs +12 -0
- package/esm2022/lib/models/fixture-matrix.mjs +25 -0
- package/esm2022/lib/models/fixture-mode-channel.mjs +26 -0
- package/esm2022/lib/models/fixture-mode.mjs +17 -0
- package/esm2022/lib/models/fixture-physical.mjs +14 -0
- package/esm2022/lib/models/fixture-profile.mjs +85 -0
- package/esm2022/lib/models/fixture-wheel-slot.mjs +26 -0
- package/esm2022/lib/models/fixture-wheel.mjs +15 -0
- package/esm2022/lib/models/fixture.mjs +40 -0
- package/esm2022/lib/models/preset-fixture.mjs +10 -0
- package/esm2022/lib/models/preset-region-scene.mjs +8 -0
- package/esm2022/lib/models/preset.mjs +65 -0
- package/esm2022/lib/models/project.mjs +78 -0
- package/esm2022/lib/models/scene-playback-region.mjs +11 -0
- package/esm2022/lib/models/scene.mjs +27 -0
- package/esm2022/lib/preset/preset-settings/preset-settings.component.mjs +194 -0
- package/esm2022/lib/preset/preset.component.mjs +131 -0
- package/esm2022/lib/preview/models/color-changer-3d.mjs +64 -0
- package/esm2022/lib/preview/models/fixture-3d.mjs +274 -0
- package/esm2022/lib/preview/models/moving-head-3d.mjs +124 -0
- package/esm2022/lib/preview/preview.component.mjs +219 -0
- package/esm2022/lib/project/project-browser/project-browser.component.mjs +143 -0
- package/esm2022/lib/project/project-import/project-import.component.mjs +107 -0
- package/esm2022/lib/project/project-save/project-save.component.mjs +178 -0
- package/esm2022/lib/project/project-share/project-share.component.mjs +71 -0
- package/esm2022/lib/scene/scene-settings/scene-settings.component.mjs +146 -0
- package/esm2022/lib/scene/scene.component.mjs +110 -0
- package/esm2022/lib/services/animation.service.mjs +16 -0
- package/esm2022/lib/services/config.service.mjs +28 -0
- package/esm2022/lib/services/effect.service.mjs +14 -0
- package/esm2022/lib/services/error-dialog.service.mjs +39 -0
- package/esm2022/lib/services/fixture-pool.service.mjs +30 -0
- package/esm2022/lib/services/fixture.service.mjs +639 -0
- package/esm2022/lib/services/hotkey-target-exclude.service.mjs +24 -0
- package/esm2022/lib/services/intro.service.mjs +140 -0
- package/esm2022/lib/services/preset.service.mjs +449 -0
- package/esm2022/lib/services/preview-mesh.service.mjs +57 -0
- package/esm2022/lib/services/preview.service.mjs +497 -0
- package/esm2022/lib/services/project-load.service.mjs +209 -0
- package/esm2022/lib/services/project.service.mjs +93 -0
- package/esm2022/lib/services/scene.service.mjs +164 -0
- package/esm2022/lib/services/timeline.service.mjs +726 -0
- package/esm2022/lib/services/user-ensure-login.service.mjs +38 -0
- package/esm2022/lib/services/user.service.mjs +89 -0
- package/esm2022/lib/services/uuid.service.mjs +23 -0
- package/esm2022/lib/services/warning-dialog.service.mjs +38 -0
- package/esm2022/lib/timeline/composition-settings/composition-settings.component.mjs +304 -0
- package/esm2022/lib/timeline/timeline-grid/timeline-grid.component.mjs +216 -0
- package/esm2022/lib/timeline/timeline.component.mjs +418 -0
- package/esm2022/lib/user/user-login/user-login.component.mjs +144 -0
- package/esm2022/lib/user/user-register/user-register.component.mjs +220 -0
- package/esm2022/lib/wait-dialog/wait-dialog.component.mjs +26 -0
- package/esm2022/lib/warning-dialog/warning-dialog.component.mjs +68 -0
- package/esm2022/public_api.mjs +7 -0
- package/esm2022/rocketshow-designer.mjs +5 -0
- package/fesm2022/rocketshow-designer.mjs +11171 -0
- package/fesm2022/rocketshow-designer.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/array-sort-pipe.d.ts +3 -0
- package/lib/designer.component.d.ts +19 -16
- package/lib/designer.module.d.ts +55 -0
- package/lib/designer.service.d.ts +3 -0
- package/lib/dropzone/dropzone.component.d.ts +24 -0
- package/lib/effect/effect-curve/effect-curve.component.d.ts +4 -1
- package/lib/effect/effect-pan-tilt/effect-pan-tilt.component.d.ts +3 -0
- package/lib/effect/effect.component.d.ts +3 -0
- package/lib/error-dialog/error-dialog.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.d.ts +4 -1
- package/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.d.ts +5 -2
- package/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability.component.d.ts +3 -0
- package/lib/fixture/fixture-channel/fixture-channel.component.d.ts +3 -0
- package/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.d.ts +3 -0
- package/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.d.ts +3 -0
- package/lib/fixture/fixture-settings/fixture-settings.component.d.ts +3 -0
- package/lib/fixture/fixture.component.d.ts +7 -3
- package/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.d.ts +3 -0
- package/lib/fixture-pool/fixture-pool.component.d.ts +3 -0
- package/lib/intro/intro.component.d.ts +3 -0
- package/lib/master-dimmer/master-dimmer.component.d.ts +3 -0
- package/lib/models/cached-fixture.d.ts +1 -0
- package/lib/models/fixture-matrix-pixel-group-constraints.d.ts +8 -0
- package/lib/models/fixture-matrix-pixel-group.d.ts +6 -0
- package/lib/models/fixture-matrix.d.ts +6 -0
- package/lib/models/fixture-mode-channel.d.ts +8 -0
- package/lib/models/fixture-mode.d.ts +3 -1
- package/lib/models/fixture-physical.d.ts +4 -0
- package/lib/models/fixture-profile.d.ts +5 -0
- package/lib/models/preset-fixture.d.ts +5 -0
- package/lib/models/preset.d.ts +2 -0
- package/lib/models/project.d.ts +3 -0
- package/lib/preset/preset-settings/preset-settings.component.d.ts +3 -0
- package/lib/preset/preset.component.d.ts +3 -0
- package/lib/preview/models/color-changer-3d.d.ts +1 -11
- package/lib/preview/models/fixture-3d.d.ts +11 -0
- package/lib/preview/models/moving-head-3d.d.ts +1 -11
- package/lib/preview/preview.component.d.ts +4 -4
- package/lib/project/project-browser/project-browser.component.d.ts +3 -0
- package/lib/project/project-import/project-import.component.d.ts +3 -0
- package/lib/project/project-save/project-save.component.d.ts +3 -0
- package/lib/project/project-share/project-share.component.d.ts +3 -0
- package/lib/scene/scene-settings/scene-settings.component.d.ts +3 -0
- package/lib/scene/scene.component.d.ts +3 -0
- package/lib/services/animation.service.d.ts +3 -0
- package/lib/services/config.service.d.ts +4 -0
- package/lib/services/effect.service.d.ts +3 -0
- package/lib/services/error-dialog.service.d.ts +3 -0
- package/lib/services/fixture-pool.service.d.ts +3 -0
- package/lib/services/fixture.service.d.ts +10 -2
- package/lib/services/hotkey-target-exclude.service.d.ts +3 -0
- package/lib/services/intro.service.d.ts +3 -0
- package/lib/services/preset.service.d.ts +7 -2
- package/lib/services/preview-mesh.service.d.ts +3 -0
- package/lib/services/preview.service.d.ts +6 -4
- package/lib/services/project-load.service.d.ts +8 -1
- package/lib/services/project.service.d.ts +5 -3
- package/lib/services/scene.service.d.ts +3 -0
- package/lib/services/timeline.service.d.ts +3 -0
- package/lib/services/user-ensure-login.service.d.ts +3 -0
- package/lib/services/user.service.d.ts +3 -0
- package/lib/services/uuid.service.d.ts +3 -0
- package/lib/services/warning-dialog.service.d.ts +3 -0
- package/lib/timeline/composition-settings/composition-settings.component.d.ts +5 -1
- package/lib/timeline/timeline-grid/timeline-grid.component.d.ts +3 -0
- package/lib/timeline/timeline.component.d.ts +3 -0
- package/lib/user/user-login/user-login.component.d.ts +3 -0
- package/lib/user/user-register/user-register.component.d.ts +3 -0
- package/lib/wait-dialog/wait-dialog.component.d.ts +3 -0
- package/lib/warning-dialog/warning-dialog.component.d.ts +3 -0
- package/package.json +20 -22
- package/rocketshow-designer-1.35.0.tgz +0 -0
- package/bundles/rocketshow-designer.umd.js +0 -9966
- package/bundles/rocketshow-designer.umd.js.map +0 -1
- package/bundles/rocketshow-designer.umd.min.js +0 -17
- package/bundles/rocketshow-designer.umd.min.js.map +0 -1
- package/esm2015/lib/array-sort-pipe.js +0 -28
- package/esm2015/lib/designer.component.js +0 -411
- package/esm2015/lib/designer.module.js +0 -117
- package/esm2015/lib/designer.service.js +0 -16
- package/esm2015/lib/effect/effect-curve/effect-curve.component.js +0 -325
- package/esm2015/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -30
- package/esm2015/lib/effect/effect.component.js +0 -73
- package/esm2015/lib/error-dialog/error-dialog.component.js +0 -42
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -141
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -128
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -163
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -60
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -87
- package/esm2015/lib/fixture/fixture-capability/fixture-capability.component.js +0 -97
- package/esm2015/lib/fixture/fixture-channel/fixture-channel.component.js +0 -66
- package/esm2015/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -200
- package/esm2015/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -31
- package/esm2015/lib/fixture/fixture-settings/fixture-settings.component.js +0 -35
- package/esm2015/lib/fixture/fixture.component.js +0 -70
- package/esm2015/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -128
- package/esm2015/lib/fixture-pool/fixture-pool.component.js +0 -331
- package/esm2015/lib/intro/intro.component.js +0 -25
- package/esm2015/lib/master-dimmer/master-dimmer.component.js +0 -41
- package/esm2015/lib/models/cached-fixture-capability.js +0 -9
- package/esm2015/lib/models/cached-fixture-channel.js +0 -7
- package/esm2015/lib/models/cached-fixture.js +0 -6
- package/esm2015/lib/models/color.js +0 -8
- package/esm2015/lib/models/composition.js +0 -46
- package/esm2015/lib/models/effect-curve-profile-channel.js +0 -15
- package/esm2015/lib/models/effect-curve.js +0 -69
- package/esm2015/lib/models/effect-pan-tilt.js +0 -19
- package/esm2015/lib/models/effect.js +0 -12
- package/esm2015/lib/models/fixture-capability-value.js +0 -15
- package/esm2015/lib/models/fixture-capability.js +0 -84
- package/esm2015/lib/models/fixture-channel-value.js +0 -11
- package/esm2015/lib/models/fixture-channel.js +0 -24
- package/esm2015/lib/models/fixture-mode.js +0 -14
- package/esm2015/lib/models/fixture-profile.js +0 -70
- package/esm2015/lib/models/fixture-wheel-slot.js +0 -26
- package/esm2015/lib/models/fixture-wheel.js +0 -15
- package/esm2015/lib/models/fixture.js +0 -40
- package/esm2015/lib/models/preset-region-scene.js +0 -8
- package/esm2015/lib/models/preset.js +0 -56
- package/esm2015/lib/models/project.js +0 -68
- package/esm2015/lib/models/scene-playback-region.js +0 -11
- package/esm2015/lib/models/scene.js +0 -27
- package/esm2015/lib/models/universe.js +0 -11
- package/esm2015/lib/preset/preset-settings/preset-settings.component.js +0 -66
- package/esm2015/lib/preset/preset.component.js +0 -85
- package/esm2015/lib/preview/models/color-changer-3d.js +0 -167
- package/esm2015/lib/preview/models/fixture-3d.js +0 -150
- package/esm2015/lib/preview/models/moving-head-3d.js +0 -233
- package/esm2015/lib/preview/preview.component.js +0 -242
- package/esm2015/lib/project/project-browser/project-browser.component.js +0 -73
- package/esm2015/lib/project/project-import/project-import.component.js +0 -89
- package/esm2015/lib/project/project-save/project-save.component.js +0 -105
- package/esm2015/lib/project/project-share/project-share.component.js +0 -43
- package/esm2015/lib/scene/scene-settings/scene-settings.component.js +0 -52
- package/esm2015/lib/scene/scene.component.js +0 -56
- package/esm2015/lib/services/animation.service.js +0 -17
- package/esm2015/lib/services/config.service.js +0 -28
- package/esm2015/lib/services/effect.service.js +0 -16
- package/esm2015/lib/services/error-dialog.service.js +0 -44
- package/esm2015/lib/services/fixture-pool.service.js +0 -34
- package/esm2015/lib/services/fixture.service.js +0 -443
- package/esm2015/lib/services/hotkey-target-exclude.service.js +0 -26
- package/esm2015/lib/services/intro.service.js +0 -144
- package/esm2015/lib/services/preset.service.js +0 -416
- package/esm2015/lib/services/preview-mesh.service.js +0 -58
- package/esm2015/lib/services/preview.service.js +0 -500
- package/esm2015/lib/services/project-load.service.js +0 -171
- package/esm2015/lib/services/project.service.js +0 -113
- package/esm2015/lib/services/scene.service.js +0 -174
- package/esm2015/lib/services/timeline.service.js +0 -738
- package/esm2015/lib/services/universe.service.js +0 -24
- package/esm2015/lib/services/user-ensure-login.service.js +0 -44
- package/esm2015/lib/services/user.service.js +0 -93
- package/esm2015/lib/services/uuid.service.js +0 -25
- package/esm2015/lib/services/warning-dialog.service.js +0 -43
- package/esm2015/lib/timeline/composition-settings/composition-settings.component.js +0 -197
- package/esm2015/lib/timeline/timeline-grid/timeline-grid.component.js +0 -55
- package/esm2015/lib/timeline/timeline.component.js +0 -239
- package/esm2015/lib/user/user-login/user-login.component.js +0 -64
- package/esm2015/lib/user/user-register/user-register.component.js +0 -89
- package/esm2015/lib/wait-dialog/wait-dialog.component.js +0 -16
- package/esm2015/lib/warning-dialog/warning-dialog.component.js +0 -42
- package/esm2015/public_api.js +0 -7
- package/esm2015/rocketshow-designer.js +0 -61
- package/esm5/lib/array-sort-pipe.js +0 -31
- package/esm5/lib/designer.component.js +0 -468
- package/esm5/lib/designer.module.js +0 -120
- package/esm5/lib/designer.service.js +0 -17
- package/esm5/lib/effect/effect-curve/effect-curve.component.js +0 -386
- package/esm5/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -31
- package/esm5/lib/effect/effect.component.js +0 -75
- package/esm5/lib/error-dialog/error-dialog.component.js +0 -43
- package/esm5/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -159
- package/esm5/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -130
- package/esm5/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -215
- package/esm5/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -61
- package/esm5/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -88
- package/esm5/lib/fixture/fixture-capability/fixture-capability.component.js +0 -130
- package/esm5/lib/fixture/fixture-channel/fixture-channel.component.js +0 -68
- package/esm5/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -306
- package/esm5/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -32
- package/esm5/lib/fixture/fixture-settings/fixture-settings.component.js +0 -36
- package/esm5/lib/fixture/fixture.component.js +0 -71
- package/esm5/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -127
- package/esm5/lib/fixture-pool/fixture-pool.component.js +0 -430
- package/esm5/lib/intro/intro.component.js +0 -26
- package/esm5/lib/master-dimmer/master-dimmer.component.js +0 -42
- package/esm5/lib/models/cached-fixture-capability.js +0 -11
- package/esm5/lib/models/cached-fixture-channel.js +0 -9
- package/esm5/lib/models/cached-fixture.js +0 -8
- package/esm5/lib/models/color.js +0 -10
- package/esm5/lib/models/composition.js +0 -60
- package/esm5/lib/models/effect-curve-profile-channel.js +0 -29
- package/esm5/lib/models/effect-curve.js +0 -95
- package/esm5/lib/models/effect-pan-tilt.js +0 -24
- package/esm5/lib/models/effect.js +0 -14
- package/esm5/lib/models/fixture-capability-value.js +0 -17
- package/esm5/lib/models/fixture-capability.js +0 -86
- package/esm5/lib/models/fixture-channel-value.js +0 -13
- package/esm5/lib/models/fixture-channel.js +0 -38
- package/esm5/lib/models/fixture-mode.js +0 -16
- package/esm5/lib/models/fixture-profile.js +0 -114
- package/esm5/lib/models/fixture-wheel-slot.js +0 -28
- package/esm5/lib/models/fixture-wheel.js +0 -29
- package/esm5/lib/models/fixture.js +0 -42
- package/esm5/lib/models/preset-region-scene.js +0 -10
- package/esm5/lib/models/preset.js +0 -90
- package/esm5/lib/models/project.js +0 -122
- package/esm5/lib/models/scene-playback-region.js +0 -13
- package/esm5/lib/models/scene.js +0 -29
- package/esm5/lib/models/universe.js +0 -13
- package/esm5/lib/preset/preset-settings/preset-settings.component.js +0 -67
- package/esm5/lib/preset/preset.component.js +0 -86
- package/esm5/lib/preview/models/color-changer-3d.js +0 -194
- package/esm5/lib/preview/models/fixture-3d.js +0 -196
- package/esm5/lib/preview/models/moving-head-3d.js +0 -250
- package/esm5/lib/preview/preview.component.js +0 -280
- package/esm5/lib/project/project-browser/project-browser.component.js +0 -77
- package/esm5/lib/project/project-import/project-import.component.js +0 -88
- package/esm5/lib/project/project-save/project-save.component.js +0 -120
- package/esm5/lib/project/project-share/project-share.component.js +0 -44
- package/esm5/lib/scene/scene-settings/scene-settings.component.js +0 -53
- package/esm5/lib/scene/scene.component.js +0 -57
- package/esm5/lib/services/animation.service.js +0 -18
- package/esm5/lib/services/config.service.js +0 -29
- package/esm5/lib/services/effect.service.js +0 -17
- package/esm5/lib/services/error-dialog.service.js +0 -46
- package/esm5/lib/services/fixture-pool.service.js +0 -36
- package/esm5/lib/services/fixture.service.js +0 -643
- package/esm5/lib/services/hotkey-target-exclude.service.js +0 -27
- package/esm5/lib/services/intro.service.js +0 -145
- package/esm5/lib/services/preset.service.js +0 -637
- package/esm5/lib/services/preview-mesh.service.js +0 -61
- package/esm5/lib/services/preview.service.js +0 -754
- package/esm5/lib/services/project-load.service.js +0 -185
- package/esm5/lib/services/project.service.js +0 -127
- package/esm5/lib/services/scene.service.js +0 -251
- package/esm5/lib/services/timeline.service.js +0 -845
- package/esm5/lib/services/universe.service.js +0 -36
- package/esm5/lib/services/user-ensure-login.service.js +0 -45
- package/esm5/lib/services/user.service.js +0 -95
- package/esm5/lib/services/uuid.service.js +0 -26
- package/esm5/lib/services/warning-dialog.service.js +0 -45
- package/esm5/lib/timeline/composition-settings/composition-settings.component.js +0 -206
- package/esm5/lib/timeline/timeline-grid/timeline-grid.component.js +0 -56
- package/esm5/lib/timeline/timeline.component.js +0 -243
- package/esm5/lib/user/user-login/user-login.component.js +0 -66
- package/esm5/lib/user/user-register/user-register.component.js +0 -91
- package/esm5/lib/wait-dialog/wait-dialog.component.js +0 -18
- package/esm5/lib/warning-dialog/warning-dialog.component.js +0 -43
- package/esm5/public_api.js +0 -7
- package/esm5/rocketshow-designer.js +0 -61
- package/fesm2015/rocketshow-designer.js +0 -7945
- package/fesm2015/rocketshow-designer.js.map +0 -1
- package/fesm5/rocketshow-designer.js +0 -9690
- package/fesm5/rocketshow-designer.js.map +0 -1
- package/lib/models/universe.d.ts +0 -8
- package/lib/services/universe.service.d.ts +0 -6
- package/rocketshow-designer-1.32.0.tgz +0 -0
- package/rocketshow-designer.d.ts +0 -60
- package/rocketshow-designer.metadata.json +0 -1
|
@@ -0,0 +1,672 @@
|
|
|
1
|
+
import { Component, HostListener, Input, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
+
import { BsModalService } from 'ngx-bootstrap/modal';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import Split from 'split.js';
|
|
6
|
+
import { PreviewComponent } from './preview/preview.component';
|
|
7
|
+
import { ProjectBrowserComponent } from './project/project-browser/project-browser.component';
|
|
8
|
+
import { ProjectImportComponent } from './project/project-import/project-import.component';
|
|
9
|
+
import { ProjectSaveComponent } from './project/project-save/project-save.component';
|
|
10
|
+
import { ProjectShareComponent } from './project/project-share/project-share.component';
|
|
11
|
+
import { ConfigService } from './services/config.service';
|
|
12
|
+
import { ErrorDialogService } from './services/error-dialog.service';
|
|
13
|
+
import { FixturePoolService } from './services/fixture-pool.service';
|
|
14
|
+
import { FixtureService } from './services/fixture.service';
|
|
15
|
+
import { HotkeyTargetExcludeService } from './services/hotkey-target-exclude.service';
|
|
16
|
+
import { IntroService } from './services/intro.service';
|
|
17
|
+
import { ProjectLoadService } from './services/project-load.service';
|
|
18
|
+
import { ProjectService } from './services/project.service';
|
|
19
|
+
import { TimelineService } from './services/timeline.service';
|
|
20
|
+
import { UserEnsureLoginService } from './services/user-ensure-login.service';
|
|
21
|
+
import { UserService } from './services/user.service';
|
|
22
|
+
import { WarningDialogService } from './services/warning-dialog.service';
|
|
23
|
+
import { TimelineComponent } from './timeline/timeline.component';
|
|
24
|
+
import { UserRegisterComponent } from './user/user-register/user-register.component';
|
|
25
|
+
import { HttpErrorResponse } from '@angular/common/http';
|
|
26
|
+
import * as i0 from "@angular/core";
|
|
27
|
+
import * as i1 from "@ngx-translate/core";
|
|
28
|
+
import * as i2 from "./services/project.service";
|
|
29
|
+
import * as i3 from "./services/config.service";
|
|
30
|
+
import * as i4 from "./services/fixture-pool.service";
|
|
31
|
+
import * as i5 from "./services/hotkey-target-exclude.service";
|
|
32
|
+
import * as i6 from "ngx-bootstrap/modal";
|
|
33
|
+
import * as i7 from "./services/user.service";
|
|
34
|
+
import * as i8 from "./services/user-ensure-login.service";
|
|
35
|
+
import * as i9 from "./services/project-load.service";
|
|
36
|
+
import * as i10 from "./services/warning-dialog.service";
|
|
37
|
+
import * as i11 from "./services/error-dialog.service";
|
|
38
|
+
import * as i12 from "./services/fixture.service";
|
|
39
|
+
import * as i13 from "./services/timeline.service";
|
|
40
|
+
import * as i14 from "./services/intro.service";
|
|
41
|
+
import * as i15 from "@angular/router";
|
|
42
|
+
import * as i16 from "@angular/common";
|
|
43
|
+
import * as i17 from "ngx-bootstrap/popover";
|
|
44
|
+
import * as i18 from "./preview/preview.component";
|
|
45
|
+
import * as i19 from "./scene/scene.component";
|
|
46
|
+
import * as i20 from "./timeline/timeline.component";
|
|
47
|
+
import * as i21 from "./fixture/fixture.component";
|
|
48
|
+
import * as i22 from "./fixture/fixture-capability/fixture-capability.component";
|
|
49
|
+
import * as i23 from "./fixture/fixture-settings/fixture-settings.component";
|
|
50
|
+
import * as i24 from "./effect/effect.component";
|
|
51
|
+
import * as i25 from "./preset/preset.component";
|
|
52
|
+
import * as i26 from "./master-dimmer/master-dimmer.component";
|
|
53
|
+
import * as i27 from "./fixture/fixture-channel/fixture-channel.component";
|
|
54
|
+
import * as i28 from "./intro/intro.component";
|
|
55
|
+
const _c0 = a0 => ({ height: a0 });
|
|
56
|
+
function DesignerComponent_li_52_Template(rf, ctx) { if (rf & 1) {
|
|
57
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
58
|
+
i0.ɵɵelementStart(0, "li", 38)(1, "a", 39);
|
|
59
|
+
i0.ɵɵlistener("click", function DesignerComponent_li_52_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.projectShare(); return i0.ɵɵresetView(false); });
|
|
60
|
+
i0.ɵɵelement(2, "i", 40);
|
|
61
|
+
i0.ɵɵtext(3);
|
|
62
|
+
i0.ɵɵpipe(4, "translate");
|
|
63
|
+
i0.ɵɵelementEnd()();
|
|
64
|
+
} if (rf & 2) {
|
|
65
|
+
i0.ɵɵadvance(3);
|
|
66
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 1, "designer.navigation.project-share"), "");
|
|
67
|
+
} }
|
|
68
|
+
function DesignerComponent_li_53_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
70
|
+
i0.ɵɵelementStart(0, "li", 3)(1, "a", 14);
|
|
71
|
+
i0.ɵɵelement(2, "i", 41);
|
|
72
|
+
i0.ɵɵtext(3);
|
|
73
|
+
i0.ɵɵpipe(4, "translate");
|
|
74
|
+
i0.ɵɵelementEnd();
|
|
75
|
+
i0.ɵɵelementStart(5, "div", 42)(6, "a", 43);
|
|
76
|
+
i0.ɵɵlistener("click", function DesignerComponent_li_53_Template_a_click_6_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.switchLanguage("en"); return i0.ɵɵresetView(false); });
|
|
77
|
+
i0.ɵɵtext(7, "English");
|
|
78
|
+
i0.ɵɵelementEnd();
|
|
79
|
+
i0.ɵɵelementStart(8, "a", 43);
|
|
80
|
+
i0.ɵɵlistener("click", function DesignerComponent_li_53_Template_a_click_8_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.switchLanguage("de"); return i0.ɵɵresetView(false); });
|
|
81
|
+
i0.ɵɵtext(9, "Deutsch");
|
|
82
|
+
i0.ɵɵelementEnd()()();
|
|
83
|
+
} if (rf & 2) {
|
|
84
|
+
i0.ɵɵadvance(3);
|
|
85
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 1, "designer.misc.language"), " ");
|
|
86
|
+
} }
|
|
87
|
+
function DesignerComponent_li_54_Template(rf, ctx) { if (rf & 1) {
|
|
88
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
89
|
+
i0.ɵɵelementStart(0, "li", 44)(1, "a", 45);
|
|
90
|
+
i0.ɵɵlistener("click", function DesignerComponent_li_54_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.userRegister(); return i0.ɵɵresetView(false); });
|
|
91
|
+
i0.ɵɵelement(2, "i", 46);
|
|
92
|
+
i0.ɵɵtext(3);
|
|
93
|
+
i0.ɵɵpipe(4, "translate");
|
|
94
|
+
i0.ɵɵelementEnd()();
|
|
95
|
+
} if (rf & 2) {
|
|
96
|
+
i0.ɵɵadvance(3);
|
|
97
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 1, "designer.navigation.login"), "");
|
|
98
|
+
} }
|
|
99
|
+
function DesignerComponent_li_55_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
101
|
+
i0.ɵɵelementStart(0, "li", 3)(1, "a", 14);
|
|
102
|
+
i0.ɵɵelement(2, "i", 46);
|
|
103
|
+
i0.ɵɵtext(3);
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
i0.ɵɵelementStart(4, "div", 42)(5, "a", 43);
|
|
106
|
+
i0.ɵɵlistener("click", function DesignerComponent_li_55_Template_a_click_5_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.userService.logout(); return i0.ɵɵresetView(false); });
|
|
107
|
+
i0.ɵɵelement(6, "i", 47);
|
|
108
|
+
i0.ɵɵtext(7);
|
|
109
|
+
i0.ɵɵpipe(8, "translate");
|
|
110
|
+
i0.ɵɵelementEnd()()();
|
|
111
|
+
} if (rf & 2) {
|
|
112
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
113
|
+
i0.ɵɵadvance(3);
|
|
114
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.userService.username, " ");
|
|
115
|
+
i0.ɵɵadvance(4);
|
|
116
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 2, "designer.navigation.logout"), "");
|
|
117
|
+
} }
|
|
118
|
+
function DesignerComponent_lib_app_scene_59_Template(rf, ctx) { if (rf & 1) {
|
|
119
|
+
i0.ɵɵelement(0, "lib-app-scene");
|
|
120
|
+
} }
|
|
121
|
+
function DesignerComponent_lib_app_preset_61_Template(rf, ctx) { if (rf & 1) {
|
|
122
|
+
i0.ɵɵelement(0, "lib-app-preset");
|
|
123
|
+
} }
|
|
124
|
+
function DesignerComponent_div_63_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "div", 49);
|
|
126
|
+
i0.ɵɵelement(2, "lib-app-preview", 50);
|
|
127
|
+
i0.ɵɵelementEnd()();
|
|
128
|
+
} if (rf & 2) {
|
|
129
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
130
|
+
i0.ɵɵclassProp("card-intro-active", ctx_r1.introService.showStep("preview"));
|
|
131
|
+
} }
|
|
132
|
+
function DesignerComponent_div_65_Template(rf, ctx) { if (rf & 1) {
|
|
133
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
134
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "div", 52)(2, "a", 53);
|
|
135
|
+
i0.ɵɵpipe(3, "translate");
|
|
136
|
+
i0.ɵɵlistener("click", function DesignerComponent_div_65_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openTab("capabilities")); });
|
|
137
|
+
i0.ɵɵelement(4, "i", 54);
|
|
138
|
+
i0.ɵɵelementEnd();
|
|
139
|
+
i0.ɵɵelementStart(5, "a", 55);
|
|
140
|
+
i0.ɵɵpipe(6, "translate");
|
|
141
|
+
i0.ɵɵlistener("click", function DesignerComponent_div_65_Template_a_click_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openTab("channels")); });
|
|
142
|
+
i0.ɵɵelement(7, "i", 56);
|
|
143
|
+
i0.ɵɵelementEnd();
|
|
144
|
+
i0.ɵɵelementStart(8, "a", 57);
|
|
145
|
+
i0.ɵɵpipe(9, "translate");
|
|
146
|
+
i0.ɵɵlistener("click", function DesignerComponent_div_65_Template_a_click_8_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openTab("effects")); });
|
|
147
|
+
i0.ɵɵelement(10, "i", 58);
|
|
148
|
+
i0.ɵɵelementEnd();
|
|
149
|
+
i0.ɵɵelementStart(11, "a", 59);
|
|
150
|
+
i0.ɵɵpipe(12, "translate");
|
|
151
|
+
i0.ɵɵlistener("click", function DesignerComponent_div_65_Template_a_click_11_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openTab("settings")); });
|
|
152
|
+
i0.ɵɵelement(13, "i", 60);
|
|
153
|
+
i0.ɵɵelementEnd()()();
|
|
154
|
+
} if (rf & 2) {
|
|
155
|
+
i0.ɵɵadvance(2);
|
|
156
|
+
i0.ɵɵpropertyInterpolate("popover", i0.ɵɵpipeBind1(3, 4, "designer.misc.capabilities"));
|
|
157
|
+
i0.ɵɵadvance(3);
|
|
158
|
+
i0.ɵɵpropertyInterpolate("popover", i0.ɵɵpipeBind1(6, 6, "designer.misc.channels"));
|
|
159
|
+
i0.ɵɵadvance(3);
|
|
160
|
+
i0.ɵɵpropertyInterpolate("popover", i0.ɵɵpipeBind1(9, 8, "designer.misc.effects"));
|
|
161
|
+
i0.ɵɵadvance(3);
|
|
162
|
+
i0.ɵɵpropertyInterpolate("popover", i0.ɵɵpipeBind1(12, 10, "designer.misc.settings"));
|
|
163
|
+
} }
|
|
164
|
+
function DesignerComponent_div_67_Template(rf, ctx) { if (rf & 1) {
|
|
165
|
+
i0.ɵɵelementStart(0, "div", 61)(1, "div", 62)(2, "div", 63)(3, "div", 64);
|
|
166
|
+
i0.ɵɵelement(4, "lib-app-fixture-capability");
|
|
167
|
+
i0.ɵɵelementEnd();
|
|
168
|
+
i0.ɵɵelementStart(5, "div", 65);
|
|
169
|
+
i0.ɵɵelement(6, "lib-app-fixture-channel");
|
|
170
|
+
i0.ɵɵelementEnd();
|
|
171
|
+
i0.ɵɵelementStart(7, "div", 66);
|
|
172
|
+
i0.ɵɵelement(8, "lib-app-effect");
|
|
173
|
+
i0.ɵɵelementEnd();
|
|
174
|
+
i0.ɵɵelementStart(9, "div", 67);
|
|
175
|
+
i0.ɵɵelement(10, "lib-app-fixture-settings");
|
|
176
|
+
i0.ɵɵelementEnd()()()();
|
|
177
|
+
} }
|
|
178
|
+
function DesignerComponent_lib_app_fixture_69_Template(rf, ctx) { if (rf & 1) {
|
|
179
|
+
i0.ɵɵelement(0, "lib-app-fixture");
|
|
180
|
+
} }
|
|
181
|
+
function DesignerComponent_lib_app_master_dimmer_71_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
i0.ɵɵelement(0, "lib-app-master-dimmer");
|
|
183
|
+
} }
|
|
184
|
+
function DesignerComponent_lib_app_timeline_73_Template(rf, ctx) { if (rf & 1) {
|
|
185
|
+
i0.ɵɵelement(0, "lib-app-timeline");
|
|
186
|
+
} }
|
|
187
|
+
function DesignerComponent_lib_app_master_dimmer_76_Template(rf, ctx) { if (rf & 1) {
|
|
188
|
+
i0.ɵɵelement(0, "lib-app-master-dimmer");
|
|
189
|
+
} }
|
|
190
|
+
function DesignerComponent_lib_app_scene_78_Template(rf, ctx) { if (rf & 1) {
|
|
191
|
+
i0.ɵɵelement(0, "lib-app-scene");
|
|
192
|
+
} }
|
|
193
|
+
export class DesignerComponent {
|
|
194
|
+
set menuHeightPx(value) {
|
|
195
|
+
this.configService.menuHeightPx = value;
|
|
196
|
+
this.configService.menuHeightChanged.next();
|
|
197
|
+
}
|
|
198
|
+
set externalCompositionsAvailable(value) {
|
|
199
|
+
this.timelineService.externalCompositionsAvailable = value;
|
|
200
|
+
}
|
|
201
|
+
set restUrl(value) {
|
|
202
|
+
this.configService.restUrl = value;
|
|
203
|
+
}
|
|
204
|
+
set enableMediaLibrary(value) {
|
|
205
|
+
this.configService.enableMediaLibrary = value;
|
|
206
|
+
}
|
|
207
|
+
set loginAvailable(value) {
|
|
208
|
+
this.configService.loginAvailable = value;
|
|
209
|
+
}
|
|
210
|
+
set shareAvailable(value) {
|
|
211
|
+
this.configService.shareAvailable = value;
|
|
212
|
+
}
|
|
213
|
+
set languageSwitch(value) {
|
|
214
|
+
this.configService.languageSwitch = value;
|
|
215
|
+
}
|
|
216
|
+
set newProjectTemplate(value) {
|
|
217
|
+
this.configService.newProjectTemplate = value;
|
|
218
|
+
}
|
|
219
|
+
set livePreview(value) {
|
|
220
|
+
this.configService.livePreview = value;
|
|
221
|
+
}
|
|
222
|
+
set localProfiles(value) {
|
|
223
|
+
this.configService.localProfiles = value;
|
|
224
|
+
}
|
|
225
|
+
set intro(value) {
|
|
226
|
+
this.configService.intro = value;
|
|
227
|
+
this.introService.refresh();
|
|
228
|
+
}
|
|
229
|
+
set uniqueProjectNames(value) {
|
|
230
|
+
this.configService.uniqueProjectNames = value;
|
|
231
|
+
}
|
|
232
|
+
set dropzoneChunking(value) {
|
|
233
|
+
this.configService.dropzoneChunking = value;
|
|
234
|
+
}
|
|
235
|
+
constructor(translateService, projectService, configService, fixturePoolService, hotkeyTargetExcludeService, modalService, userService, userEnsureLoginService, projectLoadService, warningDialogService, errorDialogService, fixtureService, timelineService, introService) {
|
|
236
|
+
this.translateService = translateService;
|
|
237
|
+
this.projectService = projectService;
|
|
238
|
+
this.configService = configService;
|
|
239
|
+
this.fixturePoolService = fixturePoolService;
|
|
240
|
+
this.hotkeyTargetExcludeService = hotkeyTargetExcludeService;
|
|
241
|
+
this.modalService = modalService;
|
|
242
|
+
this.userService = userService;
|
|
243
|
+
this.userEnsureLoginService = userEnsureLoginService;
|
|
244
|
+
this.projectLoadService = projectLoadService;
|
|
245
|
+
this.warningDialogService = warningDialogService;
|
|
246
|
+
this.errorDialogService = errorDialogService;
|
|
247
|
+
this.fixtureService = fixtureService;
|
|
248
|
+
this.timelineService = timelineService;
|
|
249
|
+
this.introService = introService;
|
|
250
|
+
// the size of the menu used in the designer
|
|
251
|
+
this.designerMenuSizePx = 20;
|
|
252
|
+
this.splitGutterSizePx = 13;
|
|
253
|
+
this.totalMenuHeightPx = 0;
|
|
254
|
+
this.currentTab = 'properties';
|
|
255
|
+
this.configService.menuHeightChanged.subscribe(() => {
|
|
256
|
+
this.calcTotalMenuHeight();
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
loadError(response) {
|
|
260
|
+
console.error(response);
|
|
261
|
+
let msg = 'designer.project.open-error';
|
|
262
|
+
let error;
|
|
263
|
+
if (response instanceof HttpErrorResponse) {
|
|
264
|
+
error = response && response.error ? response.error.error : 'unknown';
|
|
265
|
+
if (error === 'no-permission') {
|
|
266
|
+
msg = 'designer.project.open-no-permission-error';
|
|
267
|
+
error = undefined;
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
msg = 'designer.project.open-error';
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
error = response && response.message ? response.message : 'unknown';
|
|
275
|
+
}
|
|
276
|
+
this.errorDialogService.show(msg, error).subscribe(() => {
|
|
277
|
+
this.projectLoadService.new();
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
ngOnInit() {
|
|
281
|
+
if (localStorage.getItem('language')) {
|
|
282
|
+
this.translateService.use(localStorage.getItem('language'));
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
this.translateService.use('en');
|
|
286
|
+
}
|
|
287
|
+
this.calcTotalMenuHeight();
|
|
288
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
289
|
+
const projectId = urlParams.get('id');
|
|
290
|
+
const projectName = urlParams.get('name');
|
|
291
|
+
let shareToken = urlParams.get('token');
|
|
292
|
+
if (projectId) {
|
|
293
|
+
// load a project by query param ID
|
|
294
|
+
if (!shareToken) {
|
|
295
|
+
shareToken = '';
|
|
296
|
+
}
|
|
297
|
+
this.projectLoadService.load(Number.parseInt(projectId, 10), projectName, shareToken).subscribe(() => { }, (response) => {
|
|
298
|
+
this.loadError(response);
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
else if ((this.userService.isLoggedIn() || !this.configService.loginAvailable) &&
|
|
302
|
+
(this.userService.getAutoLoadProjectId() || this.userService.getAutoLoadProjectName())) {
|
|
303
|
+
// restore the last saved project
|
|
304
|
+
this.projectLoadService.load(this.userService.getAutoLoadProjectId(), this.userService.getAutoLoadProjectName()).subscribe(() => { }, (response) => {
|
|
305
|
+
this.loadError(response);
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
if (this.configService.newProjectTemplate) {
|
|
310
|
+
// load the new project template
|
|
311
|
+
this.projectLoadService.template();
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
this.projectLoadService.new();
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
calcTotalMenuHeight() {
|
|
319
|
+
this.totalMenuHeightPx = this.designerMenuSizePx + this.splitGutterSizePx + this.configService.menuHeightPx;
|
|
320
|
+
}
|
|
321
|
+
onResize() {
|
|
322
|
+
if (this.previewComponent) {
|
|
323
|
+
this.previewComponent.onResize();
|
|
324
|
+
}
|
|
325
|
+
if (this.timelineComponent) {
|
|
326
|
+
this.timelineComponent.onResize();
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
ngAfterViewInit() {
|
|
330
|
+
// Set up the splitter
|
|
331
|
+
setTimeout(() => {
|
|
332
|
+
Split(['#row1', '#row2', '#row3'], {
|
|
333
|
+
sizes: [42, 40, 18],
|
|
334
|
+
direction: 'vertical',
|
|
335
|
+
cursor: 'row-resize',
|
|
336
|
+
snapOffset: 0,
|
|
337
|
+
gutterSize: this.splitGutterSizePx,
|
|
338
|
+
onDrag: this.onResize.bind(this),
|
|
339
|
+
});
|
|
340
|
+
Split(['#scenes', '#presets', '#preview'], {
|
|
341
|
+
sizes: [20, 20, 60],
|
|
342
|
+
snapOffset: 0,
|
|
343
|
+
gutterSize: this.splitGutterSizePx,
|
|
344
|
+
onDrag: this.onResize.bind(this),
|
|
345
|
+
});
|
|
346
|
+
Split(['#capabilities', '#fixtures', '#masterDimmer'], {
|
|
347
|
+
sizes: [70, 24, 6],
|
|
348
|
+
snapOffset: 0,
|
|
349
|
+
gutterSize: this.splitGutterSizePx,
|
|
350
|
+
onDrag: this.onResize.bind(this),
|
|
351
|
+
minSize: 50,
|
|
352
|
+
});
|
|
353
|
+
this.onResize();
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
openTab(tab) {
|
|
357
|
+
// open a side tab (e.g. effects, channels, settings, etc.)
|
|
358
|
+
if (tab === 'settings') {
|
|
359
|
+
this.fixtureService.settingsSelection = true;
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
this.fixtureService.settingsSelection = false;
|
|
363
|
+
}
|
|
364
|
+
this.currentTab = tab;
|
|
365
|
+
}
|
|
366
|
+
openFixturePool() {
|
|
367
|
+
this.fixturePoolService.open();
|
|
368
|
+
}
|
|
369
|
+
projectNew() {
|
|
370
|
+
this.warningDialogService
|
|
371
|
+
.show('designer.misc.warning-proceed-unsaved')
|
|
372
|
+
.pipe(map((result) => {
|
|
373
|
+
if (result) {
|
|
374
|
+
this.projectLoadService.new();
|
|
375
|
+
}
|
|
376
|
+
}))
|
|
377
|
+
.subscribe();
|
|
378
|
+
}
|
|
379
|
+
projectOpen() {
|
|
380
|
+
this.warningDialogService
|
|
381
|
+
.show('designer.misc.warning-proceed-unsaved')
|
|
382
|
+
.pipe(map((result) => {
|
|
383
|
+
if (result) {
|
|
384
|
+
this.userEnsureLoginService.login().subscribe(() => {
|
|
385
|
+
this.modalService.show(ProjectBrowserComponent, { keyboard: true, ignoreBackdropClick: false });
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
}))
|
|
389
|
+
.subscribe();
|
|
390
|
+
}
|
|
391
|
+
projectSave() {
|
|
392
|
+
if (this.projectService.project.name) {
|
|
393
|
+
// this project has been saved before -> just save it again
|
|
394
|
+
this.projectService.save(this.projectService.project);
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
// this project has not yet been saved -> show the save as-dialog
|
|
398
|
+
this.userEnsureLoginService.login().subscribe(() => {
|
|
399
|
+
this.modalService.show(ProjectSaveComponent, { keyboard: true, ignoreBackdropClick: false });
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
projectSaveAs() {
|
|
404
|
+
this.userEnsureLoginService.login().subscribe(() => {
|
|
405
|
+
this.modalService.show(ProjectSaveComponent, { keyboard: true, ignoreBackdropClick: false });
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
userRegister() {
|
|
409
|
+
this.modalService.show(UserRegisterComponent, { keyboard: true, ignoreBackdropClick: false });
|
|
410
|
+
}
|
|
411
|
+
projectImport() {
|
|
412
|
+
this.warningDialogService
|
|
413
|
+
.show('designer.misc.warning-proceed-unsaved')
|
|
414
|
+
.pipe(map((result) => {
|
|
415
|
+
if (result) {
|
|
416
|
+
this.modalService.show(ProjectImportComponent, { keyboard: true, ignoreBackdropClick: false });
|
|
417
|
+
}
|
|
418
|
+
}))
|
|
419
|
+
.subscribe();
|
|
420
|
+
}
|
|
421
|
+
projectExport() {
|
|
422
|
+
const json = JSON.stringify(this.projectService.project, null, 2);
|
|
423
|
+
const element = document.createElement('a');
|
|
424
|
+
element.setAttribute('href', 'data:text/json;charset=UTF-8,' + encodeURIComponent(json));
|
|
425
|
+
element.setAttribute('download', this.projectService.project.name + '.rsd');
|
|
426
|
+
element.style.display = 'none';
|
|
427
|
+
document.body.appendChild(element);
|
|
428
|
+
element.click();
|
|
429
|
+
document.body.removeChild(element);
|
|
430
|
+
}
|
|
431
|
+
projectShare() {
|
|
432
|
+
if (!this.projectService.project.id) {
|
|
433
|
+
// a save is required first
|
|
434
|
+
this.errorDialogService.show('designer.project.share-no-save').subscribe();
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
// ignore backdrop click, because selecting the link text will also close the modal
|
|
438
|
+
this.modalService.show(ProjectShareComponent, { keyboard: true, ignoreBackdropClick: true });
|
|
439
|
+
}
|
|
440
|
+
handleKeyboardEvent(event) {
|
|
441
|
+
if (this.hotkeyTargetExcludeService.exclude(event)) {
|
|
442
|
+
return;
|
|
443
|
+
}
|
|
444
|
+
if (event.key === 'p') {
|
|
445
|
+
this.openFixturePool();
|
|
446
|
+
// prevent checkboxes being toggled, if in focus e.g.
|
|
447
|
+
event.stopPropagation();
|
|
448
|
+
event.preventDefault();
|
|
449
|
+
}
|
|
450
|
+
if ((event.ctrlKey || event.metaKey) && event.key === 'n') {
|
|
451
|
+
this.projectNew();
|
|
452
|
+
event.stopPropagation();
|
|
453
|
+
event.preventDefault();
|
|
454
|
+
}
|
|
455
|
+
if ((event.ctrlKey || event.metaKey) && event.key === 's') {
|
|
456
|
+
this.projectSave();
|
|
457
|
+
event.stopPropagation();
|
|
458
|
+
event.preventDefault();
|
|
459
|
+
}
|
|
460
|
+
if ((event.ctrlKey || event.metaKey) && event.key === 'o') {
|
|
461
|
+
this.projectOpen();
|
|
462
|
+
event.stopPropagation();
|
|
463
|
+
event.preventDefault();
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
switchLanguage(language) {
|
|
467
|
+
this.translateService.use(language);
|
|
468
|
+
localStorage.setItem('language', language);
|
|
469
|
+
}
|
|
470
|
+
static { this.ɵfac = function DesignerComponent_Factory(t) { return new (t || DesignerComponent)(i0.ɵɵdirectiveInject(i1.TranslateService), i0.ɵɵdirectiveInject(i2.ProjectService), i0.ɵɵdirectiveInject(i3.ConfigService), i0.ɵɵdirectiveInject(i4.FixturePoolService), i0.ɵɵdirectiveInject(i5.HotkeyTargetExcludeService), i0.ɵɵdirectiveInject(i6.BsModalService), i0.ɵɵdirectiveInject(i7.UserService), i0.ɵɵdirectiveInject(i8.UserEnsureLoginService), i0.ɵɵdirectiveInject(i9.ProjectLoadService), i0.ɵɵdirectiveInject(i10.WarningDialogService), i0.ɵɵdirectiveInject(i11.ErrorDialogService), i0.ɵɵdirectiveInject(i12.FixtureService), i0.ɵɵdirectiveInject(i13.TimelineService), i0.ɵɵdirectiveInject(i14.IntroService)); }; }
|
|
471
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DesignerComponent, selectors: [["lib-designer"]], viewQuery: function DesignerComponent_Query(rf, ctx) { if (rf & 1) {
|
|
472
|
+
i0.ɵɵviewQuery(PreviewComponent, 5);
|
|
473
|
+
i0.ɵɵviewQuery(TimelineComponent, 5);
|
|
474
|
+
} if (rf & 2) {
|
|
475
|
+
let _t;
|
|
476
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.previewComponent = _t.first);
|
|
477
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timelineComponent = _t.first);
|
|
478
|
+
} }, hostBindings: function DesignerComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
479
|
+
i0.ɵɵlistener("keydown", function DesignerComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyboardEvent($event); }, false, i0.ɵɵresolveDocument);
|
|
480
|
+
} }, inputs: { menuHeightPx: "menuHeightPx", externalCompositionsAvailable: "externalCompositionsAvailable", restUrl: "restUrl", enableMediaLibrary: "enableMediaLibrary", loginAvailable: "loginAvailable", shareAvailable: "shareAvailable", languageSwitch: "languageSwitch", newProjectTemplate: "newProjectTemplate", livePreview: "livePreview", localProfiles: "localProfiles", intro: "intro", uniqueProjectNames: "uniqueProjectNames", dropzoneChunking: "dropzoneChunking" }, decls: 80, vars: 53, consts: [["id", "designer", 3, "ngStyle"], [1, "navbar", "navbar-expand-lg", "navbar-light", "bg-light", "border-secondary", 2, "border-bottom", "1px solid #444", "height", "20px", "z-index", "9999"], [1, "navbar-nav", "mr-auto"], [1, "nav-item", "dropdown"], ["href", "#", "id", "fileDropdown", "data-toggle", "dropdown", "aria-haspopup", "true", "aria-expanded", "false", 1, "nav-link", "dropdown-toggle"], ["aria-labelledby", "fileDropdown", 1, "dropdown-menu"], ["href", "#", 1, "dropdown-item", "d-none", "d-md-block", 3, "click"], ["aria-hidden", "true", 1, "fa", "fa-fw", "fa-file-o"], ["href", "#", 1, "dropdown-item", 3, "click"], ["aria-hidden", "true", 1, "fa", "fa-fw", "fa-folder-open-o"], ["aria-hidden", "true", 1, "fa", "fa-fw", "fa-floppy-o"], ["aria-hidden", "true", 1, "fa", "fa-fw", "fa-download"], ["aria-hidden", "true", 1, "fa", "fa-fw", "fa-external-link"], [1, "nav-item", "dropdown", "d-none", "d-md-block"], ["href", "#", "id", "settingsDropdown", "data-toggle", "dropdown", "aria-haspopup", "true", "aria-expanded", "false", 1, "nav-link", "dropdown-toggle"], ["aria-labelledby", "settingsDropdown", 1, "dropdown-menu"], ["href", "https://rocketshow.net/support/", "target", "_blank", 1, "dropdown-item"], [1, "navbar-nav"], ["class", "nav-item d-none d-md-flex", "data-toggle", "collapse", 4, "ngIf"], ["class", "nav-item dropdown", 4, "ngIf"], ["class", "nav-item", "data-toggle", "collapse", 4, "ngIf"], [1, "h-100", "d-none", "d-md-block"], ["id", "row1", 1, "split", "split-vertical", "clearfix", "pt-3", "pl-3"], ["id", "scenes", 1, "split", "split-horizontal", "h-100"], [4, "ngIf"], ["id", "presets", 1, "split", "split-horizontal", "h-100"], ["id", "preview", 1, "split", "split-horizontal", "h-100", "pr-3"], ["class", "card border-secondary h-100", 3, "card-intro-active", 4, "ngIf"], ["id", "row2", 1, "split", "split-vertical", "clearfix", "px-3", "d-flex", 2, "flex-direction", "row"], ["class", "col col-auto p-0", "style", "margin-right: -1px", 4, "ngIf"], ["id", "capabilities", 1, "split", "split-horizontal", "h-100", 2, "padding-left", "1rem"], ["class", "row h-100", 4, "ngIf"], ["id", "fixtures", 1, "split", "split-horizontal", "h-100"], ["id", "masterDimmer", 1, "split", "split-horizontal", "h-100"], ["id", "row3", 1, "split", "split-vertical", "clearfix", "px-3", "pb-3", 2, "padding-bottom", "20px"], [1, "d-md-none", "p-3"], [1, "mt-3"], [1, "d-none", "d-md-flex"], ["data-toggle", "collapse", 1, "nav-item", "d-none", "d-md-flex"], ["routerLinkActive", "active", 1, "nav-link", "text-primary", 3, "click"], ["aria-hidden", "true", 1, "fa", "fa-share-alt"], ["aria-hidden", "true", 1, "fa", "fa-globe"], ["aria-labelledby", "settingsDropdown", 1, "dropdown-menu", "dropdown-menu-right"], ["href", "#", "target", "_blank", 1, "dropdown-item", 3, "click"], ["data-toggle", "collapse", 1, "nav-item"], ["routerLinkActive", "active", 1, "nav-link", 3, "click"], ["aria-hidden", "true", 1, "fa", "fa-user"], ["aria-hidden", "true", 1, "fa", "fa-sign-out"], [1, "card", "border-secondary", "h-100"], [1, "card-body", "p-0", "h-100"], [1, "h-100"], [1, "col", "col-auto", "p-0", 2, "margin-right", "-1px"], ["id", "v-pills-tab", "role", "tablist", "aria-orientation", "vertical", 1, "nav", "flex-column", "nav-pills"], ["id", "v-pills-capabilities-tab", "container", "body", "placement", "right", "triggers", "mouseenter:mouseleave", "data-toggle", "pill", "href", "#v-pills-capabilities", "role", "tab", "aria-controls", "v-pills-capabilities", "aria-selected", "true", 1, "nav-link", "px-3", "active", 3, "click", "popover"], ["aria-hidden", "true", 1, "fa", "fa-bolt", "fa-fw"], ["id", "v-pills-channels-tab", "container", "body", "placement", "right", "triggers", "mouseenter:mouseleave", "data-toggle", "pill", "href", "#v-pills-channels", "role", "tab", "aria-controls", "v-pills-channels", "aria-selected", "false", 1, "nav-link", "px-3", 3, "click", "popover"], ["aria-hidden", "true", 1, "fa", "fa-sliders", "fa-fw"], ["id", "v-pills-effects-tab", "container", "body", "placement", "right", "triggers", "mouseenter:mouseleave", "data-toggle", "pill", "href", "#v-pills-effects", "role", "tab", "aria-controls", "v-pills-effects", "aria-selected", "false", 1, "nav-link", "px-3", 3, "click", "popover"], ["aria-hidden", "true", 1, "fa", "fa-magic", "fa-fw"], ["id", "v-pills-settings-tab", "container", "body", "placement", "right", "triggers", "mouseenter:mouseleave", "data-toggle", "pill", "href", "#v-pills-settings", "role", "tab", "aria-controls", "v-pills-settings", "aria-selected", "false", 1, "nav-link", "px-3", 2, "border-top", "1px solid #444", 3, "click", "popover"], ["aria-hidden", "true", 1, "fa", "fa-cog", "fa-fw"], [1, "row", "h-100"], [1, "col", "pl-0", "h-100"], ["id", "v-pills-tabContent", 1, "tab-content", "h-100"], ["id", "v-pills-capabilities", "role", "tabpanel", 1, "tab-pane", "h-100", "show", "active"], ["id", "v-pills-channels", "role", "tabpanel", 1, "tab-pane", "h-100", "show"], ["id", "v-pills-effects", "role", "tabpanel", "aria-labelledby", "v-pills-profile-tab", 1, "tab-pane", "h-100"], ["id", "v-pills-settings", "role", "tabpanel", "aria-labelledby", "v-pills-home-tab", 1, "tab-pane", "h-100"]], template: function DesignerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
481
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "nav", 1)(2, "ul", 2)(3, "li", 3)(4, "a", 4);
|
|
482
|
+
i0.ɵɵtext(5);
|
|
483
|
+
i0.ɵɵpipe(6, "translate");
|
|
484
|
+
i0.ɵɵelementEnd();
|
|
485
|
+
i0.ɵɵelementStart(7, "div", 5)(8, "a", 6);
|
|
486
|
+
i0.ɵɵlistener("click", function DesignerComponent_Template_a_click_8_listener() { ctx.projectNew(); return false; });
|
|
487
|
+
i0.ɵɵelement(9, "i", 7);
|
|
488
|
+
i0.ɵɵtext(10);
|
|
489
|
+
i0.ɵɵpipe(11, "translate");
|
|
490
|
+
i0.ɵɵelementEnd();
|
|
491
|
+
i0.ɵɵelementStart(12, "a", 8);
|
|
492
|
+
i0.ɵɵlistener("click", function DesignerComponent_Template_a_click_12_listener() { ctx.projectOpen(); return false; });
|
|
493
|
+
i0.ɵɵelement(13, "i", 9);
|
|
494
|
+
i0.ɵɵtext(14);
|
|
495
|
+
i0.ɵɵpipe(15, "translate");
|
|
496
|
+
i0.ɵɵelementEnd();
|
|
497
|
+
i0.ɵɵelementStart(16, "a", 6);
|
|
498
|
+
i0.ɵɵlistener("click", function DesignerComponent_Template_a_click_16_listener() { ctx.projectSave(); return false; });
|
|
499
|
+
i0.ɵɵelement(17, "i", 10);
|
|
500
|
+
i0.ɵɵtext(18);
|
|
501
|
+
i0.ɵɵpipe(19, "translate");
|
|
502
|
+
i0.ɵɵelementEnd();
|
|
503
|
+
i0.ɵɵelementStart(20, "a", 6);
|
|
504
|
+
i0.ɵɵlistener("click", function DesignerComponent_Template_a_click_20_listener() { ctx.projectSaveAs(); return false; });
|
|
505
|
+
i0.ɵɵelement(21, "i", 10);
|
|
506
|
+
i0.ɵɵtext(22);
|
|
507
|
+
i0.ɵɵpipe(23, "translate");
|
|
508
|
+
i0.ɵɵelementEnd();
|
|
509
|
+
i0.ɵɵelementStart(24, "a", 6);
|
|
510
|
+
i0.ɵɵlistener("click", function DesignerComponent_Template_a_click_24_listener() { ctx.projectImport(); return false; });
|
|
511
|
+
i0.ɵɵelement(25, "i", 11);
|
|
512
|
+
i0.ɵɵtext(26);
|
|
513
|
+
i0.ɵɵpipe(27, "translate");
|
|
514
|
+
i0.ɵɵelementEnd();
|
|
515
|
+
i0.ɵɵelementStart(28, "a", 6);
|
|
516
|
+
i0.ɵɵlistener("click", function DesignerComponent_Template_a_click_28_listener() { ctx.projectExport(); return false; });
|
|
517
|
+
i0.ɵɵelement(29, "i", 12);
|
|
518
|
+
i0.ɵɵtext(30);
|
|
519
|
+
i0.ɵɵpipe(31, "translate");
|
|
520
|
+
i0.ɵɵelementEnd()()();
|
|
521
|
+
i0.ɵɵelementStart(32, "li", 13)(33, "a", 14);
|
|
522
|
+
i0.ɵɵtext(34);
|
|
523
|
+
i0.ɵɵpipe(35, "translate");
|
|
524
|
+
i0.ɵɵelementEnd();
|
|
525
|
+
i0.ɵɵelementStart(36, "div", 15)(37, "a", 8);
|
|
526
|
+
i0.ɵɵlistener("click", function DesignerComponent_Template_a_click_37_listener() { ctx.openFixturePool(); return false; });
|
|
527
|
+
i0.ɵɵtext(38);
|
|
528
|
+
i0.ɵɵpipe(39, "translate");
|
|
529
|
+
i0.ɵɵelementEnd()()();
|
|
530
|
+
i0.ɵɵelementStart(40, "li", 13)(41, "a", 14);
|
|
531
|
+
i0.ɵɵtext(42);
|
|
532
|
+
i0.ɵɵpipe(43, "translate");
|
|
533
|
+
i0.ɵɵelementEnd();
|
|
534
|
+
i0.ɵɵelementStart(44, "div", 15)(45, "a", 8);
|
|
535
|
+
i0.ɵɵlistener("click", function DesignerComponent_Template_a_click_45_listener() { ctx.introService.reset(); return false; });
|
|
536
|
+
i0.ɵɵtext(46);
|
|
537
|
+
i0.ɵɵpipe(47, "translate");
|
|
538
|
+
i0.ɵɵelementEnd();
|
|
539
|
+
i0.ɵɵelementStart(48, "a", 16);
|
|
540
|
+
i0.ɵɵtext(49);
|
|
541
|
+
i0.ɵɵpipe(50, "translate");
|
|
542
|
+
i0.ɵɵelementEnd()()()();
|
|
543
|
+
i0.ɵɵelementStart(51, "ul", 17);
|
|
544
|
+
i0.ɵɵtemplate(52, DesignerComponent_li_52_Template, 5, 3, "li", 18)(53, DesignerComponent_li_53_Template, 10, 3, "li", 19)(54, DesignerComponent_li_54_Template, 5, 3, "li", 20)(55, DesignerComponent_li_55_Template, 9, 4, "li", 19);
|
|
545
|
+
i0.ɵɵelementEnd()();
|
|
546
|
+
i0.ɵɵelementStart(56, "div", 21)(57, "div", 22)(58, "div", 23);
|
|
547
|
+
i0.ɵɵtemplate(59, DesignerComponent_lib_app_scene_59_Template, 1, 0, "lib-app-scene", 24);
|
|
548
|
+
i0.ɵɵelementEnd();
|
|
549
|
+
i0.ɵɵelementStart(60, "div", 25);
|
|
550
|
+
i0.ɵɵtemplate(61, DesignerComponent_lib_app_preset_61_Template, 1, 0, "lib-app-preset", 24);
|
|
551
|
+
i0.ɵɵelementEnd();
|
|
552
|
+
i0.ɵɵelementStart(62, "div", 26);
|
|
553
|
+
i0.ɵɵtemplate(63, DesignerComponent_div_63_Template, 3, 2, "div", 27);
|
|
554
|
+
i0.ɵɵelementEnd()();
|
|
555
|
+
i0.ɵɵelementStart(64, "div", 28);
|
|
556
|
+
i0.ɵɵtemplate(65, DesignerComponent_div_65_Template, 14, 12, "div", 29);
|
|
557
|
+
i0.ɵɵelementStart(66, "div", 30);
|
|
558
|
+
i0.ɵɵtemplate(67, DesignerComponent_div_67_Template, 11, 0, "div", 31);
|
|
559
|
+
i0.ɵɵelementEnd();
|
|
560
|
+
i0.ɵɵelementStart(68, "div", 32);
|
|
561
|
+
i0.ɵɵtemplate(69, DesignerComponent_lib_app_fixture_69_Template, 1, 0, "lib-app-fixture", 24);
|
|
562
|
+
i0.ɵɵelementEnd();
|
|
563
|
+
i0.ɵɵelementStart(70, "div", 33);
|
|
564
|
+
i0.ɵɵtemplate(71, DesignerComponent_lib_app_master_dimmer_71_Template, 1, 0, "lib-app-master-dimmer", 24);
|
|
565
|
+
i0.ɵɵelementEnd()();
|
|
566
|
+
i0.ɵɵelementStart(72, "div", 34);
|
|
567
|
+
i0.ɵɵtemplate(73, DesignerComponent_lib_app_timeline_73_Template, 1, 0, "lib-app-timeline", 24);
|
|
568
|
+
i0.ɵɵelementEnd()();
|
|
569
|
+
i0.ɵɵelementStart(74, "div", 35)(75, "div");
|
|
570
|
+
i0.ɵɵtemplate(76, DesignerComponent_lib_app_master_dimmer_76_Template, 1, 0, "lib-app-master-dimmer", 24);
|
|
571
|
+
i0.ɵɵelementEnd();
|
|
572
|
+
i0.ɵɵelementStart(77, "div", 36);
|
|
573
|
+
i0.ɵɵtemplate(78, DesignerComponent_lib_app_scene_78_Template, 1, 0, "lib-app-scene", 24);
|
|
574
|
+
i0.ɵɵelementEnd()()();
|
|
575
|
+
i0.ɵɵelement(79, "lib-app-intro", 37);
|
|
576
|
+
} if (rf & 2) {
|
|
577
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(51, _c0, "calc(100% - " + ctx.totalMenuHeightPx + "px)"));
|
|
578
|
+
i0.ɵɵadvance(5);
|
|
579
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 27, "designer.navigation.project"), " ");
|
|
580
|
+
i0.ɵɵadvance(5);
|
|
581
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 29, "designer.navigation.project-new"), "");
|
|
582
|
+
i0.ɵɵadvance(4);
|
|
583
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 31, "designer.navigation.project-open"), "");
|
|
584
|
+
i0.ɵɵadvance(4);
|
|
585
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(19, 33, "designer.navigation.project-save"), "");
|
|
586
|
+
i0.ɵɵadvance(4);
|
|
587
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 35, "designer.navigation.project-save-as"), "");
|
|
588
|
+
i0.ɵɵadvance(4);
|
|
589
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(27, 37, "designer.navigation.project-import"), "");
|
|
590
|
+
i0.ɵɵadvance(4);
|
|
591
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(31, 39, "designer.navigation.project-export"), "");
|
|
592
|
+
i0.ɵɵadvance(4);
|
|
593
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(35, 41, "designer.navigation.settings"), " ");
|
|
594
|
+
i0.ɵɵadvance(4);
|
|
595
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(39, 43, "designer.navigation.fixture-pool"));
|
|
596
|
+
i0.ɵɵadvance(4);
|
|
597
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(43, 45, "designer.navigation.help"), " ");
|
|
598
|
+
i0.ɵɵadvance(4);
|
|
599
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(47, 47, "designer.navigation.reset-intro"));
|
|
600
|
+
i0.ɵɵadvance(3);
|
|
601
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(50, 49, "designer.navigation.support"));
|
|
602
|
+
i0.ɵɵadvance(3);
|
|
603
|
+
i0.ɵɵproperty("ngIf", ctx.configService.shareAvailable);
|
|
604
|
+
i0.ɵɵadvance();
|
|
605
|
+
i0.ɵɵproperty("ngIf", ctx.configService.languageSwitch);
|
|
606
|
+
i0.ɵɵadvance();
|
|
607
|
+
i0.ɵɵproperty("ngIf", ctx.configService.loginAvailable && !ctx.userService.isLoggedIn());
|
|
608
|
+
i0.ɵɵadvance();
|
|
609
|
+
i0.ɵɵproperty("ngIf", ctx.configService.loginAvailable && ctx.userService.isLoggedIn());
|
|
610
|
+
i0.ɵɵadvance(4);
|
|
611
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project);
|
|
612
|
+
i0.ɵɵadvance(2);
|
|
613
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project);
|
|
614
|
+
i0.ɵɵadvance(2);
|
|
615
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project);
|
|
616
|
+
i0.ɵɵadvance(2);
|
|
617
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project);
|
|
618
|
+
i0.ɵɵadvance(2);
|
|
619
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project);
|
|
620
|
+
i0.ɵɵadvance(2);
|
|
621
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project);
|
|
622
|
+
i0.ɵɵadvance(2);
|
|
623
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project);
|
|
624
|
+
i0.ɵɵadvance(2);
|
|
625
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project);
|
|
626
|
+
i0.ɵɵadvance(3);
|
|
627
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project);
|
|
628
|
+
i0.ɵɵadvance(2);
|
|
629
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project);
|
|
630
|
+
} }, dependencies: [i15.RouterLinkActive, i16.NgIf, i16.NgStyle, i17.PopoverDirective, i18.PreviewComponent, i19.SceneComponent, i20.TimelineComponent, i21.FixtureComponent, i22.FixtureCapabilityComponent, i23.FixtureSettingsComponent, i24.EffectComponent, i25.PresetComponent, i26.MasterDimmerComponent, i27.FixtureChannelComponent, i28.IntroComponent, i1.TranslatePipe], styles: ["body{font-size:14px}.modal-full{max-width:unset!important;margin:1.75rem!important}.modal{z-index:10001}#designer .nav-link{cursor:pointer}#designer .dropdown-menu{z-index:100000}#designer .row{flex-wrap:unset}#designer .navbar-nav{flex-direction:row!important}#designer .navbar-expand-lg{flex-flow:row nowrap!important;justify-content:flex-start!important}#designer .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem!important;padding-left:.5rem!important}#designer .list-group-item.active{color:#fff!important;background-color:#fd7e14!important;border-color:#fd7e14!important}#designer *:focus{outline:none}#designer select{font-size:.8rem;cursor:pointer}#designer input{font-size:.7rem;background-color:transparent;color:#fff;border:1px solid}#designer input,#designer select{border-color:#dee2e6}#designer .list-group-item{padding:.3rem 1.25rem;border-left:none;border-right:none}#designer .nav-pills .nav-link.active,#designer .nav-pills .show>.nav-link{background-color:#444}#designer .nav a,#designer .panel-title .btn-link{color:#fff!important}#designer .accordion-toggle .btn,#designer .accordion-toggle button{padding:0}#designer .card-body{overflow:auto;padding:.8rem}#designer .card-header{margin-bottom:0}#designer .card-header{padding:.4rem}#designer .panel-body{background-color:#303030}#designer .list-group-item.active-light{background-color:#906542;border-color:#906542}#designer .inactive-list-item{opacity:.3}#designer span.bigcheck-target{font-family:FontAwesome}#designer input[type=checkbox].bigcheck{position:relative;left:-999em}#designer input[type=checkbox].bigcheck+span.bigcheck-target:after{content:\"\\f096\"}#designer input[type=checkbox].bigcheck:checked+span.bigcheck-target:after{content:\"\\f046\"}#designer .gutter.gutter-horizontal{cursor:ew-resize}#designer .gutter.gutter-vertical{cursor:ns-resize}#designer .split-horizontal,#designer .gutter.gutter-horizontal{float:left}#designer .split-vertical,#designer .gutter.gutter-horizontal{height:100%}#designer .split{overflow-y:hidden;overflow-x:hidden}#designer .panel{background-color:transparent}#designer .slider{cursor:pointer}#designer .slider-horizontal .slider-track{height:2px!important;margin-top:-2px!important}#designer .slider-vertical .slider-track{width:2px!important;margin-left:4px!important}#designer .slider-track,#designer .slider-track-low,#designer .slider-track-high,#designer .slider-selection{background-color:#fff!important;border-radius:0!important;background-image:none!important;box-shadow:none!important}#designer .slider-handle{width:13px!important;height:13px!important;background-color:#fff!important;background-image:none!important;border:1px solid #303030}#designer .slider-vertical .slider-handle{margin-left:4px!important}#designer .slider-horizontal .slider-handle{margin-top:2px!important}#designer .slider-input{width:35px;margin-left:8px;text-align:center}#designer .slider-input-readonly{width:35px;margin-left:8px;text-align:center;color:#a9a9a9;border-color:gray}#designer .capability-container{padding:0;height:0}#designer accordion-group>div{border:none!important}#designer .popover{background-color:#fff}#designer .popover-body{color:#000}#designer .bs-popover-right .arrow:after,#designer .bs-popover-auto[x-placement^=right] .arrow:after{border-right-color:#fff}#designer .bs-popover-left .arrow:after,#designer .bs-popover-auto[x-placement^=left] .arrow:after{border-left-color:#fff}#designer .bs-popover-bottom .arrow:after,#designer .bs-popover-auto[x-placement^=bottom] .arrow:after{border-bottom-color:#fff}#designer .bs-popover-top .arrow:after,#designer .bs-popover-auto[x-placement^=top] .arrow:after{border-top-color:#fff}#designer .iro__wheel,#designer .iro__slider{cursor:pointer}#designer .pan-tilt-grid path{fill:none;stroke:#fff;stroke-width:10px}#designer .pan-tilt-grid circle{fill:#4682b4;stroke:#fff;stroke-width:3px}#designer .capability{overflow:visible}#designer .capability-deactivated{opacity:.4}#designer .wavesurfer-region{z-index:5!important}#designer .wavesurfer-region[data-region-selected=true]{z-index:6!important}#designer .wavesurfer-region[data-region-preset=true]{height:50%!important;top:50%!important}#designer .wavesurfer-region[data-region-name]:after{content:attr(data-region-name);margin-left:20px}#designer .wavesurfer-handle{width:10px!important;max-width:10px!important;border:1px solid #ddd;background:#0000001a;box-sizing:border-box;opacity:0;cursor:unset!important}#designer .wavesurfer-handle-end{margin-left:-10px}#designer .wavesurfer-region[data-region-selectable=true] .wavesurfer-handle{opacity:1;cursor:col-resize!important}#designer .wavesurfer-handle:before,#designer .wavesurfer-handle:after{content:\"\";display:block;position:absolute;z-index:1;border-top:1px solid #fff;border-bottom:1px solid #fff;height:4px;left:5%;right:5%;top:50%;transform:translateY(-50%)}#designer .wavesurfer-handle:before{margin-top:-3px}#designer timeline{overflow:scroll!important;overflow:-moz-scrollbars-none;-ms-overflow-style:none;scrollbar-width:none;cursor:s-resize}#designer timeline::-webkit-scrollbar{height:0!important}#designer cursor{top:-20px!important}#designer wave{border-right-color:#fd7e14!important;cursor:col-resize}\n"], encapsulation: 2 }); }
|
|
631
|
+
}
|
|
632
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DesignerComponent, [{
|
|
633
|
+
type: Component,
|
|
634
|
+
args: [{ selector: 'lib-designer', encapsulation: ViewEncapsulation.None, template: "<!-- Wrap the whole component inside a div to encapsulate the CSS -->\n\n<!-- 100 % height minus the menu bar above and the gutter size of 13 px -->\n<!-- <div style=\"height: calc(100% - 33px)\"> -->\n<div id=\"designer\" [ngStyle]=\"{ height: 'calc(100% - ' + totalMenuHeightPx + 'px)' }\">\n <!-- Navigation -->\n <nav\n class=\"navbar navbar-expand-lg navbar-light bg-light border-secondary\"\n style=\"border-bottom: 1px solid #444; height: 20px; z-index: 9999\"\n >\n <!-- Menu buttons -->\n <ul class=\"navbar-nav mr-auto\">\n <li class=\"nav-item dropdown\">\n <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"fileDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n {{ 'designer.navigation.project' | translate }}\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"fileDropdown\">\n <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectNew(); (false)\"\n ><i class=\"fa fa-fw fa-file-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-new' | translate }}</a\n >\n <a class=\"dropdown-item\" href=\"#\" (click)=\"projectOpen(); (false)\"\n ><i class=\"fa fa-fw fa-folder-open-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-open' | translate }}</a\n >\n <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectSave(); (false)\"\n ><i class=\"fa fa-fw fa-floppy-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-save' | translate }}</a\n >\n <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectSaveAs(); (false)\"\n ><i class=\"fa fa-fw fa-floppy-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-save-as' | translate }}</a\n >\n <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectImport(); (false)\"\n ><i class=\"fa fa-fw fa-download\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-import' | translate }}</a\n >\n <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectExport(); (false)\"\n ><i class=\"fa fa-fw fa-external-link\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-export' | translate }}</a\n >\n </div>\n </li>\n <li class=\"nav-item dropdown d-none d-md-block\">\n <a\n class=\"nav-link dropdown-toggle\"\n href=\"#\"\n id=\"settingsDropdown\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {{ 'designer.navigation.settings' | translate }}\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"settingsDropdown\">\n <a class=\"dropdown-item\" href=\"#\" (click)=\"openFixturePool(); (false)\">{{ 'designer.navigation.fixture-pool' | translate }}</a>\n <!-- <a class=\"dropdown-item\" href=\"#\">{{ 'designer.navigation.stage' | translate }}</a> -->\n </div>\n </li>\n <li class=\"nav-item dropdown d-none d-md-block\">\n <a\n class=\"nav-link dropdown-toggle\"\n href=\"#\"\n id=\"settingsDropdown\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {{ 'designer.navigation.help' | translate }}\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"settingsDropdown\">\n <a class=\"dropdown-item\" href=\"#\" (click)=\"introService.reset(); (false)\">{{ 'designer.navigation.reset-intro' | translate }}</a>\n <a class=\"dropdown-item\" href=\"https://rocketshow.net/support/\" target=\"_blank\">{{\n 'designer.navigation.support' | translate\n }}</a>\n </div>\n </li>\n </ul>\n\n <ul class=\"navbar-nav\">\n <li *ngIf=\"configService.shareAvailable\" class=\"nav-item d-none d-md-flex\" data-toggle=\"collapse\">\n <a class=\"nav-link text-primary\" (click)=\"projectShare(); (false)\" routerLinkActive=\"active\"\n ><i class=\"fa fa-share-alt\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-share' | translate }}</a\n >\n </li>\n\n <li *ngIf=\"configService.languageSwitch\" class=\"nav-item dropdown\">\n <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"settingsDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"\n ><i class=\"fa fa-globe\" aria-hidden=\"true\"></i>\n {{ 'designer.misc.language' | translate }}\n </a>\n <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"settingsDropdown\">\n <a class=\"dropdown-item\" href=\"#\" (click)=\"switchLanguage('en'); (false)\" target=\"_blank\">English</a>\n <a class=\"dropdown-item\" href=\"#\" (click)=\"switchLanguage('de'); (false)\" target=\"_blank\">Deutsch</a>\n </div>\n </li>\n\n <li *ngIf=\"configService.loginAvailable && !userService.isLoggedIn()\" class=\"nav-item\" data-toggle=\"collapse\">\n <a class=\"nav-link\" (click)=\"userRegister(); (false)\" routerLinkActive=\"active\"\n ><i class=\"fa fa-user\" aria-hidden=\"true\"></i> {{ 'designer.navigation.login' | translate }}</a\n >\n </li>\n\n <li *ngIf=\"configService.loginAvailable && userService.isLoggedIn()\" class=\"nav-item dropdown\">\n <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"settingsDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"\n ><i class=\"fa fa-user\" aria-hidden=\"true\"></i>\n {{ userService.username }}\n </a>\n <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"settingsDropdown\">\n <a class=\"dropdown-item\" href=\"#\" (click)=\"userService.logout(); (false)\" target=\"_blank\"\n ><i class=\"fa fa-sign-out\" aria-hidden=\"true\"></i> {{ 'designer.navigation.logout' | translate }}</a\n >\n </div>\n </li>\n </ul>\n </nav>\n\n <!-- The main content for larger screens -->\n <div class=\"h-100 d-none d-md-block\">\n <div id=\"row1\" class=\"split split-vertical clearfix pt-3 pl-3\">\n <!-- Scenes -->\n <div id=\"scenes\" class=\"split split-horizontal h-100\">\n <lib-app-scene *ngIf=\"projectService.project\"></lib-app-scene>\n </div>\n\n <!-- Presets -->\n <div id=\"presets\" class=\"split split-horizontal h-100\">\n <lib-app-preset *ngIf=\"projectService.project\"></lib-app-preset>\n </div>\n\n <!-- 3D preview -->\n <div id=\"preview\" class=\"split split-horizontal h-100 pr-3\">\n <div\n *ngIf=\"projectService.project\"\n class=\"card border-secondary h-100\"\n [class.card-intro-active]=\"introService.showStep('preview')\"\n >\n <div class=\"card-body p-0 h-100\">\n <lib-app-preview class=\"h-100\"></lib-app-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div id=\"row2\" class=\"split split-vertical clearfix px-3 d-flex\" style=\"flex-direction: row\">\n <!-- Menu for the capabilities, channels, effects and settings -->\n <div *ngIf=\"projectService.project\" class=\"col col-auto p-0\" style=\"margin-right: -1px\">\n <div class=\"nav flex-column nav-pills\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\n <a\n class=\"nav-link px-3 active\"\n (click)=\"openTab('capabilities')\"\n id=\"v-pills-capabilities-tab\"\n popover=\"{{ 'designer.misc.capabilities' | translate }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"mouseenter:mouseleave\"\n data-toggle=\"pill\"\n href=\"#v-pills-capabilities\"\n role=\"tab\"\n aria-controls=\"v-pills-capabilities\"\n aria-selected=\"true\"\n >\n <i class=\"fa fa-bolt fa-fw\" aria-hidden=\"true\"></i>\n </a>\n <a\n class=\"nav-link px-3\"\n (click)=\"openTab('channels')\"\n id=\"v-pills-channels-tab\"\n popover=\"{{ 'designer.misc.channels' | translate }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"mouseenter:mouseleave\"\n data-toggle=\"pill\"\n href=\"#v-pills-channels\"\n role=\"tab\"\n aria-controls=\"v-pills-channels\"\n aria-selected=\"false\"\n >\n <i class=\"fa fa-sliders fa-fw\" aria-hidden=\"true\"></i>\n </a>\n <a\n class=\"nav-link px-3\"\n (click)=\"openTab('effects')\"\n id=\"v-pills-effects-tab\"\n popover=\"{{ 'designer.misc.effects' | translate }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"mouseenter:mouseleave\"\n data-toggle=\"pill\"\n href=\"#v-pills-effects\"\n role=\"tab\"\n aria-controls=\"v-pills-effects\"\n aria-selected=\"false\"\n >\n <i class=\"fa fa-magic fa-fw\" aria-hidden=\"true\"></i>\n </a>\n <a\n class=\"nav-link px-3\"\n (click)=\"openTab('settings')\"\n id=\"v-pills-settings-tab\"\n popover=\"{{ 'designer.misc.settings' | translate }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"mouseenter:mouseleave\"\n data-toggle=\"pill\"\n href=\"#v-pills-settings\"\n role=\"tab\"\n aria-controls=\"v-pills-settings\"\n aria-selected=\"false\"\n style=\"border-top: 1px solid #444\"\n >\n <i class=\"fa fa-cog fa-fw\" aria-hidden=\"true\"></i>\n </a>\n </div>\n </div>\n\n <div id=\"capabilities\" class=\"split split-horizontal h-100\" style=\"padding-left: 1rem\">\n <div *ngIf=\"projectService.project\" class=\"row h-100\">\n <!-- Content for the capabilities, channels, effects and settings -->\n <div class=\"col pl-0 h-100\">\n <div class=\"tab-content h-100\" id=\"v-pills-tabContent\">\n <div class=\"tab-pane h-100 show active\" id=\"v-pills-capabilities\" role=\"tabpanel\">\n <lib-app-fixture-capability></lib-app-fixture-capability>\n </div>\n <div class=\"tab-pane h-100 show\" id=\"v-pills-channels\" role=\"tabpanel\">\n <lib-app-fixture-channel></lib-app-fixture-channel>\n </div>\n <div class=\"tab-pane h-100\" id=\"v-pills-effects\" role=\"tabpanel\" aria-labelledby=\"v-pills-profile-tab\">\n <lib-app-effect></lib-app-effect>\n </div>\n <div class=\"tab-pane h-100\" id=\"v-pills-settings\" role=\"tabpanel\" aria-labelledby=\"v-pills-home-tab\">\n <lib-app-fixture-settings></lib-app-fixture-settings>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Fixtures -->\n <div id=\"fixtures\" class=\"split split-horizontal h-100\">\n <lib-app-fixture *ngIf=\"projectService.project\"></lib-app-fixture>\n </div>\n\n <!-- Master dimmer -->\n <div id=\"masterDimmer\" class=\"split split-horizontal h-100\">\n <lib-app-master-dimmer *ngIf=\"projectService.project\"></lib-app-master-dimmer>\n </div>\n </div>\n\n <!-- Timeline -->\n <div id=\"row3\" class=\"split split-vertical clearfix px-3 pb-3\" style=\"padding-bottom: 20px\">\n <lib-app-timeline *ngIf=\"projectService.project\"></lib-app-timeline>\n </div>\n </div>\n\n <!-- The components for small screens -->\n <div class=\"d-md-none p-3\">\n <div>\n <lib-app-master-dimmer *ngIf=\"projectService.project\"></lib-app-master-dimmer>\n </div>\n\n <div class=\"mt-3\">\n <lib-app-scene *ngIf=\"projectService.project\"></lib-app-scene>\n </div>\n </div>\n</div>\n\n<lib-app-intro class=\"d-none d-md-flex\"></lib-app-intro>\n", styles: ["body{font-size:14px}.modal-full{max-width:unset!important;margin:1.75rem!important}.modal{z-index:10001}#designer .nav-link{cursor:pointer}#designer .dropdown-menu{z-index:100000}#designer .row{flex-wrap:unset}#designer .navbar-nav{flex-direction:row!important}#designer .navbar-expand-lg{flex-flow:row nowrap!important;justify-content:flex-start!important}#designer .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem!important;padding-left:.5rem!important}#designer .list-group-item.active{color:#fff!important;background-color:#fd7e14!important;border-color:#fd7e14!important}#designer *:focus{outline:none}#designer select{font-size:.8rem;cursor:pointer}#designer input{font-size:.7rem;background-color:transparent;color:#fff;border:1px solid}#designer input,#designer select{border-color:#dee2e6}#designer .list-group-item{padding:.3rem 1.25rem;border-left:none;border-right:none}#designer .nav-pills .nav-link.active,#designer .nav-pills .show>.nav-link{background-color:#444}#designer .nav a,#designer .panel-title .btn-link{color:#fff!important}#designer .accordion-toggle .btn,#designer .accordion-toggle button{padding:0}#designer .card-body{overflow:auto;padding:.8rem}#designer .card-header{margin-bottom:0}#designer .card-header{padding:.4rem}#designer .panel-body{background-color:#303030}#designer .list-group-item.active-light{background-color:#906542;border-color:#906542}#designer .inactive-list-item{opacity:.3}#designer span.bigcheck-target{font-family:FontAwesome}#designer input[type=checkbox].bigcheck{position:relative;left:-999em}#designer input[type=checkbox].bigcheck+span.bigcheck-target:after{content:\"\\f096\"}#designer input[type=checkbox].bigcheck:checked+span.bigcheck-target:after{content:\"\\f046\"}#designer .gutter.gutter-horizontal{cursor:ew-resize}#designer .gutter.gutter-vertical{cursor:ns-resize}#designer .split-horizontal,#designer .gutter.gutter-horizontal{float:left}#designer .split-vertical,#designer .gutter.gutter-horizontal{height:100%}#designer .split{overflow-y:hidden;overflow-x:hidden}#designer .panel{background-color:transparent}#designer .slider{cursor:pointer}#designer .slider-horizontal .slider-track{height:2px!important;margin-top:-2px!important}#designer .slider-vertical .slider-track{width:2px!important;margin-left:4px!important}#designer .slider-track,#designer .slider-track-low,#designer .slider-track-high,#designer .slider-selection{background-color:#fff!important;border-radius:0!important;background-image:none!important;box-shadow:none!important}#designer .slider-handle{width:13px!important;height:13px!important;background-color:#fff!important;background-image:none!important;border:1px solid #303030}#designer .slider-vertical .slider-handle{margin-left:4px!important}#designer .slider-horizontal .slider-handle{margin-top:2px!important}#designer .slider-input{width:35px;margin-left:8px;text-align:center}#designer .slider-input-readonly{width:35px;margin-left:8px;text-align:center;color:#a9a9a9;border-color:gray}#designer .capability-container{padding:0;height:0}#designer accordion-group>div{border:none!important}#designer .popover{background-color:#fff}#designer .popover-body{color:#000}#designer .bs-popover-right .arrow:after,#designer .bs-popover-auto[x-placement^=right] .arrow:after{border-right-color:#fff}#designer .bs-popover-left .arrow:after,#designer .bs-popover-auto[x-placement^=left] .arrow:after{border-left-color:#fff}#designer .bs-popover-bottom .arrow:after,#designer .bs-popover-auto[x-placement^=bottom] .arrow:after{border-bottom-color:#fff}#designer .bs-popover-top .arrow:after,#designer .bs-popover-auto[x-placement^=top] .arrow:after{border-top-color:#fff}#designer .iro__wheel,#designer .iro__slider{cursor:pointer}#designer .pan-tilt-grid path{fill:none;stroke:#fff;stroke-width:10px}#designer .pan-tilt-grid circle{fill:#4682b4;stroke:#fff;stroke-width:3px}#designer .capability{overflow:visible}#designer .capability-deactivated{opacity:.4}#designer .wavesurfer-region{z-index:5!important}#designer .wavesurfer-region[data-region-selected=true]{z-index:6!important}#designer .wavesurfer-region[data-region-preset=true]{height:50%!important;top:50%!important}#designer .wavesurfer-region[data-region-name]:after{content:attr(data-region-name);margin-left:20px}#designer .wavesurfer-handle{width:10px!important;max-width:10px!important;border:1px solid #ddd;background:#0000001a;box-sizing:border-box;opacity:0;cursor:unset!important}#designer .wavesurfer-handle-end{margin-left:-10px}#designer .wavesurfer-region[data-region-selectable=true] .wavesurfer-handle{opacity:1;cursor:col-resize!important}#designer .wavesurfer-handle:before,#designer .wavesurfer-handle:after{content:\"\";display:block;position:absolute;z-index:1;border-top:1px solid #fff;border-bottom:1px solid #fff;height:4px;left:5%;right:5%;top:50%;transform:translateY(-50%)}#designer .wavesurfer-handle:before{margin-top:-3px}#designer timeline{overflow:scroll!important;overflow:-moz-scrollbars-none;-ms-overflow-style:none;scrollbar-width:none;cursor:s-resize}#designer timeline::-webkit-scrollbar{height:0!important}#designer cursor{top:-20px!important}#designer wave{border-right-color:#fd7e14!important;cursor:col-resize}\n"] }]
|
|
635
|
+
}], () => [{ type: i1.TranslateService }, { type: i2.ProjectService }, { type: i3.ConfigService }, { type: i4.FixturePoolService }, { type: i5.HotkeyTargetExcludeService }, { type: i6.BsModalService }, { type: i7.UserService }, { type: i8.UserEnsureLoginService }, { type: i9.ProjectLoadService }, { type: i10.WarningDialogService }, { type: i11.ErrorDialogService }, { type: i12.FixtureService }, { type: i13.TimelineService }, { type: i14.IntroService }], { menuHeightPx: [{
|
|
636
|
+
type: Input
|
|
637
|
+
}], externalCompositionsAvailable: [{
|
|
638
|
+
type: Input
|
|
639
|
+
}], restUrl: [{
|
|
640
|
+
type: Input
|
|
641
|
+
}], enableMediaLibrary: [{
|
|
642
|
+
type: Input
|
|
643
|
+
}], loginAvailable: [{
|
|
644
|
+
type: Input
|
|
645
|
+
}], shareAvailable: [{
|
|
646
|
+
type: Input
|
|
647
|
+
}], languageSwitch: [{
|
|
648
|
+
type: Input
|
|
649
|
+
}], newProjectTemplate: [{
|
|
650
|
+
type: Input
|
|
651
|
+
}], livePreview: [{
|
|
652
|
+
type: Input
|
|
653
|
+
}], localProfiles: [{
|
|
654
|
+
type: Input
|
|
655
|
+
}], intro: [{
|
|
656
|
+
type: Input
|
|
657
|
+
}], uniqueProjectNames: [{
|
|
658
|
+
type: Input
|
|
659
|
+
}], dropzoneChunking: [{
|
|
660
|
+
type: Input
|
|
661
|
+
}], previewComponent: [{
|
|
662
|
+
type: ViewChild,
|
|
663
|
+
args: [PreviewComponent]
|
|
664
|
+
}], timelineComponent: [{
|
|
665
|
+
type: ViewChild,
|
|
666
|
+
args: [TimelineComponent]
|
|
667
|
+
}], handleKeyboardEvent: [{
|
|
668
|
+
type: HostListener,
|
|
669
|
+
args: ['document:keydown', ['$event']]
|
|
670
|
+
}] }); })();
|
|
671
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DesignerComponent, { className: "DesignerComponent" }); })();
|
|
672
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxLQUFLLE1BQU0sVUFBVSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0s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aURBQTRCOzs7aUZEaE9yQyxpQkFBaUI7Y0FON0IsU0FBUzsyQkFDRSxjQUFjLGlCQUdULGlCQUFpQixDQUFDLElBQUk7Z2RBSWpDLFlBQVk7a0JBRGYsS0FBSztZQU9GLDZCQUE2QjtrQkFEaEMsS0FBSztZQU1GLE9BQU87a0JBRFYsS0FBSztZQU1GLGtCQUFrQjtrQkFEckIsS0FBSztZQU1GLGNBQWM7a0JBRGpCLEtBQUs7WUFNRixjQUFjO2tCQURqQixLQUFLO1lBTUYsY0FBYztrQkFEakIsS0FBSztZQU1GLGtCQUFrQjtrQkFEckIsS0FBSztZQU1GLFdBQVc7a0JBRGQsS0FBSztZQU1GLGFBQWE7a0JBRGhCLEtBQUs7WUFNRixLQUFLO2tCQURSLEtBQUs7WUFPRixrQkFBa0I7a0JBRHJCLEtBQUs7WUFNRixnQkFBZ0I7a0JBRG5CLEtBQUs7WUFlTixnQkFBZ0I7a0JBRGYsU0FBUzttQkFBQyxnQkFBZ0I7WUFJM0IsaUJBQWlCO2tCQURoQixTQUFTO21CQUFDLGlCQUFpQjtZQThPNUIsbUJBQW1CO2tCQURsQixZQUFZO21CQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDOztrRkE3VGpDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IFNwbGl0IGZyb20gJ3NwbGl0LmpzJztcbmltcG9ydCB7IFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvamVjdEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuL3Byb2plY3QvcHJvamVjdC1icm93c2VyL3Byb2plY3QtYnJvd3Nlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvamVjdEltcG9ydENvbXBvbmVudCB9IGZyb20gJy4vcHJvamVjdC9wcm9qZWN0LWltcG9ydC9wcm9qZWN0LWltcG9ydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvamVjdFNhdmVDb21wb25lbnQgfSBmcm9tICcuL3Byb2plY3QvcHJvamVjdC1zYXZlL3Byb2plY3Qtc2F2ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvamVjdFNoYXJlQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9qZWN0L3Byb2plY3Qtc2hhcmUvcHJvamVjdC1zaGFyZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3JEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9lcnJvci1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBGaXh0dXJlUG9vbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ZpeHR1cmUtcG9vbC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpeHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9maXh0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSG90a2V5VGFyZ2V0RXhjbHVkZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2hvdGtleS10YXJnZXQtZXhjbHVkZS5zZXJ2aWNlJztcbmltcG9ydCB7IEludHJvU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvaW50cm8uc2VydmljZSc7XG5pbXBvcnQgeyBQcm9qZWN0TG9hZFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3Byb2plY3QtbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcm9qZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGltZWxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90aW1lbGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJFbnN1cmVMb2dpblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3VzZXItZW5zdXJlLWxvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBXYXJuaW5nRGlhbG9nU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd2FybmluZy1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBUaW1lbGluZUNvbXBvbmVudCB9IGZyb20gJy4vdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJSZWdpc3RlckNvbXBvbmVudCB9IGZyb20gJy4vdXNlci91c2VyLXJlZ2lzdGVyL3VzZXItcmVnaXN0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGVzaWduZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kZXNpZ25lci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEZXNpZ25lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpXG4gIHNldCBtZW51SGVpZ2h0UHgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuY29uZmlnU2VydmljZS5tZW51SGVpZ2h0UHggPSB2YWx1ZTtcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UubWVudUhlaWdodENoYW5nZWQubmV4dCgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGV4dGVybmFsQ29tcG9zaXRpb25zQXZhaWxhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy50aW1lbGluZVNlcnZpY2UuZXh0ZXJuYWxDb21wb3NpdGlvbnNBdmFpbGFibGUgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCByZXN0VXJsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UucmVzdFVybCA9IHZhbHVlO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGVuYWJsZU1lZGlhTGlicmFyeSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuY29uZmlnU2VydmljZS5lbmFibGVNZWRpYUxpYnJhcnkgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBsb2dpbkF2YWlsYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuY29uZmlnU2VydmljZS5sb2dpbkF2YWlsYWJsZSA9IHZhbHVlO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHNoYXJlQXZhaWxhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5jb25maWdTZXJ2aWNlLnNoYXJlQXZhaWxhYmxlID0gdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgbGFuZ3VhZ2VTd2l0Y2godmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UubGFuZ3VhZ2VTd2l0Y2ggPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBuZXdQcm9qZWN0VGVtcGxhdGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UubmV3UHJvamVjdFRlbXBsYXRlID0gdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgbGl2ZVByZXZpZXcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UubGl2ZVByZXZpZXcgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBsb2NhbFByb2ZpbGVzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5jb25maWdTZXJ2aWNlLmxvY2FsUHJvZmlsZXMgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBpbnRybyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuY29uZmlnU2VydmljZS5pbnRybyA9IHZhbHVlO1xuICAgIHRoaXMuaW50cm9TZXJ2aWNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB1bmlxdWVQcm9qZWN0TmFtZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UudW5pcXVlUHJvamVjdE5hbWVzID0gdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgZHJvcHpvbmVDaHVua2luZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuY29uZmlnU2VydmljZS5kcm9wem9uZUNodW5raW5nID0gdmFsdWU7XG4gIH1cblxuICAvLyB0aGUgc2l6ZSBvZiB0aGUgbWVudSB1c2VkIGluIHRoZSBkZXNpZ25lclxuICBwcml2YXRlIGRlc2lnbmVyTWVudVNpemVQeCA9IDIwO1xuXG4gIHByaXZhdGUgc3BsaXRHdXR0ZXJTaXplUHggPSAxMztcblxuICBwdWJsaWMgdG90YWxNZW51SGVpZ2h0UHggPSAwO1xuXG4gIGN1cnJlbnRUYWIgPSAncHJvcGVydGllcyc7XG5cbiAgQFZpZXdDaGlsZChQcmV2aWV3Q29tcG9uZW50KVxuICBwcmV2aWV3Q29tcG9uZW50OiBQcmV2aWV3Q29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoVGltZWxpbmVDb21wb25lbnQpXG4gIHRpbWVsaW5lQ29tcG9uZW50OiBUaW1lbGluZUNvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIHByb2plY3RTZXJ2aWNlOiBQcm9qZWN0U2VydmljZSxcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGZpeHR1cmVQb29sU2VydmljZTogRml4dHVyZVBvb2xTZXJ2aWNlLFxuICAgIHByaXZhdGUgaG90a2V5VGFyZ2V0RXhjbHVkZVNlcnZpY2U6IEhvdGtleVRhcmdldEV4Y2x1ZGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlckVuc3VyZUxvZ2luU2VydmljZTogVXNlckVuc3VyZUxvZ2luU2VydmljZSxcbiAgICBwcml2YXRlIHByb2plY3RMb2FkU2VydmljZTogUHJvamVjdExvYWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2FybmluZ0RpYWxvZ1NlcnZpY2U6IFdhcm5pbmdEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXJyb3JEaWFsb2dTZXJ2aWNlOiBFcnJvckRpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaXh0dXJlU2VydmljZTogRml4dHVyZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aW1lbGluZVNlcnZpY2U6IFRpbWVsaW5lU2VydmljZSxcbiAgICBwdWJsaWMgaW50cm9TZXJ2aWNlOiBJbnRyb1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jb25maWdTZXJ2aWNlLm1lbnVIZWlnaHRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNhbGNUb3RhbE1lbnVIZWlnaHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEVycm9yKHJlc3BvbnNlOiBhbnkpIHtcbiAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlKTtcbiAgICBsZXQgbXNnID0gJ2Rlc2lnbmVyLnByb2plY3Qub3Blbi1lcnJvcic7XG4gICAgbGV0IGVycm9yOiBzdHJpbmc7XG4gICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgIGVycm9yID0gcmVzcG9uc2UgJiYgcmVzcG9uc2UuZXJyb3IgPyByZXNwb25zZS5lcnJvci5lcnJvciA6ICd1bmtub3duJztcbiAgICAgIGlmIChlcnJvciA9PT0gJ25vLXBlcm1pc3Npb24nKSB7XG4gICAgICAgIG1zZyA9ICdkZXNpZ25lci5wcm9qZWN0Lm9wZW4tbm8tcGVybWlzc2lvbi1lcnJvcic7XG4gICAgICAgIGVycm9yID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXNnID0gJ2Rlc2lnbmVyLnByb2plY3Qub3Blbi1lcnJvcic7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9yID0gcmVzcG9uc2UgJiYgcmVzcG9uc2UubWVzc2FnZSA/IHJlc3BvbnNlLm1lc3NhZ2UgOiAndW5rbm93bic7XG4gICAgfVxuICAgIHRoaXMuZXJyb3JEaWFsb2dTZXJ2aWNlLnNob3cobXNnLCBlcnJvcikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucHJvamVjdExvYWRTZXJ2aWNlLm5ldygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpKSB7XG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZSgnZW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhbGNUb3RhbE1lbnVIZWlnaHQoKTtcblxuICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgcHJvamVjdElkID0gdXJsUGFyYW1zLmdldCgnaWQnKTtcbiAgICBjb25zdCBwcm9qZWN0TmFtZSA9IHVybFBhcmFtcy5nZXQoJ25hbWUnKTtcbiAgICBsZXQgc2hhcmVUb2tlbiA9IHVybFBhcmFtcy5nZXQoJ3Rva2VuJyk7XG5cbiAgICBpZiAocHJvamVjdElkKSB7XG4gICAgICAvLyBsb2FkIGEgcHJvamVjdCBieSBxdWVyeSBwYXJhbSBJRFxuICAgICAgaWYgKCFzaGFyZVRva2VuKSB7XG4gICAgICAgIHNoYXJlVG9rZW4gPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5wcm9qZWN0TG9hZFNlcnZpY2UubG9hZChOdW1iZXIucGFyc2VJbnQocHJvamVjdElkLCAxMCksIHByb2plY3ROYW1lLCBzaGFyZVRva2VuKS5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+IHt9LFxuICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRFcnJvcihyZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICh0aGlzLnVzZXJTZXJ2aWNlLmlzTG9nZ2VkSW4oKSB8fCAhdGhpcy5jb25maWdTZXJ2aWNlLmxvZ2luQXZhaWxhYmxlKSAmJlxuICAgICAgKHRoaXMudXNlclNlcnZpY2UuZ2V0QXV0b0xvYWRQcm9qZWN0SWQoKSB8fCB0aGlzLnVzZXJTZXJ2aWNlLmdldEF1dG9Mb2FkUHJvamVjdE5hbWUoKSlcbiAgICApIHtcbiAgICAgIC8vIHJlc3RvcmUgdGhlIGxhc3Qgc2F2ZWQgcHJvamVjdFxuICAgICAgdGhpcy5wcm9qZWN0TG9hZFNlcnZpY2UubG9hZCh0aGlzLnVzZXJTZXJ2aWNlLmdldEF1dG9Mb2FkUHJvamVjdElkKCksIHRoaXMudXNlclNlcnZpY2UuZ2V0QXV0b0xvYWRQcm9qZWN0TmFtZSgpKS5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+IHt9LFxuICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRFcnJvcihyZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UubmV3UHJvamVjdFRlbXBsYXRlKSB7XG4gICAgICAgIC8vIGxvYWQgdGhlIG5ldyBwcm9qZWN0IHRlbXBsYXRlXG4gICAgICAgIHRoaXMucHJvamVjdExvYWRTZXJ2aWNlLnRlbXBsYXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb2plY3RMb2FkU2VydmljZS5uZXcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhbGNUb3RhbE1lbnVIZWlnaHQoKSB7XG4gICAgdGhpcy50b3RhbE1lbnVIZWlnaHRQeCA9IHRoaXMuZGVzaWduZXJNZW51U2l6ZVB4ICsgdGhpcy5zcGxpdEd1dHRlclNpemVQeCArIHRoaXMuY29uZmlnU2VydmljZS5tZW51SGVpZ2h0UHg7XG4gIH1cblxuICBwcml2YXRlIG9uUmVzaXplKCkge1xuICAgIGlmICh0aGlzLnByZXZpZXdDb21wb25lbnQpIHtcbiAgICAgIHRoaXMucHJldmlld0NvbXBvbmVudC5vblJlc2l6ZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRpbWVsaW5lQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnRpbWVsaW5lQ29tcG9uZW50Lm9uUmVzaXplKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIFNldCB1cCB0aGUgc3BsaXR0ZXJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIFNwbGl0KFsnI3JvdzEnLCAnI3JvdzInLCAnI3JvdzMnXSwge1xuICAgICAgICBzaXplczogWzQyLCA0MCwgMThdLFxuICAgICAgICBkaXJlY3Rpb246ICd2ZXJ0aWNhbCcsXG4gICAgICAgIGN1cnNvcjogJ3Jvdy1yZXNpemUnLFxuICAgICAgICBzbmFwT2Zmc2V0OiAwLFxuICAgICAgICBndXR0ZXJTaXplOiB0aGlzLnNwbGl0R3V0dGVyU2l6ZVB4LFxuICAgICAgICBvbkRyYWc6IHRoaXMub25SZXNpemUuYmluZCh0aGlzKSxcbiAgICAgIH0pO1xuXG4gICAgICBTcGxpdChbJyNzY2VuZXMnLCAnI3ByZXNldHMnLCAnI3ByZXZpZXcnXSwge1xuICAgICAgICBzaXplczogWzIwLCAyMCwgNjBdLFxuICAgICAgICBzbmFwT2Zmc2V0OiAwLFxuICAgICAgICBndXR0ZXJTaXplOiB0aGlzLnNwbGl0R3V0dGVyU2l6ZVB4LFxuICAgICAgICBvbkRyYWc6IHRoaXMub25SZXNpemUuYmluZCh0aGlzKSxcbiAgICAgIH0pO1xuXG4gICAgICBTcGxpdChbJyNjYXBhYmlsaXRpZXMnLCAnI2ZpeHR1cmVzJywgJyNtYXN0ZXJEaW1tZXInXSwge1xuICAgICAgICBzaXplczogWzcwLCAyNCwgNl0sXG4gICAgICAgIHNuYXBPZmZzZXQ6IDAsXG4gICAgICAgIGd1dHRlclNpemU6IHRoaXMuc3BsaXRHdXR0ZXJTaXplUHgsXG4gICAgICAgIG9uRHJhZzogdGhpcy5vblJlc2l6ZS5iaW5kKHRoaXMpLFxuICAgICAgICBtaW5TaXplOiA1MCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm9uUmVzaXplKCk7XG4gICAgfSk7XG4gIH1cblxuICBvcGVuVGFiKHRhYjogc3RyaW5nKSB7XG4gICAgLy8gb3BlbiBhIHNpZGUgdGFiIChlLmcuIGVmZmVjdHMsIGNoYW5uZWxzLCBzZXR0aW5ncywgZXRjLilcblxuICAgIGlmICh0YWIgPT09ICdzZXR0aW5ncycpIHtcbiAgICAgIHRoaXMuZml4dHVyZVNlcnZpY2Uuc2V0dGluZ3NTZWxlY3Rpb24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlLnNldHRpbmdzU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50VGFiID0gdGFiO1xuICB9XG5cbiAgb3BlbkZpeHR1cmVQb29sKCkge1xuICAgIHRoaXMuZml4dHVyZVBvb2xTZXJ2aWNlLm9wZW4oKTtcbiAgfVxuXG4gIHByb2plY3ROZXcoKSB7XG4gICAgdGhpcy53YXJuaW5nRGlhbG9nU2VydmljZVxuICAgICAgLnNob3coJ2Rlc2lnbmVyLm1pc2Mud2FybmluZy1wcm9jZWVkLXVuc2F2ZWQnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy5wcm9qZWN0TG9hZFNlcnZpY2UubmV3KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvamVjdE9wZW4oKSB7XG4gICAgdGhpcy53YXJuaW5nRGlhbG9nU2VydmljZVxuICAgICAgLnNob3coJ2Rlc2lnbmVyLm1pc2Mud2FybmluZy1wcm9jZWVkLXVuc2F2ZWQnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy51c2VyRW5zdXJlTG9naW5TZXJ2aWNlLmxvZ2luKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhQcm9qZWN0QnJvd3NlckNvbXBvbmVudCwgeyBrZXlib2FyZDogdHJ1ZSwgaWdub3JlQmFja2Ryb3BDbGljazogZmFsc2UgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm9qZWN0U2F2ZSgpIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0Lm5hbWUpIHtcbiAgICAgIC8vIHRoaXMgcHJvamVjdCBoYXMgYmVlbiBzYXZlZCBiZWZvcmUgLT4ganVzdCBzYXZlIGl0IGFnYWluXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnNhdmUodGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdGhpcyBwcm9qZWN0IGhhcyBub3QgeWV0IGJlZW4gc2F2ZWQgLT4gc2hvdyB0aGUgc2F2ZSBhcy1kaWFsb2dcbiAgICAgIHRoaXMudXNlckVuc3VyZUxvZ2luU2VydmljZS5sb2dpbigpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLnNob3coUHJvamVjdFNhdmVDb21wb25lbnQsIHsga2V5Ym9hcmQ6IHRydWUsIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IGZhbHNlIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvamVjdFNhdmVBcygpIHtcbiAgICB0aGlzLnVzZXJFbnN1cmVMb2dpblNlcnZpY2UubG9naW4oKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhQcm9qZWN0U2F2ZUNvbXBvbmVudCwgeyBrZXlib2FyZDogdHJ1ZSwgaWdub3JlQmFja2Ryb3BDbGljazogZmFsc2UgfSk7XG4gICAgfSk7XG4gIH1cblxuICB1c2VyUmVnaXN0ZXIoKSB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhVc2VyUmVnaXN0ZXJDb21wb25lbnQsIHsga2V5Ym9hcmQ6IHRydWUsIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHJvamVjdEltcG9ydCgpIHtcbiAgICB0aGlzLndhcm5pbmdEaWFsb2dTZXJ2aWNlXG4gICAgICAuc2hvdygnZGVzaWduZXIubWlzYy53YXJuaW5nLXByb2NlZWQtdW5zYXZlZCcpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5zaG93KFByb2plY3RJbXBvcnRDb21wb25lbnQsIHsga2V5Ym9hcmQ6IHRydWUsIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IGZhbHNlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb2plY3RFeHBvcnQoKSB7XG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdCwgbnVsbCwgMik7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsICdkYXRhOnRleHQvanNvbjtjaGFyc2V0PVVURi04LCcgKyBlbmNvZGVVUklDb21wb25lbnQoanNvbikpO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5uYW1lICsgJy5yc2QnKTtcbiAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICBlbGVtZW50LmNsaWNrKCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgfVxuXG4gIHByb2plY3RTaGFyZSgpIHtcbiAgICBpZiAoIXRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5pZCkge1xuICAgICAgLy8gYSBzYXZlIGlzIHJlcXVpcmVkIGZpcnN0XG4gICAgICB0aGlzLmVycm9yRGlhbG9nU2VydmljZS5zaG93KCdkZXNpZ25lci5wcm9qZWN0LnNoYXJlLW5vLXNhdmUnKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBpZ25vcmUgYmFja2Ryb3AgY2xpY2ssIGJlY2F1c2Ugc2VsZWN0aW5nIHRoZSBsaW5rIHRleHQgd2lsbCBhbHNvIGNsb3NlIHRoZSBtb2RhbFxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLnNob3coUHJvamVjdFNoYXJlQ29tcG9uZW50LCB7IGtleWJvYXJkOiB0cnVlLCBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmhvdGtleVRhcmdldEV4Y2x1ZGVTZXJ2aWNlLmV4Y2x1ZGUoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ3AnKSB7XG4gICAgICB0aGlzLm9wZW5GaXh0dXJlUG9vbCgpO1xuXG4gICAgICAvLyBwcmV2ZW50IGNoZWNrYm94ZXMgYmVpbmcgdG9nZ2xlZCwgaWYgaW4gZm9jdXMgZS5nLlxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkgPT09ICduJykge1xuICAgICAgdGhpcy5wcm9qZWN0TmV3KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleSA9PT0gJ3MnKSB7XG4gICAgICB0aGlzLnByb2plY3RTYXZlKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleSA9PT0gJ28nKSB7XG4gICAgICB0aGlzLnByb2plY3RPcGVuKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgc3dpdGNoTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobGFuZ3VhZ2UpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5ndWFnZScsIGxhbmd1YWdlKTtcbiAgfVxufVxuIiwiPCEtLSBXcmFwIHRoZSB3aG9sZSBjb21wb25lbnQgaW5zaWRlIGEgZGl2IHRvIGVuY2Fwc3VsYXRlIHRoZSBDU1MgLS0+XG5cbjwhLS0gMTAwICUgaGVpZ2h0IG1pbnVzIHRoZSBtZW51IGJhciBhYm92ZSBhbmQgdGhlIGd1dHRlciBzaXplIG9mIDEzIHB4IC0tPlxuPCEtLSA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMCUgLSAzM3B4KVwiPiAtLT5cbjxkaXYgaWQ9XCJkZXNpZ25lclwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiAnY2FsYygxMDAlIC0gJyArIHRvdGFsTWVudUhlaWdodFB4ICsgJ3B4KScgfVwiPlxuICA8IS0tIE5hdmlnYXRpb24gLS0+XG4gIDxuYXZcbiAgICBjbGFzcz1cIm5hdmJhciBuYXZiYXItZXhwYW5kLWxnIG5hdmJhci1saWdodCBiZy1saWdodCBib3JkZXItc2Vjb25kYXJ5XCJcbiAgICBzdHlsZT1cImJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNDQ0OyBoZWlnaHQ6IDIwcHg7IHotaW5kZXg6IDk5OTlcIlxuICA+XG4gICAgPCEtLSBNZW51IGJ1dHRvbnMgLS0+XG4gICAgPHVsIGNsYXNzPVwibmF2YmFyLW5hdiBtci1hdXRvXCI+XG4gICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBkcm9wZG93blwiPlxuICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZVwiIGhyZWY9XCIjXCIgaWQ9XCJmaWxlRHJvcGRvd25cIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cbiAgICAgICAgICB7eyAnZGVzaWduZXIubmF2aWdhdGlvbi5wcm9qZWN0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2E+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZmlsZURyb3Bkb3duXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGQtbm9uZSBkLW1kLWJsb2NrXCIgaHJlZj1cIiNcIiAoY2xpY2spPVwicHJvamVjdE5ldygpOyAoZmFsc2UpXCJcbiAgICAgICAgICAgID48aSBjbGFzcz1cImZhIGZhLWZ3IGZhLWZpbGUtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2Rlc2lnbmVyLm5hdmlnYXRpb24ucHJvamVjdC1uZXcnIHwgdHJhbnNsYXRlIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCIgKGNsaWNrKT1cInByb2plY3RPcGVuKCk7IChmYWxzZSlcIlxuICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmEgZmEtZncgZmEtZm9sZGVyLW9wZW4tb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2Rlc2lnbmVyLm5hdmlnYXRpb24ucHJvamVjdC1vcGVuJyB8IHRyYW5zbGF0ZSB9fTwvYVxuICAgICAgICAgID5cbiAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1ub25lIGQtbWQtYmxvY2tcIiBocmVmPVwiI1wiIChjbGljayk9XCJwcm9qZWN0U2F2ZSgpOyAoZmFsc2UpXCJcbiAgICAgICAgICAgID48aSBjbGFzcz1cImZhIGZhLWZ3IGZhLWZsb3BweS1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZGVzaWduZXIubmF2aWdhdGlvbi5wcm9qZWN0LXNhdmUnIHwgdHJhbnNsYXRlIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLW5vbmUgZC1tZC1ibG9ja1wiIGhyZWY9XCIjXCIgKGNsaWNrKT1cInByb2plY3RTYXZlQXMoKTsgKGZhbHNlKVwiXG4gICAgICAgICAgICA+PGkgY2xhc3M9XCJmYSBmYS1mdyBmYS1mbG9wcHktb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2Rlc2lnbmVyLm5hdmlnYXRpb24ucHJvamVjdC1zYXZlLWFzJyB8IHRyYW5zbGF0ZSB9fTwvYVxuICAgICAgICAgID5cbiAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1ub25lIGQtbWQtYmxvY2tcIiBocmVmPVwiI1wiIChjbGljayk9XCJwcm9qZWN0SW1wb3J0KCk7IChmYWxzZSlcIlxuICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmEgZmEtZncgZmEtZG93bmxvYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdkZXNpZ25lci5uYXZpZ2F0aW9uLnByb2plY3QtaW1wb3J0JyB8IHRyYW5zbGF0ZSB9fTwvYVxuICAgICAgICAgID5cbiAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1ub25lIGQtbWQtYmxvY2tcIiBocmVmPVwiI1wiIChjbGljayk9XCJwcm9qZWN0RXhwb3J0KCk7IChmYWxzZSlcIlxuICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmEgZmEtZncgZmEtZXh0ZXJuYWwtbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2Rlc2lnbmVyLm5hdmlnYXRpb24ucHJvamVjdC1leHBvcnQnIHwgdHJhbnNsYXRlIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBkcm9wZG93biBkLW5vbmUgZC1tZC1ibG9ja1wiPlxuICAgICAgICA8YVxuICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgZHJvcGRvd24tdG9nZ2xlXCJcbiAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgaWQ9XCJzZXR0aW5nc0Ryb3Bkb3duXCJcbiAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdkZXNpZ25lci5uYXZpZ2F0aW9uLnNldHRpbmdzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2E+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwic2V0dGluZ3NEcm9wZG93blwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCIgKGNsaWNrKT1cIm9wZW5GaXh0dXJlUG9vbCgpOyAoZmFsc2UpXCI+e3sgJ2Rlc2lnbmVyLm5hdmlnYXRpb24uZml4dHVyZS1wb29sJyB8IHRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgICAgICA8IS0tIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+e3sgJ2Rlc2lnbmVyLm5hdmlnYXRpb24uc3RhZ2UnIHwgdHJhbnNsYXRlIH19PC9hPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gZHJvcGRvd24gZC1ub25lIGQtbWQtYmxvY2tcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZVwiXG4gICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgIGlkPVwic2V0dGluZ3NEcm9wZG93blwiXG4gICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnZGVzaWduZXIubmF2aWdhdGlvbi5oZWxwJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2E+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwic2V0dGluZ3NEcm9wZG93blwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCIgKGNsaWNrKT1cImludHJvU2VydmljZS5yZXNldCgpOyAoZmFsc2UpXCI+e3sgJ2Rlc2lnbmVyLm5hdmlnYXRpb24ucmVzZXQtaW50cm8nIHwgdHJhbnNsYXRlIH19PC9hPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCJodHRwczovL3JvY2tldHNob3cubmV0L3N1cHBvcnQvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3tcbiAgICAgICAgICAgICdkZXNpZ25lci5uYXZpZ2F0aW9uLnN1cHBvcnQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPHVsIGNsYXNzPVwibmF2YmFyLW5hdlwiPlxuICAgICAgPGxpICpuZ0lmPVwiY29uZmlnU2VydmljZS5zaGFyZUF2YWlsYWJsZVwiIGNsYXNzPVwibmF2LWl0ZW0gZC1ub25lIGQtbWQtZmxleFwiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGluayB0ZXh0LXByaW1hcnlcIiAoY2xpY2spPVwicHJvamVjdFNoYXJlKCk7IChmYWxzZSlcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcbiAgICAgICAgICA+PGkgY2xhc3M9XCJmYSBmYS1zaGFyZS1hbHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdkZXNpZ25lci5uYXZpZ2F0aW9uLnByb2plY3Qtc2hhcmUnIHwgdHJhbnNsYXRlIH19PC9hXG4gICAgICAgID5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSAqbmdJZj1cImNvbmZpZ1NlcnZpY2UubGFuZ3VhZ2VTd2l0Y2hcIiBjbGFzcz1cIm5hdi1pdGVtIGRyb3Bkb3duXCI+XG4gICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmsgZHJvcGRvd24tdG9nZ2xlXCIgaHJlZj1cIiNcIiBpZD1cInNldHRpbmdzRHJvcGRvd25cIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgID48aSBjbGFzcz1cImZhIGZhLWdsb2JlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgIHt7ICdkZXNpZ25lci5taXNjLmxhbmd1YWdlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2E+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIiBhcmlhLWxhYmVsbGVkYnk9XCJzZXR0aW5nc0Ryb3Bkb3duXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIiAoY2xpY2spPVwic3dpdGNoTGFuZ3VhZ2UoJ2VuJyk7IChmYWxzZSlcIiB0YXJnZXQ9XCJfYmxhbmtcIj5FbmdsaXNoPC9hPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCIgKGNsaWNrKT1cInN3aXRjaExhbmd1YWdlKCdkZScpOyAoZmFsc2UpXCIgdGFyZ2V0PVwiX2JsYW5rXCI+RGV1dHNjaDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgKm5nSWY9XCJjb25maWdTZXJ2aWNlLmxvZ2luQXZhaWxhYmxlICYmICF1c2VyU2VydmljZS5pc0xvZ2dlZEluKClcIiBjbGFzcz1cIm5hdi1pdGVtXCIgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiPlxuICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgKGNsaWNrKT1cInVzZXJSZWdpc3RlcigpOyAoZmFsc2UpXCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICAgICAgPjxpIGNsYXNzPVwiZmEgZmEtdXNlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2Rlc2lnbmVyLm5hdmlnYXRpb24ubG9naW4nIHwgdHJhbnNsYXRlIH19PC9hXG4gICAgICAgID5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSAqbmdJZj1cImNvbmZpZ1NlcnZpY2UubG9naW5BdmFpbGFibGUgJiYgdXNlclNlcnZpY2UuaXNMb2dnZWRJbigpXCIgY2xhc3M9XCJuYXYtaXRlbSBkcm9wZG93blwiPlxuICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZVwiIGhyZWY9XCIjXCIgaWQ9XCJzZXR0aW5nc0Ryb3Bkb3duXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICA+PGkgY2xhc3M9XCJmYSBmYS11c2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgIHt7IHVzZXJTZXJ2aWNlLnVzZXJuYW1lIH19XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiIGFyaWEtbGFiZWxsZWRieT1cInNldHRpbmdzRHJvcGRvd25cIj5cbiAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiIChjbGljayk9XCJ1c2VyU2VydmljZS5sb2dvdXQoKTsgKGZhbHNlKVwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICA+PGkgY2xhc3M9XCJmYSBmYS1zaWduLW91dFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2Rlc2lnbmVyLm5hdmlnYXRpb24ubG9nb3V0JyB8IHRyYW5zbGF0ZSB9fTwvYVxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvbmF2PlxuXG4gIDwhLS0gVGhlIG1haW4gY29udGVudCBmb3IgbGFyZ2VyIHNjcmVlbnMgLS0+XG4gIDxkaXYgY2xhc3M9XCJoLTEwMCBkLW5vbmUgZC1tZC1ibG9ja1wiPlxuICAgIDxkaXYgaWQ9XCJyb3cxXCIgY2xhc3M9XCJzcGxpdCBzcGxpdC12ZXJ0aWNhbCBjbGVhcmZpeCBwdC0zIHBsLTNcIj5cbiAgICAgIDwhLS0gU2NlbmVzIC0tPlxuICAgICAgPGRpdiBpZD1cInNjZW5lc1wiIGNsYXNzPVwic3BsaXQgc3BsaXQtaG9yaXpvbnRhbCBoLTEwMFwiPlxuICAgICAgICA8bGliLWFwcC1zY2VuZSAqbmdJZj1cInByb2plY3RTZXJ2aWNlLnByb2plY3RcIj48L2xpYi1hcHAtc2NlbmU+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQcmVzZXRzIC0tPlxuICAgICAgPGRpdiBpZD1cInByZXNldHNcIiBjbGFzcz1cInNwbGl0IHNwbGl0LWhvcml6b250YWwgaC0xMDBcIj5cbiAgICAgICAgPGxpYi1hcHAtcHJlc2V0ICpuZ0lmPVwicHJvamVjdFNlcnZpY2UucHJvamVjdFwiPjwvbGliLWFwcC1wcmVzZXQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSAzRCBwcmV2aWV3IC0tPlxuICAgICAgPGRpdiBpZD1cInByZXZpZXdcIiBjbGFzcz1cInNwbGl0IHNwbGl0LWhvcml6b250YWwgaC0xMDAgcHItM1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJwcm9qZWN0U2VydmljZS5wcm9qZWN0XCJcbiAgICAgICAgICBjbGFzcz1cImNhcmQgYm9yZGVyLXNlY29uZGFyeSBoLTEwMFwiXG4gICAgICAgICAgW2NsYXNzLmNhcmQtaW50cm8tYWN0aXZlXT1cImludHJvU2VydmljZS5zaG93U3RlcCgncHJldmlldycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIGgtMTAwXCI+XG4gICAgICAgICAgICA8bGliLWFwcC1wcmV2aWV3IGNsYXNzPVwiaC0xMDBcIj48L2xpYi1hcHAtcHJldmlldz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJyb3cyXCIgY2xhc3M9XCJzcGxpdCBzcGxpdC12ZXJ0aWNhbCBjbGVhcmZpeCBweC0zIGQtZmxleFwiIHN0eWxlPVwiZmxleC1kaXJlY3Rpb246IHJvd1wiPlxuICAgICAgPCEtLSBNZW51IGZvciB0aGUgY2FwYWJpbGl0aWVzLCBjaGFubmVscywgZWZmZWN0cyBhbmQgc2V0dGluZ3MgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwicHJvamVjdFNlcnZpY2UucHJvamVjdFwiIGNsYXNzPVwiY29sIGNvbC1hdXRvIHAtMFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAtMXB4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXYgZmxleC1jb2x1bW4gbmF2LXBpbGxzXCIgaWQ9XCJ2LXBpbGxzLXRhYlwiIHJvbGU9XCJ0YWJsaXN0XCIgYXJpYS1vcmllbnRhdGlvbj1cInZlcnRpY2FsXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgcHgtMyBhY3RpdmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5UYWIoJ2NhcGFiaWxpdGllcycpXCJcbiAgICAgICAgICAgIGlkPVwidi1waWxscy1jYXBhYmlsaXRpZXMtdGFiXCJcbiAgICAgICAgICAgIHBvcG92ZXI9XCJ7eyAnZGVzaWduZXIubWlzYy5jYXBhYmlsaXRpZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIlxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJwaWxsXCJcbiAgICAgICAgICAgIGhyZWY9XCIjdi1waWxscy1jYXBhYmlsaXRpZXNcIlxuICAgICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwidi1waWxscy1jYXBhYmlsaXRpZXNcIlxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYm9sdCBmYS1md1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgcHgtM1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblRhYignY2hhbm5lbHMnKVwiXG4gICAgICAgICAgICBpZD1cInYtcGlsbHMtY2hhbm5lbHMtdGFiXCJcbiAgICAgICAgICAgIHBvcG92ZXI9XCJ7eyAnZGVzaWduZXIubWlzYy5jaGFubmVscycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICB0cmlnZ2Vycz1cIm1vdXNlZW50ZXI6bW91c2VsZWF2ZVwiXG4gICAgICAgICAgICBkYXRhLXRvZ2dsZT1cInBpbGxcIlxuICAgICAgICAgICAgaHJlZj1cIiN2LXBpbGxzLWNoYW5uZWxzXCJcbiAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cInYtcGlsbHMtY2hhbm5lbHNcIlxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD1cImZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNsaWRlcnMgZmEtZndcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIHB4LTNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5UYWIoJ2VmZmVjdHMnKVwiXG4gICAgICAgICAgICBpZD1cInYtcGlsbHMtZWZmZWN0cy10YWJcIlxuICAgICAgICAgICAgcG9wb3Zlcj1cInt7ICdkZXNpZ25lci5taXNjLmVmZmVjdHMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIlxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJwaWxsXCJcbiAgICAgICAgICAgIGhyZWY9XCIjdi1waWxscy1lZmZlY3RzXCJcbiAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cInYtcGlsbHMtZWZmZWN0c1wiXG4gICAgICAgICAgICBhcmlhLXNlbGVjdGVkPVwiZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbWFnaWMgZmEtZndcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIHB4LTNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5UYWIoJ3NldHRpbmdzJylcIlxuICAgICAgICAgICAgaWQ9XCJ2LXBpbGxzLXNldHRpbmdzLXRhYlwiXG4gICAgICAgICAgICBwb3BvdmVyPVwie3sgJ2Rlc2lnbmVyLm1pc2Muc2V0dGluZ3MnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIlxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJwaWxsXCJcbiAgICAgICAgICAgIGhyZWY9XCIjdi1waWxscy1zZXR0aW5nc1wiXG4gICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJ2LXBpbGxzLXNldHRpbmdzXCJcbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICBzdHlsZT1cImJvcmRlci10b3A6IDFweCBzb2xpZCAjNDQ0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZyBmYS1md1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgaWQ9XCJjYXBhYmlsaXRpZXNcIiBjbGFzcz1cInNwbGl0IHNwbGl0LWhvcml6b250YWwgaC0xMDBcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMXJlbVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvamVjdFNlcnZpY2UucHJvamVjdFwiIGNsYXNzPVwicm93IGgtMTAwXCI+XG4gICAgICAgICAgPCEtLSBDb250ZW50IGZvciB0aGUgY2FwYWJpbGl0aWVzLCBjaGFubmVscywgZWZmZWN0cyBhbmQgc2V0dGluZ3MgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBwbC0wIGgtMTAwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnQgaC0xMDBcIiBpZD1cInYtcGlsbHMtdGFiQ29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLXBhbmUgaC0xMDAgc2hvdyBhY3RpdmVcIiBpZD1cInYtcGlsbHMtY2FwYWJpbGl0aWVzXCIgcm9sZT1cInRhYnBhbmVsXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1hcHAtZml4dHVyZS1jYXBhYmlsaXR5PjwvbGliLWFwcC1maXh0dXJlLWNhcGFiaWxpdHk+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLXBhbmUgaC0xMDAgc2hvd1wiIGlkPVwidi1waWxscy1jaGFubmVsc1wiIHJvbGU9XCJ0YWJwYW5lbFwiPlxuICAgICAgICAgICAgICAgIDxsaWItYXBwLWZpeHR1cmUtY2hhbm5lbD48L2xpYi1hcHAtZml4dHVyZS1jaGFubmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lIGgtMTAwXCIgaWQ9XCJ2LXBpbGxzLWVmZmVjdHNcIiByb2xlPVwidGFicGFuZWxcIiBhcmlhLWxhYmVsbGVkYnk9XCJ2LXBpbGxzLXByb2ZpbGUtdGFiXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1hcHAtZWZmZWN0PjwvbGliLWFwcC1lZmZlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLXBhbmUgaC0xMDBcIiBpZD1cInYtcGlsbHMtc2V0dGluZ3NcIiByb2xlPVwidGFicGFuZWxcIiBhcmlhLWxhYmVsbGVkYnk9XCJ2LXBpbGxzLWhvbWUtdGFiXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1hcHAtZml4dHVyZS1zZXR0aW5ncz48L2xpYi1hcHAtZml4dHVyZS1zZXR0aW5ncz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBGaXh0dXJlcyAtLT5cbiAgICAgIDxkaXYgaWQ9XCJmaXh0dXJlc1wiIGNsYXNzPVwic3BsaXQgc3BsaXQtaG9yaXpvbnRhbCBoLTEwMFwiPlxuICAgICAgICA8bGliLWFwcC1maXh0dXJlICpuZ0lmPVwicHJvamVjdFNlcnZpY2UucHJvamVjdFwiPjwvbGliLWFwcC1maXh0dXJlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gTWFzdGVyIGRpbW1lciAtLT5cbiAgICAgIDxkaXYgaWQ9XCJtYXN0ZXJEaW1tZXJcIiBjbGFzcz1cInNwbGl0IHNwbGl0LWhvcml6b250YWwgaC0xMDBcIj5cbiAgICAgICAgPGxpYi1hcHAtbWFzdGVyLWRpbW1lciAqbmdJZj1cInByb2plY3RTZXJ2aWNlLnByb2plY3RcIj48L2xpYi1hcHAtbWFzdGVyLWRpbW1lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUaW1lbGluZSAtLT5cbiAgICA8ZGl2IGlkPVwicm93M1wiIGNsYXNzPVwic3BsaXQgc3BsaXQtdmVydGljYWwgY2xlYXJmaXggcHgtMyBwYi0zXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMjBweFwiPlxuICAgICAgPGxpYi1hcHAtdGltZWxpbmUgKm5nSWY9XCJwcm9qZWN0U2VydmljZS5wcm9qZWN0XCI+PC9saWItYXBwLXRpbWVsaW5lPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFRoZSBjb21wb25lbnRzIGZvciBzbWFsbCBzY3JlZW5zIC0tPlxuICA8ZGl2IGNsYXNzPVwiZC1tZC1ub25lIHAtM1wiPlxuICAgIDxkaXY+XG4gICAgICA8bGliLWFwcC1tYXN0ZXItZGltbWVyICpuZ0lmPVwicHJvamVjdFNlcnZpY2UucHJvamVjdFwiPjwvbGliLWFwcC1tYXN0ZXItZGltbWVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cbiAgICAgIDxsaWItYXBwLXNjZW5lICpuZ0lmPVwicHJvamVjdFNlcnZpY2UucHJvamVjdFwiPjwvbGliLWFwcC1zY2VuZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGxpYi1hcHAtaW50cm8gY2xhc3M9XCJkLW5vbmUgZC1tZC1mbGV4XCI+PC9saWItYXBwLWludHJvPlxuIl19
|