mediasfu-angular 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/README.md +194 -192
  2. package/dist/README.md +194 -192
  3. package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +37 -1
  4. package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +51 -1
  5. package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +49 -1
  6. package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +1 -2
  7. package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +25 -19
  8. package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +60 -1
  9. package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +21 -1
  10. package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +36 -1
  11. package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +39 -1
  12. package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +25 -41
  13. package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +22 -1
  14. package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +23 -1
  15. package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +24 -1
  16. package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +24 -1
  17. package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +16 -1
  18. package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +28 -1
  19. package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +28 -19
  20. package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +31 -46
  21. package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +20 -18
  22. package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +33 -25
  23. package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +29 -17
  24. package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +29 -15
  25. package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +44 -23
  26. package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +26 -31
  27. package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +52 -59
  28. package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +20 -24
  29. package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +40 -40
  30. package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +29 -14
  31. package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +30 -24
  32. package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +19 -25
  33. package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +63 -1
  34. package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +29 -18
  35. package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +48 -39
  36. package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +36 -23
  37. package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +36 -25
  38. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +50 -1
  39. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +50 -1
  40. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +48 -1
  41. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +48 -1
  42. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +46 -1
  43. package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +50 -52
  44. package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +7 -2
  45. package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +6 -1
  46. package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +22 -29
  47. package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +16 -14
  48. package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +25 -1
  49. package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +35 -1
  50. package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +17 -34
  51. package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +9 -1
  52. package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +15 -1
  53. package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +16 -1
  54. package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +20 -1
  55. package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +20 -1
  56. package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +18 -1
  57. package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +18 -1
  58. package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +25 -1
  59. package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +28 -1
  60. package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +16 -1
  61. package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +13 -1
  62. package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +6 -1
  63. package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +23 -1
  64. package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +18 -1
  65. package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +11 -1
  66. package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +12 -1
  67. package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +60 -1
  68. package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +22 -1
  69. package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +50 -1
  70. package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +50 -1
  71. package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +27 -1
  72. package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +19 -1
  73. package/dist/esm2022/lib/consumers/change-vids.service.mjs +132 -67
  74. package/dist/esm2022/lib/consumers/check-grid.service.mjs +33 -19
  75. package/dist/esm2022/lib/consumers/check-permission.service.mjs +26 -1
  76. package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +36 -1
  77. package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +103 -1
  78. package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +32 -1
  79. package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +36 -1
  80. package/dist/esm2022/lib/consumers/connect-ips.service.mjs +43 -1
  81. package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +34 -1
  82. package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +39 -1
  83. package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +41 -1
  84. package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +45 -1
  85. package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +55 -1
  86. package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +37 -1
  87. package/dist/esm2022/lib/consumers/control-media.service.mjs +46 -1
  88. package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +47 -1
  89. package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +51 -1
  90. package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +40 -1
  91. package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +46 -1
  92. package/dist/esm2022/lib/consumers/disp-streams.service.mjs +93 -1
  93. package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +48 -1
  94. package/dist/esm2022/lib/consumers/get-estimate.service.mjs +51 -1
  95. package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +34 -1
  96. package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +34 -1
  97. package/dist/esm2022/lib/consumers/get-videos.service.mjs +34 -1
  98. package/dist/esm2022/lib/consumers/mix-streams.service.mjs +23 -1
  99. package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +41 -1
  100. package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +100 -1
  101. package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +30 -1
  102. package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +38 -1
  103. package/dist/esm2022/lib/consumers/re-port.service.mjs +49 -1
  104. package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +83 -1
  105. package/dist/esm2022/lib/consumers/readjust.service.mjs +51 -1
  106. package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +32 -1
  107. package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +28 -1
  108. package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +59 -1
  109. package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +35 -1
  110. package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +52 -1
  111. package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +34 -1
  112. package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +37 -1
  113. package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +38 -38
  114. package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +34 -1
  115. package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +40 -1
  116. package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +28 -1
  117. package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +41 -1
  118. package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +56 -1
  119. package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +54 -1
  120. package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +62 -1
  121. package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +51 -1
  122. package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +59 -1
  123. package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +34 -1
  124. package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +33 -1
  125. package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +48 -1
  126. package/dist/esm2022/lib/consumers/trigger.service.mjs +39 -1
  127. package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +55 -1
  128. package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +46 -1
  129. package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +26 -1
  130. package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +72 -1
  131. package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +25 -1
  132. package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +25 -1
  133. package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +45 -1
  134. package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +23 -1
  135. package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +76 -1
  136. package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +25 -1
  137. package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +21 -1
  138. package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +36 -1
  139. package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +23 -1
  140. package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +23 -1
  141. package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +50 -1
  142. package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +25 -1
  143. package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +47 -1
  144. package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +40 -1
  145. package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +46 -1
  146. package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +39 -1
  147. package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +33 -1
  148. package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +35 -1
  149. package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +21 -1
  150. package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +32 -1
  151. package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +25 -1
  152. package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +23 -1
  153. package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +64 -1
  154. package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +44 -1
  155. package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +28 -1
  156. package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +45 -1
  157. package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +46 -1
  158. package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +33 -1
  159. package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +51 -1
  160. package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +39 -1
  161. package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +49 -1
  162. package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +26 -1
  163. package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +40 -1
  164. package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +26 -1
  165. package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +43 -1
  166. package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +98 -1
  167. package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +32 -1
  168. package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +69 -1
  169. package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +89 -1
  170. package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +48 -1
  171. package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +51 -1
  172. package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +57 -1
  173. package/dist/esm2022/lib/methods/utils/format-number.service.mjs +27 -15
  174. package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +34 -1
  175. package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +28 -1
  176. package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +27 -1
  177. package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +37 -1
  178. package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +22 -1
  179. package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +14 -4
  180. package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +14 -4
  181. package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +38 -1
  182. package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +56 -1
  183. package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +38 -1
  184. package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +51 -1
  185. package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +38 -1
  186. package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +51 -1
  187. package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +47 -1
  188. package/dist/esm2022/lib/methods/utils/sleep.util.mjs +10 -4
  189. package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +22 -1
  190. package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +17 -1
  191. package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +19 -1
  192. package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +30 -1
  193. package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +30 -1
  194. package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +21 -1
  195. package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +24 -1
  196. package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +32 -1
  197. package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +45 -1
  198. package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +39 -1
  199. package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +39 -1
  200. package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +74 -1
  201. package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +72 -1
  202. package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +28 -1
  203. package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +37 -1
  204. package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +38 -1
  205. package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +25 -1
  206. package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +27 -1
  207. package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +25 -10
  208. package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +32 -49
  209. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +30 -1
  210. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +24 -1
  211. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +28 -1
  212. package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +32 -1
  213. package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +26 -1
  214. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +62 -1
  215. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +63 -1
  216. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +46 -1
  217. package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +30 -1
  218. package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +39 -1
  219. package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +39 -1
  220. package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +63 -1
  221. package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +42 -1
  222. package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +26 -1
  223. package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +26 -1
  224. package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +22 -1
  225. package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +43 -1
  226. package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +31 -1
  227. package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +41 -1
  228. package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +15 -41
  229. package/dist/esm2022/lib/sockets/socket-manager.service.mjs +41 -1
  230. package/dist/fesm2022/mediasfu-angular.mjs +8160 -898
  231. package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
  232. package/dist/lib/components/background-components/background-modal/background-modal.component.d.ts +36 -0
  233. package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +50 -0
  234. package/dist/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.d.ts +48 -0
  235. package/dist/lib/components/co-host-components/co-host-modal/co-host-modal.component.d.ts +62 -0
  236. package/dist/lib/components/display-components/alert-component/alert.component.component.d.ts +24 -18
  237. package/dist/lib/components/display-components/audio-card/audio-card.component.d.ts +59 -0
  238. package/dist/lib/components/display-components/audio-grid/audio-grid.component.d.ts +20 -0
  239. package/dist/lib/components/display-components/card-video-display/card-video-display.component.d.ts +35 -0
  240. package/dist/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.d.ts +38 -0
  241. package/dist/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.d.ts +24 -40
  242. package/dist/lib/components/display-components/control-widgets/menu-participants-widget.component.d.ts +21 -0
  243. package/dist/lib/components/display-components/control-widgets/menu-record-widget.component.d.ts +22 -0
  244. package/dist/lib/components/display-components/control-widgets/menu-widget.component.d.ts +23 -0
  245. package/dist/lib/components/display-components/control-widgets/message-widget.component.d.ts +23 -0
  246. package/dist/lib/components/display-components/control-widgets/record-timer-widget.component.d.ts +15 -0
  247. package/dist/lib/components/display-components/control-widgets/screenshare-widget.component.d.ts +27 -0
  248. package/dist/lib/components/display-components/flexible-grid/flexible-grid.component.d.ts +27 -18
  249. package/dist/lib/components/display-components/flexible-video/flexible-video.component.d.ts +30 -45
  250. package/dist/lib/components/display-components/loading-modal/loading-modal.component.d.ts +19 -17
  251. package/dist/lib/components/display-components/main-aspect-component/main-aspect-component.component.d.ts +32 -24
  252. package/dist/lib/components/display-components/main-container-component/main-container-component.component.d.ts +28 -16
  253. package/dist/lib/components/display-components/main-grid-component/main-grid-component.component.d.ts +28 -14
  254. package/dist/lib/components/display-components/main-screen-component/main-screen-component.component.d.ts +43 -22
  255. package/dist/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.d.ts +25 -30
  256. package/dist/lib/components/display-components/mini-audio/mini-audio.component.d.ts +55 -62
  257. package/dist/lib/components/display-components/mini-card/mini-card.component.d.ts +19 -23
  258. package/dist/lib/components/display-components/mini-card-audio/mini-card-audio.component.d.ts +39 -39
  259. package/dist/lib/components/display-components/other-grid-component/other-grid-component.component.d.ts +28 -13
  260. package/dist/lib/components/display-components/pagination/pagination.component.d.ts +29 -23
  261. package/dist/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.d.ts +18 -24
  262. package/dist/lib/components/display-components/video-card/video-card.component.d.ts +62 -0
  263. package/dist/lib/components/display-settings-components/display-settings-modal.component.d.ts +28 -17
  264. package/dist/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.d.ts +47 -38
  265. package/dist/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.d.ts +35 -22
  266. package/dist/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.d.ts +35 -24
  267. package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +126 -77
  268. package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +126 -77
  269. package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +146 -110
  270. package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +146 -110
  271. package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +144 -110
  272. package/dist/lib/components/menu-components/custom-buttons/custom-buttons.component.d.ts +49 -51
  273. package/dist/lib/components/menu-components/meeting-id-component/meeting-id-component.component.d.ts +6 -1
  274. package/dist/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.d.ts +5 -0
  275. package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +21 -28
  276. package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +15 -13
  277. package/dist/lib/components/message-components/message-panel/message-panel.component.d.ts +24 -0
  278. package/dist/lib/components/message-components/messages-modal/messages-modal.component.d.ts +34 -0
  279. package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +16 -33
  280. package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +8 -0
  281. package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +14 -0
  282. package/dist/lib/components/misc-components/welcome-page/welcome-page.component.d.ts +15 -0
  283. package/dist/lib/components/participants-components/participant-list/participant-list.component.d.ts +19 -0
  284. package/dist/lib/components/participants-components/participant-list-item/participant-list-item.component.d.ts +19 -0
  285. package/dist/lib/components/participants-components/participant-list-others/participant-list-others.component.d.ts +17 -0
  286. package/dist/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.d.ts +17 -0
  287. package/dist/lib/components/participants-components/participants-modal/participants-modal.component.d.ts +24 -0
  288. package/dist/lib/components/polls-components/poll-modal/poll-modal.component.d.ts +27 -0
  289. package/dist/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.d.ts +15 -0
  290. package/dist/lib/components/recording-components/recording-modal/recording-modal.component.d.ts +12 -0
  291. package/dist/lib/components/recording-components/standard-panel-component/standard-panel-component.component.d.ts +5 -0
  292. package/dist/lib/components/requests-components/render-request-component/render-request-component.component.d.ts +22 -0
  293. package/dist/lib/components/requests-components/requests-modal/requests-modal.component.d.ts +17 -0
  294. package/dist/lib/components/screenboard-components/screenboard/screenboard.component.d.ts +10 -0
  295. package/dist/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.d.ts +11 -0
  296. package/dist/lib/components/waiting-components/waiting-room-modal.component.d.ts +59 -0
  297. package/dist/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.d.ts +21 -0
  298. package/dist/lib/components/whiteboard-components/whiteboard/whiteboard.component.d.ts +49 -0
  299. package/dist/lib/consumers/add-videos-grid.service.d.ts +49 -0
  300. package/dist/lib/consumers/auto-adjust.service.d.ts +26 -0
  301. package/dist/lib/consumers/calculate-rows-and-columns.service.d.ts +18 -0
  302. package/dist/lib/consumers/change-vids.service.d.ts +131 -66
  303. package/dist/lib/consumers/check-grid.service.d.ts +32 -18
  304. package/dist/lib/consumers/check-permission.service.d.ts +25 -0
  305. package/dist/lib/consumers/check-screen-share.service.d.ts +35 -0
  306. package/dist/lib/consumers/close-and-resize.service.d.ts +102 -0
  307. package/dist/lib/consumers/compare-active-names.service.d.ts +31 -0
  308. package/dist/lib/consumers/compare-screen-states.service.d.ts +35 -0
  309. package/dist/lib/consumers/connect-ips.service.d.ts +42 -0
  310. package/dist/lib/consumers/connect-recv-transport.service.d.ts +33 -0
  311. package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +38 -0
  312. package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +40 -0
  313. package/dist/lib/consumers/connect-send-transport-video.service.d.ts +44 -0
  314. package/dist/lib/consumers/connect-send-transport.service.d.ts +54 -0
  315. package/dist/lib/consumers/consumer-resume.service.d.ts +36 -0
  316. package/dist/lib/consumers/control-media.service.d.ts +45 -0
  317. package/dist/lib/consumers/create-send-transport.service.d.ts +46 -0
  318. package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +50 -0
  319. package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +39 -0
  320. package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +45 -0
  321. package/dist/lib/consumers/disp-streams.service.d.ts +92 -0
  322. package/dist/lib/consumers/generate-page-content.service.d.ts +47 -0
  323. package/dist/lib/consumers/get-estimate.service.d.ts +50 -0
  324. package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +33 -0
  325. package/dist/lib/consumers/get-producers-piped.service.d.ts +33 -0
  326. package/dist/lib/consumers/get-videos.service.d.ts +33 -0
  327. package/dist/lib/consumers/mix-streams.service.d.ts +22 -0
  328. package/dist/lib/consumers/on-screen-changes.service.d.ts +40 -0
  329. package/dist/lib/consumers/prepopulate-user-media.service.d.ts +99 -0
  330. package/dist/lib/consumers/process-consumer-transports-audio.service.d.ts +29 -0
  331. package/dist/lib/consumers/process-consumer-transports.service.d.ts +37 -0
  332. package/dist/lib/consumers/re-port.service.d.ts +48 -0
  333. package/dist/lib/consumers/re-update-inter.service.d.ts +82 -0
  334. package/dist/lib/consumers/readjust.service.d.ts +50 -0
  335. package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +31 -0
  336. package/dist/lib/consumers/receive-room-messages.service.d.ts +27 -0
  337. package/dist/lib/consumers/reorder-streams.service.d.ts +58 -0
  338. package/dist/lib/consumers/request-screen-share.service.d.ts +34 -0
  339. package/dist/lib/consumers/resume-pause-audio-streams.service.d.ts +51 -0
  340. package/dist/lib/consumers/resume-pause-streams.service.d.ts +33 -0
  341. package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +36 -0
  342. package/dist/lib/consumers/signal-new-consumer-transport.service.d.ts +37 -37
  343. package/dist/lib/consumers/socket-receive-methods/join-consume-room.service.d.ts +33 -0
  344. package/dist/lib/consumers/socket-receive-methods/new-pipe-producer.service.d.ts +39 -0
  345. package/dist/lib/consumers/socket-receive-methods/producer-closed.service.d.ts +27 -0
  346. package/dist/lib/consumers/start-share-screen.service.d.ts +40 -0
  347. package/dist/lib/consumers/stop-share-screen.service.d.ts +55 -0
  348. package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +53 -0
  349. package/dist/lib/consumers/stream-success-audio.service.d.ts +61 -0
  350. package/dist/lib/consumers/stream-success-screen.service.d.ts +50 -0
  351. package/dist/lib/consumers/stream-success-video.service.d.ts +58 -0
  352. package/dist/lib/consumers/switch-user-audio.service.d.ts +33 -0
  353. package/dist/lib/consumers/switch-user-video-alt.service.d.ts +32 -0
  354. package/dist/lib/consumers/switch-user-video.service.d.ts +47 -0
  355. package/dist/lib/consumers/trigger.service.d.ts +38 -0
  356. package/dist/lib/consumers/update-mini-cards-grid.service.d.ts +54 -0
  357. package/dist/lib/consumers/update-participant-audio-decibels.service.d.ts +45 -0
  358. package/dist/lib/methods/background-methods/launch-background.service.d.ts +25 -0
  359. package/dist/lib/methods/breakout-room-methods/breakout-room-updated.service.d.ts +71 -0
  360. package/dist/lib/methods/breakout-room-methods/launch-breakout-rooms.service.d.ts +24 -0
  361. package/dist/lib/methods/co-host-methods/launch-co-host.service.d.ts +24 -0
  362. package/dist/lib/methods/co-host-methods/modify-co-host-settings.service.d.ts +44 -0
  363. package/dist/lib/methods/display-settings-methods/launch-display-settings.service.d.ts +22 -0
  364. package/dist/lib/methods/display-settings-methods/modify-display-settings.service.d.ts +75 -0
  365. package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +24 -0
  366. package/dist/lib/methods/exit-methods/launch-confirm-exit.service.d.ts +20 -0
  367. package/dist/lib/methods/media-settings-methods/launch-media-settings.service.d.ts +35 -0
  368. package/dist/lib/methods/menu-methods/launch-menu-modal.service.d.ts +22 -0
  369. package/dist/lib/methods/message-methods/launch-messages.service.d.ts +22 -0
  370. package/dist/lib/methods/message-methods/send-message.service.d.ts +49 -0
  371. package/dist/lib/methods/participants-methods/launch-participants.service.d.ts +24 -0
  372. package/dist/lib/methods/participants-methods/message-participants.service.d.ts +46 -0
  373. package/dist/lib/methods/participants-methods/mute-participants.service.d.ts +39 -0
  374. package/dist/lib/methods/participants-methods/remove-participants.service.d.ts +45 -0
  375. package/dist/lib/methods/polls-methods/handle-create-poll.service.d.ts +38 -0
  376. package/dist/lib/methods/polls-methods/handle-end-poll.service.d.ts +32 -0
  377. package/dist/lib/methods/polls-methods/handle-vote-poll.service.d.ts +34 -0
  378. package/dist/lib/methods/polls-methods/launch-poll.service.d.ts +20 -0
  379. package/dist/lib/methods/polls-methods/poll-updated.service.d.ts +31 -0
  380. package/dist/lib/methods/recording-methods/check-pause-state.service.d.ts +24 -0
  381. package/dist/lib/methods/recording-methods/check-resume-state.service.d.ts +22 -0
  382. package/dist/lib/methods/recording-methods/confirm-recording.service.d.ts +63 -0
  383. package/dist/lib/methods/recording-methods/launch-recording.service.d.ts +43 -0
  384. package/dist/lib/methods/recording-methods/record-pause-timer.service.d.ts +27 -0
  385. package/dist/lib/methods/recording-methods/record-resume-timer.service.d.ts +44 -0
  386. package/dist/lib/methods/recording-methods/record-start-timer.service.d.ts +45 -0
  387. package/dist/lib/methods/recording-methods/record-update-timer.service.d.ts +32 -0
  388. package/dist/lib/methods/recording-methods/start-recording.service.d.ts +50 -0
  389. package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +38 -0
  390. package/dist/lib/methods/recording-methods/update-recording.service.d.ts +48 -0
  391. package/dist/lib/methods/requests-methods/launch-requests.service.d.ts +25 -0
  392. package/dist/lib/methods/requests-methods/respond-to-requests.service.d.ts +39 -0
  393. package/dist/lib/methods/settings-methods/launch-settings.service.d.ts +25 -0
  394. package/dist/lib/methods/settings-methods/modify-settings.service.d.ts +42 -0
  395. package/dist/lib/methods/stream-methods/click-audio.service.d.ts +97 -0
  396. package/dist/lib/methods/stream-methods/click-chat.service.d.ts +31 -0
  397. package/dist/lib/methods/stream-methods/click-screen-share.service.d.ts +68 -0
  398. package/dist/lib/methods/stream-methods/click-video.service.d.ts +88 -0
  399. package/dist/lib/methods/stream-methods/switch-audio.service.d.ts +47 -0
  400. package/dist/lib/methods/stream-methods/switch-video-alt.service.d.ts +50 -0
  401. package/dist/lib/methods/stream-methods/switch-video.service.d.ts +56 -0
  402. package/dist/lib/methods/utils/format-number.service.d.ts +26 -14
  403. package/dist/lib/methods/utils/generate-random-messages.service.d.ts +33 -0
  404. package/dist/lib/methods/utils/generate-random-participants.service.d.ts +27 -0
  405. package/dist/lib/methods/utils/generate-random-polls.service.d.ts +26 -0
  406. package/dist/lib/methods/utils/generate-random-request-list.service.d.ts +36 -0
  407. package/dist/lib/methods/utils/generate-random-waiting-room-list.service.d.ts +21 -0
  408. package/dist/lib/methods/utils/get-modal-position.util.d.ts +13 -3
  409. package/dist/lib/methods/utils/get-overlay-position.util.d.ts +13 -3
  410. package/dist/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.d.ts +37 -0
  411. package/dist/lib/methods/utils/mini-audio-player/mini-audio-player.component.d.ts +55 -0
  412. package/dist/lib/methods/utils/producer/a-params.service.d.ts +37 -0
  413. package/dist/lib/methods/utils/producer/h-params.service.d.ts +50 -0
  414. package/dist/lib/methods/utils/producer/screen-params.service.d.ts +37 -0
  415. package/dist/lib/methods/utils/producer/v-params.service.d.ts +50 -0
  416. package/dist/lib/methods/utils/producer/video-capture-constraints.service.d.ts +46 -0
  417. package/dist/lib/methods/utils/sleep.util.d.ts +9 -3
  418. package/dist/lib/methods/utils/sound-player.service.d.ts +21 -0
  419. package/dist/lib/methods/utils/validate-alphanumeric.service.d.ts +16 -0
  420. package/dist/lib/methods/waiting-methods/launch-waiting.service.d.ts +18 -0
  421. package/dist/lib/methods/waiting-methods/respond-to-waiting.service.d.ts +29 -0
  422. package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +29 -0
  423. package/dist/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.d.ts +20 -0
  424. package/dist/lib/producer-client/producer-client-emits/create-device-client.service.d.ts +23 -0
  425. package/dist/lib/producer-client/producer-client-emits/join-room-client.service.d.ts +31 -0
  426. package/dist/lib/producer-client/producer-client-emits/update-room-parameters-client.service.d.ts +44 -0
  427. package/dist/lib/producers/producer-emits/join-con-room.service.d.ts +38 -0
  428. package/dist/lib/producers/producer-emits/join-room.service.d.ts +38 -0
  429. package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +73 -0
  430. package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +71 -0
  431. package/dist/lib/producers/socket-receive-methods/all-waiting-room-members.service.d.ts +27 -0
  432. package/dist/lib/producers/socket-receive-methods/ban-participant.service.d.ts +36 -0
  433. package/dist/lib/producers/socket-receive-methods/control-media-host.service.d.ts +37 -0
  434. package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +24 -0
  435. package/dist/lib/producers/socket-receive-methods/disconnect.service.d.ts +26 -0
  436. package/dist/lib/producers/socket-receive-methods/get-domains.service.d.ts +24 -9
  437. package/dist/lib/producers/socket-receive-methods/host-request-response.service.d.ts +31 -48
  438. package/dist/lib/producers/socket-receive-methods/meeting-ended.service.d.ts +29 -0
  439. package/dist/lib/producers/socket-receive-methods/meeting-still-there.service.d.ts +23 -0
  440. package/dist/lib/producers/socket-receive-methods/meeting-time-remaining.service.d.ts +27 -0
  441. package/dist/lib/producers/socket-receive-methods/participant-requested.service.d.ts +31 -0
  442. package/dist/lib/producers/socket-receive-methods/person-joined.service.d.ts +25 -0
  443. package/dist/lib/producers/socket-receive-methods/producer-media-closed.service.d.ts +61 -0
  444. package/dist/lib/producers/socket-receive-methods/producer-media-paused.service.d.ts +62 -0
  445. package/dist/lib/producers/socket-receive-methods/producer-media-resumed.service.d.ts +45 -0
  446. package/dist/lib/producers/socket-receive-methods/re-initiate-recording.service.d.ts +29 -0
  447. package/dist/lib/producers/socket-receive-methods/receive-message.service.d.ts +38 -0
  448. package/dist/lib/producers/socket-receive-methods/recording-notice.service.d.ts +38 -0
  449. package/dist/lib/producers/socket-receive-methods/room-record-params.service.d.ts +62 -0
  450. package/dist/lib/producers/socket-receive-methods/screen-producer-id.service.d.ts +41 -0
  451. package/dist/lib/producers/socket-receive-methods/start-records.service.d.ts +25 -0
  452. package/dist/lib/producers/socket-receive-methods/stopped-recording.service.d.ts +25 -0
  453. package/dist/lib/producers/socket-receive-methods/time-left-recording.service.d.ts +21 -0
  454. package/dist/lib/producers/socket-receive-methods/update-consuming-domains.service.d.ts +42 -0
  455. package/dist/lib/producers/socket-receive-methods/update-media-settings.service.d.ts +30 -0
  456. package/dist/lib/producers/socket-receive-methods/updated-co-host.service.d.ts +40 -0
  457. package/dist/lib/producers/socket-receive-methods/user-waiting.service.d.ts +14 -40
  458. package/dist/lib/sockets/socket-manager.service.d.ts +40 -0
  459. package/package.json +1 -1
@@ -108,6 +108,16 @@ import * as i3 from "@angular/forms";
108
108
  * @method isPointNearLine - Checks if a point is near a line.
109
109
  * @method toggleToolbar - Toggles the visibility of the toolbar.
110
110
  * @method toggleAnnotate - Toggles the annotation mode.
111
+ *
112
+ * @example
113
+ * ```html
114
+ * <app-screenboard
115
+ * [customWidth]="customWidth"
116
+ * [customHeight]="customHeight"
117
+ * [parameters]="screenboardParameters"
118
+ * [showAspect]="showAspect"
119
+ * ></app-screenboard>
120
+ * ```
111
121
  */
112
122
  export class Screenboard {
113
123
  customWidth;
@@ -614,4 +624,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
614
624
  type: ViewChild,
615
625
  args: ['screenboardContentRef']
616
626
  }] } });
617
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2NyZWVuYm9hcmQtY29tcG9uZW50cy9zY3JlZW5ib2FyZC9zY3JlZW5ib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zY3JlZW5ib2FyZC1jb21wb25lbnRzL3NjcmVlbmJvYXJkL3NjcmVlbmJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBTVQsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFlBQVksRUFDWixhQUFhLEVBQ2IsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixPQUFPLEVBQ1AsT0FBTyxFQUNQLGNBQWMsR0FDZixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBd0JyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9HRztB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QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25EZXN0cm95LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9wdGlvbmFsLFxuICBJbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgZmFDaGV2cm9uUmlnaHQsXG4gIGZhQ2hldnJvbkxlZnQsXG4gIGZhUGVuY2lsQWx0LFxuICBmYVBhaW50QnJ1c2gsXG4gIGZhU2hhcGVzLFxuICBmYUVyYXNlcixcbiAgZmFTZWFyY2gsXG4gIGZhU2VhcmNoUGx1cyxcbiAgZmFTZWFyY2hNaW51cyxcbiAgZmFGb250LFxuICBmYVRleHRIZWlnaHQsXG4gIGZhVW5kbyxcbiAgZmFSZWRvLFxuICBmYVNhdmUsXG4gIGZhVHJhc2gsXG4gIGZhVGltZXMsXG4gIGZhTW91c2VQb2ludGVyLFxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBTbGVlcFR5cGUsIFNob3dBbGVydCB9IGZyb20gJy4uLy4uLy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyZWVuYm9hcmRQYXJhbWV0ZXJzIHtcbiAgdXBkYXRlQ2FudmFzU2NyZWVuYm9hcmQ6IChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KSA9PiB2b2lkO1xuICBhbm5vdGF0ZVNjcmVlblN0cmVhbTogYm9vbGVhbjtcbiAgdXBkYXRlQW5ub3RhdGVTY3JlZW5TdHJlYW06IChhbm5vdGF0ZVNjcmVlblN0cmVhbTogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlSXNTY3JlZW5ib2FyZE1vZGFsVmlzaWJsZTogKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgc2xlZXA6IFNsZWVwVHlwZTtcbiAgc2hvd0FsZXJ0PzogU2hvd0FsZXJ0O1xuXG4gIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IFNjcmVlbmJvYXJkUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbmJvYXJkT3B0aW9ucyB7XG4gIGN1c3RvbVdpZHRoOiBudW1iZXI7XG4gIGN1c3RvbUhlaWdodDogbnVtYmVyO1xuICBwYXJhbWV0ZXJzOiBTY3JlZW5ib2FyZFBhcmFtZXRlcnM7XG4gIHNob3dBc3BlY3Q6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFNjcmVlbmJvYXJkVHlwZSA9IChvcHRpb25zOiBTY3JlZW5ib2FyZE9wdGlvbnMpID0+IHZvaWQ7XG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBTY3JlZW5ib2FyZCBjb21wb25lbnQgZm9yIE1lZGlhU0ZVLUFuZ3VsYXIgYXBwbGljYXRpb24uXG4gKlxuICogVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgYSBzY3JlZW5ib2FyZCB3aXRoIGRyYXdpbmcsIGZyZWVoYW5kLCBzaGFwZSwgYW5kIGVyYXNlIG1vZGVzLlxuICogSXQgc3VwcG9ydHMgbW91c2UgYW5kIHRvdWNoIGV2ZW50cyBmb3IgZHJhd2luZyBvbiBhIGNhbnZhcy5cbiAqXG4gKiBAY29tcG9uZW50XG4gKiBAc2VsZWN0b3IgYXBwLXNjcmVlbmJvYXJkXG4gKiBAdGVtcGxhdGVVcmwgLi9zY3JlZW5ib2FyZC5jb21wb25lbnQuaHRtbFxuICogQHN0eWxlVXJscyAuL3NjcmVlbmJvYXJkLmNvbXBvbmVudC5jc3NcbiAqIEBpbXBvcnRzIENvbW1vbk1vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGUsIEZvcm1zTW9kdWxlXG4gKlxuICogQGNsYXNzIFNjcmVlbmJvYXJkXG4gKiBAaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXG4gKlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGN1c3RvbVdpZHRoIC0gQ3VzdG9tIHdpZHRoIGZvciB0aGUgc2NyZWVuYm9hcmQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gY3VzdG9tSGVpZ2h0IC0gQ3VzdG9tIGhlaWdodCBmb3IgdGhlIHNjcmVlbmJvYXJkLlxuICogQHByb3BlcnR5IHthbnl9IHBhcmFtZXRlcnMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgc2NyZWVuYm9hcmQuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHNob3dBc3BlY3QgLSBGbGFnIHRvIHNob3cgYXNwZWN0IHJhdGlvLlxuICpcbiAqIEBwcm9wZXJ0eSB7RWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD59IGNhbnZhc1JlZiAtIFJlZmVyZW5jZSB0byB0aGUgY2FudmFzIGVsZW1lbnQuXG4gKiBAcHJvcGVydHkge0VsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+fSBzY3JlZW5ib2FyZFJlZiAtIFJlZmVyZW5jZSB0byB0aGUgc2NyZWVuYm9hcmQgZGl2IGVsZW1lbnQuXG4gKiBAcHJvcGVydHkge0VsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+fSBzY3JlZW5ib2FyZENvbnRlbnRSZWYgLSBSZWZlcmVuY2UgdG8gdGhlIHNjcmVlbmJvYXJkIGNvbnRlbnQgZGl2IGVsZW1lbnQuXG4gKlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFDaGV2cm9uUmlnaHQgLSBGb250QXdlc29tZSBpY29uIGZvciBjaGV2cm9uIHJpZ2h0LlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFDaGV2cm9uTGVmdCAtIEZvbnRBd2Vzb21lIGljb24gZm9yIGNoZXZyb24gbGVmdC5cbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhUGVuY2lsQWx0IC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgcGVuY2lsLlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFQYWludEJydXNoIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgcGFpbnQgYnJ1c2guXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYVNoYXBlcyAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHNoYXBlcy5cbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhRXJhc2VyIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgZXJhc2VyLlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFTZWFyY2ggLSBGb250QXdlc29tZSBpY29uIGZvciBzZWFyY2guXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYVNlYXJjaFBsdXMgLSBGb250QXdlc29tZSBpY29uIGZvciBzZWFyY2ggcGx1cy5cbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhU2VhcmNoTWludXMgLSBGb250QXdlc29tZSBpY29uIGZvciBzZWFyY2ggbWludXMuXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYUZvbnQgLSBGb250QXdlc29tZSBpY29uIGZvciBmb250LlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFUZXh0SGVpZ2h0IC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgdGV4dCBoZWlnaHQuXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYVVuZG8gLSBGb250QXdlc29tZSBpY29uIGZvciB1bmRvLlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFSZWRvIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgcmVkby5cbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhU2F2ZSAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHNhdmUuXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYVRyYXNoIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgdHJhc2guXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYVRpbWVzIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgdGltZXMuXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYU1vdXNlUG9pbnRlciAtIEZvbnRBd2Vzb21lIGljb24gZm9yIG1vdXNlIHBvaW50ZXIuXG4gKlxuICogQHByb3BlcnR5IHsnZHJhdycgfCAnZnJlZWhhbmQnIHwgJ3NoYXBlJyB8ICdlcmFzZSd9IG1vZGUgLSBDdXJyZW50IGRyYXdpbmcgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNEcmF3aW5nIC0gRmxhZyB0byBpbmRpY2F0ZSBpZiBkcmF3aW5nIGlzIGluIHByb2dyZXNzLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHN0YXJ0WCAtIFN0YXJ0aW5nIFggY29vcmRpbmF0ZSBmb3IgZHJhd2luZy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzdGFydFkgLSBTdGFydGluZyBZIGNvb3JkaW5hdGUgZm9yIGRyYXdpbmcuXG4gKiBAcHJvcGVydHkge251bWJlcn0gY3VycmVudFggLSBDdXJyZW50IFggY29vcmRpbmF0ZSBmb3IgZHJhd2luZy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjdXJyZW50WSAtIEN1cnJlbnQgWSBjb29yZGluYXRlIGZvciBkcmF3aW5nLlxuICogQHByb3BlcnR5IHtBcnJheTx7IHg6IG51bWJlcjsgeTogbnVtYmVyOyBjb2xvcjogc3RyaW5nOyB0aGlja25lc3M6IG51bWJlciB9Pn0gZnJlZWhhbmREcmF3aW5nIC0gQXJyYXkgb2YgcG9pbnRzIGZvciBmcmVlaGFuZCBkcmF3aW5nLlxuICogQHByb3BlcnR5IHthbnlbXX0gc2hhcGVzIC0gQXJyYXkgb2Ygc2hhcGVzIGRyYXduIG9uIHRoZSBjYW52YXMuXG4gKiBAcHJvcGVydHkge251bWJlcn0gZXJhc2VyVGhpY2tuZXNzIC0gVGhpY2tuZXNzIG9mIHRoZSBlcmFzZXIuXG4gKiBAcHJvcGVydHkge251bWJlcn0gYnJ1c2hUaGlja25lc3MgLSBUaGlja25lc3Mgb2YgdGhlIGJydXNoLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxpbmVUaGlja25lc3MgLSBUaGlja25lc3Mgb2YgdGhlIGxpbmUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbGluZVR5cGUgLSBUeXBlIG9mIHRoZSBsaW5lIChzb2xpZCwgZGFzaGVkLCBkb3R0ZWQsIGRhc2hEb3QpLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbG9yIC0gQ29sb3IgZm9yIGRyYXdpbmcuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZm9udCAtIEZvbnQgZm9yIHRleHQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gZm9udFNpemUgLSBGb250IHNpemUgZm9yIHRleHQuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IHNoYXBlIC0gQ3VycmVudCBzaGFwZSBiZWluZyBkcmF3bi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdG9vbGJhclZpc2libGUgLSBGbGFnIHRvIGluZGljYXRlIGlmIHRoZSB0b29sYmFyIGlzIHZpc2libGUuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGRyb3Bkb3duT3BlbiAtIElEIG9mIHRoZSBjdXJyZW50bHkgb3BlbiBkcm9wZG93bi5cbiAqIEBwcm9wZXJ0eSB7SFRNTENhbnZhc0VsZW1lbnR9IGNhbnZhcyAtIENhbnZhcyBlbGVtZW50LlxuICogQHByb3BlcnR5IHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGN0eCAtIENhbnZhcyByZW5kZXJpbmcgY29udGV4dC5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7bnVtYmVyfSBbaW5qZWN0ZWRDdXN0b21XaWR0aF0gLSBJbmplY3RlZCBjdXN0b20gd2lkdGguXG4gKiBAcGFyYW0ge251bWJlcn0gW2luamVjdGVkQ3VzdG9tSGVpZ2h0XSAtIEluamVjdGVkIGN1c3RvbSBoZWlnaHQuXG4gKiBAcGFyYW0ge2FueX0gW2luamVjdGVkUGFyYW1ldGVyc10gLSBJbmplY3RlZCBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtib29sZWFufSBbaW5qZWN0ZWRTaG93QXNwZWN0XSAtIEluamVjdGVkIHNob3cgYXNwZWN0IGZsYWcuXG4gKlxuICogQG1ldGhvZCBuZ09uSW5pdCAtIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBhcmUgaW5pdGlhbGl6ZWQuXG4gKiBAbWV0aG9kIG5nT25DaGFuZ2VzIC0gTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgd2hlbiBhbnkgZGF0YS1ib3VuZCBwcm9wZXJ0eSBjaGFuZ2VzLlxuICogQG1ldGhvZCBuZ0FmdGVyVmlld0luaXQgLSBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciB0aGUgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cbiAqIEBtZXRob2QgbmdPbkRlc3Ryb3kgLSBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBqdXN0IGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cbiAqXG4gKiBAbWV0aG9kIGFkZExpc3RlbmVycyAtIEFkZHMgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSBjYW52YXMuXG4gKiBAbWV0aG9kIGhhbmRsZU1vdXNlRG93biAtIEhhbmRsZXMgbW91c2UgZG93biBldmVudHMuXG4gKiBAbWV0aG9kIGhhbmRsZU1vdXNlTW92ZSAtIEhhbmRsZXMgbW91c2UgbW92ZSBldmVudHMuXG4gKiBAbWV0aG9kIGhhbmRsZU1vdXNlVXAgLSBIYW5kbGVzIG1vdXNlIHVwIGV2ZW50cy5cbiAqIEBtZXRob2QgaGFuZGxlVG91Y2hTdGFydCAtIEhhbmRsZXMgdG91Y2ggc3RhcnQgZXZlbnRzLlxuICogQG1ldGhvZCBoYW5kbGVUb3VjaE1vdmUgLSBIYW5kbGVzIHRvdWNoIG1vdmUgZXZlbnRzLlxuICogQG1ldGhvZCBoYW5kbGVUb3VjaEVuZCAtIEhhbmRsZXMgdG91Y2ggZW5kIGV2ZW50cy5cbiAqIEBtZXRob2QgaGFuZGxlQ2xpY2tPdXRzaWRlIC0gSGFuZGxlcyBjbGljayBldmVudHMgb3V0c2lkZSB0aGUgY29tcG9uZW50LlxuICogQG1ldGhvZCBoYW5kbGVEcm9wZG93bkNsaWNrIC0gSGFuZGxlcyBkcm9wZG93biBjbGljayBldmVudHMuXG4gKiBAbWV0aG9kIHNldERyYXdNb2RlIC0gU2V0cyB0aGUgZHJhd2luZyBtb2RlLlxuICogQG1ldGhvZCBzZXRGcmVlaGFuZE1vZGUgLSBTZXRzIHRoZSBmcmVlaGFuZCBtb2RlLlxuICogQG1ldGhvZCBzZXRTaGFwZU1vZGUgLSBTZXRzIHRoZSBzaGFwZSBtb2RlLlxuICogQG1ldGhvZCBzZXRFcmFzZU1vZGUgLSBTZXRzIHRoZSBlcmFzZSBtb2RlLlxuICogQG1ldGhvZCBzdGFydERyYXdpbmcgLSBTdGFydHMgdGhlIGRyYXdpbmcgcHJvY2Vzcy5cbiAqIEBtZXRob2QgZHJhdyAtIERyYXdzIG9uIHRoZSBjYW52YXMuXG4gKiBAbWV0aG9kIHN0b3BEcmF3aW5nIC0gU3RvcHMgdGhlIGRyYXdpbmcgcHJvY2Vzcy5cbiAqIEBtZXRob2QgZHJhd0xpbmUgLSBEcmF3cyBhIGxpbmUgb24gdGhlIGNhbnZhcy5cbiAqIEBtZXRob2QgZHJhd1NoYXBlcyAtIERyYXdzIGFsbCBzaGFwZXMgb24gdGhlIGNhbnZhcy5cbiAqIEBtZXRob2QgZHJhd0ZyZWVoYW5kIC0gRHJhd3MgZnJlZWhhbmQgb24gdGhlIGNhbnZhcy5cbiAqIEBtZXRob2QgZHJhd1NoYXBlIC0gRHJhd3MgYSBzaGFwZSBvbiB0aGUgY2FudmFzLlxuICogQG1ldGhvZCBkcmF3UG9seWdvbiAtIERyYXdzIGEgcG9seWdvbiBvbiB0aGUgY2FudmFzLlxuICogQG1ldGhvZCByZW1vdmVTaGFwZSAtIFJlbW92ZXMgdGhlIGZpcnN0IHNoYXBlIGZyb20gdGhlIHNoYXBlcyBhcnJheS5cbiAqIEBtZXRob2QgZXJhc2UgLSBFcmFzZXMgcGFydCBvZiB0aGUgZHJhd2luZy5cbiAqIEBtZXRob2QgaXNQb2ludE5lYXJMaW5lIC0gQ2hlY2tzIGlmIGEgcG9pbnQgaXMgbmVhciBhIGxpbmUuXG4gKiBAbWV0aG9kIHRvZ2dsZVRvb2xiYXIgLSBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB0b29sYmFyLlxuICogQG1ldGhvZCB0b2dnbGVBbm5vdGF0ZSAtIFRvZ2dsZXMgdGhlIGFubm90YXRpb24gbW9kZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNjcmVlbmJvYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjcmVlbmJvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2NyZWVuYm9hcmQuY29tcG9uZW50LmNzcyddLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb250QXdlc29tZU1vZHVsZSwgRm9ybXNNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTY3JlZW5ib2FyZCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjdXN0b21XaWR0aCE6IG51bWJlcjtcbiAgQElucHV0KCkgY3VzdG9tSGVpZ2h0ITogbnVtYmVyO1xuICBASW5wdXQoKSBwYXJhbWV0ZXJzOiBTY3JlZW5ib2FyZFBhcmFtZXRlcnMgPSB7fSBhcyBTY3JlZW5ib2FyZFBhcmFtZXRlcnM7XG4gIEBJbnB1dCgpIHNob3dBc3BlY3QhOiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc1JlZicpXG4gIGNhbnZhc1JlZiE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdzY3JlZW5ib2FyZFJlZicpXG4gIHNjcmVlbmJvYXJkUmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3NjcmVlbmJvYXJkQ29udGVudFJlZicpXG4gIHNjcmVlbmJvYXJkQ29udGVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIGZhQ2hldnJvblJpZ2h0ID0gZmFDaGV2cm9uUmlnaHQ7XG4gIGZhQ2hldnJvbkxlZnQgPSBmYUNoZXZyb25MZWZ0O1xuICBmYVBlbmNpbEFsdCA9IGZhUGVuY2lsQWx0O1xuICBmYVBhaW50QnJ1c2ggPSBmYVBhaW50QnJ1c2g7XG4gIGZhU2hhcGVzID0gZmFTaGFwZXM7XG4gIGZhRXJhc2VyID0gZmFFcmFzZXI7XG4gIGZhU2VhcmNoID0gZmFTZWFyY2g7XG4gIGZhU2VhcmNoUGx1cyA9IGZhU2VhcmNoUGx1cztcbiAgZmFTZWFyY2hNaW51cyA9IGZhU2VhcmNoTWludXM7XG4gIGZhRm9udCA9IGZhRm9udDtcbiAgZmFUZXh0SGVpZ2h0ID0gZmFUZXh0SGVpZ2h0O1xuICBmYVVuZG8gPSBmYVVuZG87XG4gIGZhUmVkbyA9IGZhUmVkbztcbiAgZmFTYXZlID0gZmFTYXZlO1xuICBmYVRyYXNoID0gZmFUcmFzaDtcbiAgZmFUaW1lcyA9IGZhVGltZXM7XG4gIGZhTW91c2VQb2ludGVyID0gZmFNb3VzZVBvaW50ZXI7XG5cbiAgbW9kZTogJ2RyYXcnIHwgJ2ZyZWVoYW5kJyB8ICdzaGFwZScgfCAnZXJhc2UnID0gJ2RyYXcnO1xuICBpc0RyYXdpbmcgPSBmYWxzZTtcbiAgc3RhcnRYID0gMDtcbiAgc3RhcnRZID0gMDtcbiAgY3VycmVudFggPSAwO1xuICBjdXJyZW50WSA9IDA7XG4gIGZyZWVoYW5kRHJhd2luZzogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgY29sb3I6IHN0cmluZzsgdGhpY2tuZXNzOiBudW1iZXIgfVtdID0gW107XG4gIHNoYXBlczogYW55W10gPSBbXTtcbiAgZXJhc2VyVGhpY2tuZXNzID0gMTA7XG4gIGJydXNoVGhpY2tuZXNzID0gNjtcbiAgbGluZVRoaWNrbmVzcyA9IDY7XG4gIGxpbmVUeXBlID0gJ3NvbGlkJztcbiAgY29sb3IgPSAnIzAwMDAwMCc7XG4gIGZvbnQgPSAnQXJpYWwnO1xuICBmb250U2l6ZSA9IDIwO1xuICBzaGFwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHRvb2xiYXJWaXNpYmxlID0gZmFsc2U7XG4gIGRyb3Bkb3duT3Blbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGNhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xuICBjdHghOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnY3VzdG9tV2lkdGgnKSBpbmplY3RlZEN1c3RvbVdpZHRoOiBudW1iZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnY3VzdG9tSGVpZ2h0JykgaW5qZWN0ZWRDdXN0b21IZWlnaHQ6IG51bWJlcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdwYXJhbWV0ZXJzJykgaW5qZWN0ZWRQYXJhbWV0ZXJzOiBhbnksXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnc2hvd0FzcGVjdCcpIGluamVjdGVkU2hvd0FzcGVjdDogYm9vbGVhbixcbiAgKSB7XG4gICAgdGhpcy5jdXN0b21XaWR0aCA9IGluamVjdGVkQ3VzdG9tV2lkdGggfHwgdGhpcy5jdXN0b21XaWR0aCB8fCAwO1xuICAgIHRoaXMuY3VzdG9tSGVpZ2h0ID0gaW5qZWN0ZWRDdXN0b21IZWlnaHQgfHwgdGhpcy5jdXN0b21IZWlnaHQgfHwgMDtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBpbmplY3RlZFBhcmFtZXRlcnMgfHwgdGhpcy5wYXJhbWV0ZXJzIHx8IHt9O1xuICAgIHRoaXMuc2hvd0FzcGVjdCA9IGluamVjdGVkU2hvd0FzcGVjdCB8fCB0aGlzLnNob3dBc3BlY3QgfHwgZmFsc2U7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMpIHtcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcbiAgICAgIH1cbiAgICB9LCAxMDApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzaG93QXNwZWN0J10pIHtcbiAgICAgIGlmICghdGhpcy5jYW52YXMgJiYgdGhpcy5jYW52YXNSZWYpIHtcbiAgICAgICAgdGhpcy5jYW52YXMgPSB0aGlzLmNhbnZhc1JlZiEubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5hZGRMaXN0ZW5lcnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FudmFzUmVmICYmICF0aGlzLmNhbnZhcykge1xuICAgICAgdGhpcy5jYW52YXMgPSB0aGlzLmNhbnZhc1JlZiEubmF0aXZlRWxlbWVudDtcbiAgICAgIHRoaXMuYWRkTGlzdGVuZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FudmFzKSB7XG4gICAgICB0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFuZGxlTW91c2VNb3ZlLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuaGFuZGxlTW91c2VVcC5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgdGhpcy5oYW5kbGVNb3VzZVVwLmJpbmQodGhpcykpO1xuXG4gICAgICB0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5oYW5kbGVUb3VjaFN0YXJ0LmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5oYW5kbGVUb3VjaE1vdmUuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuaGFuZGxlVG91Y2hFbmQuYmluZCh0aGlzKSk7XG5cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIGFkZExpc3RlbmVycyA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5jYW52YXMpIHtcbiAgICAgIHRoaXMuY3R4ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSE7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlQ2FudmFzU2NyZWVuYm9hcmQodGhpcy5jYW52YXMpO1xuXG4gICAgICB0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFuZGxlTW91c2VNb3ZlLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuaGFuZGxlTW91c2VVcC5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgdGhpcy5oYW5kbGVNb3VzZVVwLmJpbmQodGhpcykpO1xuXG4gICAgICB0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5oYW5kbGVUb3VjaFN0YXJ0LmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5oYW5kbGVUb3VjaE1vdmUuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuaGFuZGxlVG91Y2hFbmQuYmluZCh0aGlzKSk7XG5cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfTtcblxuICBoYW5kbGVNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLnN0YXJ0RHJhd2luZyhldmVudCk7XG4gIH1cblxuICBoYW5kbGVNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmRyYXcoZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlTW91c2VVcCgpIHtcbiAgICB0aGlzLnN0b3BEcmF3aW5nKCk7XG4gIH1cblxuICBoYW5kbGVUb3VjaFN0YXJ0KGU6IFRvdWNoRXZlbnQpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdG91Y2ggPSBlLnRvdWNoZXNbMF07XG4gICAgY29uc3QgbW91c2VFdmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nLCB7XG4gICAgICBjbGllbnRYOiB0b3VjaC5jbGllbnRYLFxuICAgICAgY2xpZW50WTogdG91Y2guY2xpZW50WSxcbiAgICB9KTtcbiAgICB0aGlzLmNhbnZhcy5kaXNwYXRjaEV2ZW50KG1vdXNlRXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlVG91Y2hNb3ZlKGU6IFRvdWNoRXZlbnQpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdG91Y2ggPSBlLnRvdWNoZXNbMF07XG4gICAgY29uc3QgbW91c2VFdmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZW1vdmUnLCB7XG4gICAgICBjbGllbnRYOiB0b3VjaC5jbGllbnRYLFxuICAgICAgY2xpZW50WTogdG91Y2guY2xpZW50WSxcbiAgICB9KTtcbiAgICB0aGlzLmNhbnZhcy5kaXNwYXRjaEV2ZW50KG1vdXNlRXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlVG91Y2hFbmQoZTogVG91Y2hFdmVudCkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBtb3VzZUV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNldXAnLCB7fSk7XG4gICAgdGhpcy5jYW52YXMuZGlzcGF0Y2hFdmVudChtb3VzZUV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmRyb3Bkb3duT3BlbiAmJiAhKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmJ0bi1ncm91cCcpKSB7XG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJvcGRvd25DbGljayhpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSB0aGlzLmRyb3Bkb3duT3BlbiA9PT0gaWQgPyBudWxsIDogaWQ7XG4gIH1cblxuICBzZXREcmF3TW9kZSh0aGlja25lc3M6IG51bWJlcikge1xuICAgIHRoaXMubGluZVRoaWNrbmVzcyA9IHRoaWNrbmVzcztcbiAgICB0aGlzLm1vZGUgPSAnZHJhdyc7XG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBudWxsO1xuICB9XG5cbiAgc2V0RnJlZWhhbmRNb2RlKHRoaWNrbmVzczogbnVtYmVyKSB7XG4gICAgdGhpcy5icnVzaFRoaWNrbmVzcyA9IHRoaWNrbmVzcztcbiAgICB0aGlzLm1vZGUgPSAnZnJlZWhhbmQnO1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gbnVsbDtcbiAgfVxuXG4gIHNldFNoYXBlTW9kZShzaGFwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zaGFwZSA9IHNoYXBlO1xuICAgIHRoaXMubW9kZSA9ICdzaGFwZSc7XG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBudWxsO1xuICB9XG5cbiAgc2V0RXJhc2VNb2RlKHRoaWNrbmVzczogbnVtYmVyKSB7XG4gICAgdGhpcy5lcmFzZXJUaGlja25lc3MgPSB0aGlja25lc3M7XG4gICAgdGhpcy5tb2RlID0gJ2VyYXNlJztcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IG51bGw7XG4gIH1cblxuICBzdGFydERyYXdpbmcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmlzRHJhd2luZyA9IHRydWU7XG4gICAgdGhpcy5zdGFydFggPSBldmVudC5vZmZzZXRYO1xuICAgIHRoaXMuc3RhcnRZID0gZXZlbnQub2Zmc2V0WTtcblxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdlcmFzZScpIHtcbiAgICAgIHRoaXMuZXJhc2UoZXZlbnQub2Zmc2V0WCwgZXZlbnQub2Zmc2V0WSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdkcmF3JyB8fCB0aGlzLm1vZGUgPT09ICdmcmVlaGFuZCcpIHtcbiAgICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgdGhpcy5jdHgubW92ZVRvKGV2ZW50Lm9mZnNldFgsIGV2ZW50Lm9mZnNldFkpO1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2ZyZWVoYW5kJykge1xuICAgICAgICB0aGlzLmZyZWVoYW5kRHJhd2luZyA9IFtcbiAgICAgICAgICB7IHg6IGV2ZW50Lm9mZnNldFgsIHk6IGV2ZW50Lm9mZnNldFksIGNvbG9yOiB0aGlzLmNvbG9yLCB0aGlja25lc3M6IHRoaXMuYnJ1c2hUaGlja25lc3MgfSxcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkcmF3KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzRHJhd2luZykgcmV0dXJuO1xuXG4gICAgdGhpcy5jdXJyZW50WCA9IGV2ZW50Lm9mZnNldFg7XG4gICAgdGhpcy5jdXJyZW50WSA9IGV2ZW50Lm9mZnNldFk7XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSAnZXJhc2UnKSB7XG4gICAgICB0aGlzLmVyYXNlKGV2ZW50Lm9mZnNldFgsIGV2ZW50Lm9mZnNldFkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnZHJhdycpIHtcbiAgICAgIHRoaXMuY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICAgIHRoaXMuZHJhd1NoYXBlcygpO1xuICAgICAgdGhpcy5kcmF3TGluZSh0aGlzLnN0YXJ0WCwgdGhpcy5zdGFydFksIGV2ZW50Lm9mZnNldFgsIGV2ZW50Lm9mZnNldFkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnZnJlZWhhbmQnKSB7XG4gICAgICB0aGlzLmN0eC5saW5lVG8oZXZlbnQub2Zmc2V0WCwgZXZlbnQub2Zmc2V0WSk7XG4gICAgICB0aGlzLmN0eC5zdHJva2VTdHlsZSA9IHRoaXMuY29sb3I7XG4gICAgICB0aGlzLmN0eC5saW5lV2lkdGggPSB0aGlzLmJydXNoVGhpY2tuZXNzO1xuICAgICAgdGhpcy5jdHguc3Ryb2tlKCk7XG4gICAgICB0aGlzLmZyZWVoYW5kRHJhd2luZy5wdXNoKHtcbiAgICAgICAgeDogZXZlbnQub2Zmc2V0WCxcbiAgICAgICAgeTogZXZlbnQub2Zmc2V0WSxcbiAgICAgICAgY29sb3I6IHRoaXMuY29sb3IsXG4gICAgICAgIHRoaWNrbmVzczogdGhpcy5icnVzaFRoaWNrbmVzcyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnc2hhcGUnKSB7XG4gICAgICB0aGlzLmN0eC5jbGVhclJlY3QoMCwgMCwgdGhpcy5jYW52YXMud2lkdGgsIHRoaXMuY2FudmFzLmhlaWdodCk7XG4gICAgICB0aGlzLmRyYXdTaGFwZXMoKTtcbiAgICAgIHRoaXMuZHJhd1NoYXBlKHRoaXMuc2hhcGUhLCB0aGlzLnN0YXJ0WCwgdGhpcy5zdGFydFksIGV2ZW50Lm9mZnNldFgsIGV2ZW50Lm9mZnNldFkpO1xuICAgIH1cbiAgfVxuXG4gIHN0b3BEcmF3aW5nKCkge1xuICAgIHRoaXMuaXNEcmF3aW5nID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSAnZHJhdycpIHtcbiAgICAgIHRoaXMuc2hhcGVzLnB1c2goe1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIHgxOiB0aGlzLnN0YXJ0WCxcbiAgICAgICAgeTE6IHRoaXMuc3RhcnRZLFxuICAgICAgICB4MjogdGhpcy5jdXJyZW50WCxcbiAgICAgICAgeTI6IHRoaXMuY3VycmVudFksXG4gICAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgICB0aGlja25lc3M6IHRoaXMubGluZVRoaWNrbmVzcyxcbiAgICAgICAgbGluZVR5cGU6IHRoaXMubGluZVR5cGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ2ZyZWVoYW5kJykge1xuICAgICAgdGhpcy5zaGFwZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdmcmVlaGFuZCcsXG4gICAgICAgIHBvaW50czogdGhpcy5mcmVlaGFuZERyYXdpbmcsXG4gICAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgICB0aGlja25lc3M6IHRoaXMuYnJ1c2hUaGlja25lc3MsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZnJlZWhhbmREcmF3aW5nID0gW107XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdzaGFwZScpIHtcbiAgICAgIHRoaXMuc2hhcGVzLnB1c2goe1xuICAgICAgICB0eXBlOiB0aGlzLnNoYXBlISxcbiAgICAgICAgeDE6IHRoaXMuc3RhcnRYLFxuICAgICAgICB5MTogdGhpcy5zdGFydFksXG4gICAgICAgIHgyOiB0aGlzLmN1cnJlbnRYLFxuICAgICAgICB5MjogdGhpcy5jdXJyZW50WSxcbiAgICAgICAgY29sb3I6IHRoaXMuY29sb3IsXG4gICAgICAgIHRoaWNrbmVzczogdGhpcy5saW5lVGhpY2tuZXNzLFxuICAgICAgICBsaW5lVHlwZTogdGhpcy5saW5lVHlwZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZW1vdmVTaGFwZSgpLCAxNTAwMCk7XG4gIH1cblxuICBkcmF3TGluZSA9ICh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSA9PiB7XG4gICAgdGhpcy5jdHguYmVnaW5QYXRoKCk7XG4gICAgdGhpcy5jdHguc3Ryb2tlU3R5bGUgPSB0aGlzLmNvbG9yO1xuICAgIHRoaXMuY3R4LmxpbmVXaWR0aCA9IHRoaXMubGluZVRoaWNrbmVzcztcbiAgICBpZiAodGhpcy5saW5lVHlwZSA9PT0gJ2Rhc2hlZCcpIHtcbiAgICAgIHRoaXMuY3R4LnNldExpbmVEYXNoKFsxMCwgMTBdKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGluZVR5cGUgPT09ICdkb3R0ZWQnKSB7XG4gICAgICB0aGlzLmN0eC5zZXRMaW5lRGFzaChbMiwgMTBdKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGluZVR5cGUgPT09ICdkYXNoRG90Jykge1xuICAgICAgdGhpcy5jdHguc2V0TGluZURhc2goWzEwLCA1LCAyLCA1XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3R4LnNldExpbmVEYXNoKFtdKTtcbiAgICB9XG4gICAgdGhpcy5jdHgubW92ZVRvKHgxLCB5MSk7XG4gICAgdGhpcy5jdHgubGluZVRvKHgyLCB5Mik7XG4gICAgdGhpcy5jdHguc3Ryb2tlKCk7XG4gICAgdGhpcy5jdHguc2V0TGluZURhc2goW10pO1xuICB9O1xuXG4gIGRyYXdTaGFwZXMgPSAoKSA9PiB7XG4gICAgdGhpcy5jdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuICAgIHRoaXMuc2hhcGVzLmZvckVhY2goKHNoYXBlKSA9PiB7XG4gICAgICBpZiAoc2hhcGUudHlwZSA9PT0gJ2xpbmUnKSB7XG4gICAgICAgIHRoaXMuZHJhd0xpbmUoc2hhcGUueDEsIHNoYXBlLnkxLCBzaGFwZS54Miwgc2hhcGUueTIpO1xuICAgICAgfSBlbHNlIGlmIChzaGFwZS50eXBlID09PSAnZnJlZWhhbmQnKSB7XG4gICAgICAgIHRoaXMuZHJhd0ZyZWVoYW5kKHNoYXBlLnBvaW50cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRyYXdTaGFwZShzaGFwZS50eXBlLCBzaGFwZS54MSwgc2hhcGUueTEsIHNoYXBlLngyLCBzaGFwZS55Mik7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZHJhd0ZyZWVoYW5kID0gKHBvaW50czogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgY29sb3I6IHN0cmluZzsgdGhpY2tuZXNzOiBudW1iZXIgfVtdKSA9PiB7XG4gICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSByZXR1cm47XG4gICAgdGhpcy5jdHguc3Ryb2tlU3R5bGUgPSB0aGlzLmNvbG9yO1xuICAgIHRoaXMuY3R4LmxpbmVXaWR0aCA9IHRoaXMuYnJ1c2hUaGlja25lc3M7XG4gICAgdGhpcy5jdHguYmVnaW5QYXRoKCk7XG4gICAgdGhpcy5jdHgubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuY3R4LmxpbmVUbyhwb2ludHNbaV0ueCwgcG9pbnRzW2ldLnkpO1xuICAgIH1cbiAgICB0aGlzLmN0eC5zdHJva2UoKTtcbiAgfTtcblxuICBkcmF3U2hhcGUgPSAodHlwZTogc3RyaW5nLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSA9PiB7XG4gICAgdGhpcy5jdHguYmVnaW5QYXRoKCk7XG4gICAgdGhpcy5jdHguc3Ryb2tlU3R5bGUgPSB0aGlzLmNvbG9yO1xuICAgIHRoaXMuY3R4LmxpbmVXaWR0aCA9IHRoaXMubGluZVRoaWNrbmVzcztcbiAgICBpZiAodGhpcy5saW5lVHlwZSA9PT0gJ2Rhc2hlZCcpIHtcbiAgICAgIHRoaXMuY3R4LnNldExpbmVEYXNoKFsxMCwgMTBdKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGluZVR5cGUgPT09ICdkb3R0ZWQnKSB7XG4gICAgICB0aGlzLmN0eC5zZXRMaW5lRGFzaChbMiwgMTBdKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGluZVR5cGUgPT09ICdkYXNoRG90Jykge1xuICAgICAgdGhpcy5jdHguc2V0TGluZURhc2goWzEwLCA1LCAyLCA1XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3R4LnNldExpbmVEYXNoKFtdKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdyZWN0YW5nbGUnKSB7XG4gICAgICB0aGlzLmN0eC5zdHJva2VSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2lyY2xlJykge1xuICAgICAgY29uc3QgcmFkaXVzID0gTWF0aC5zcXJ0KE1hdGgucG93KHgyIC0geDEsIDIpICsgTWF0aC5wb3coeTIgLSB5MSwgMikpO1xuICAgICAgdGhpcy5jdHguYXJjKHgxLCB5MSwgcmFkaXVzLCAwLCAyICogTWF0aC5QSSk7XG4gICAgICB0aGlzLmN0eC5zdHJva2UoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyaG9tYnVzJykge1xuICAgICAgY29uc3QgY2VudGVyWCA9ICh4MSArIHgyKSAvIDI7XG4gICAgICBjb25zdCBjZW50ZXJZID0gKHkxICsgeTIpIC8gMjtcbiAgICAgIHRoaXMuY3R4Lm1vdmVUbyhjZW50ZXJYLCB5MSk7XG4gICAgICB0aGlzLmN0eC5saW5lVG8oeDIsIGNlbnRlclkpO1xuICAgICAgdGhpcy5jdHgubGluZVRvKGNlbnRlclgsIHkyKTtcbiAgICAgIHRoaXMuY3R4LmxpbmVUbyh4MSwgY2VudGVyWSk7XG4gICAgICB0aGlzLmN0eC5jbG9zZVBhdGgoKTtcbiAgICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3BlbnRhZ29uJykge1xuICAgICAgdGhpcy5kcmF3UG9seWdvbig1LCB4MSwgeTEsIHgyLCB5Mik7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnaGV4YWdvbicpIHtcbiAgICAgIHRoaXMuZHJhd1BvbHlnb24oNiwgeDEsIHkxLCB4MiwgeTIpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3RyaWFuZ2xlJykge1xuICAgICAgY29uc3QgY2VudGVyWFRyaWFuZ2xlID0gKHgxICsgeDIpIC8gMjtcbiAgICAgIHRoaXMuY3R4Lm1vdmVUbyhjZW50ZXJYVHJpYW5nbGUsIHkxKTtcbiAgICAgIHRoaXMuY3R4LmxpbmVUbyh4MiwgeTIpO1xuICAgICAgdGhpcy5jdHgubGluZVRvKHgxLCB5Mik7XG4gICAgICB0aGlzLmN0eC5jbG9zZVBhdGgoKTtcbiAgICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NxdWFyZScpIHtcbiAgICAgIHRoaXMuY3R4LnN0cm9rZVJlY3QoeDEsIHkxLCB4MiAtIHgxLCB4MiAtIHgxKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvY3RhZ29uJykge1xuICAgICAgdGhpcy5kcmF3UG9seWdvbig4LCB4MSwgeTEsIHgyLCB5Mik7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb3ZhbCcpIHtcbiAgICAgIGNvbnN0IHJhZGl1c1ggPSBNYXRoLmFicyh4MiAtIHgxKSAvIDI7XG4gICAgICBjb25zdCByYWRpdXNZID0gTWF0aC5hYnMoeTIgLSB5MSkgLyAyO1xuICAgICAgY29uc3QgY2VudGVyWCA9ICh4MSArIHgyKSAvIDI7XG4gICAgICBjb25zdCBjZW50ZXJZID0gKHkxICsgeTIpIC8gMjtcbiAgICAgIHRoaXMuY3R4LmVsbGlwc2UoY2VudGVyWCwgY2VudGVyWSwgcmFkaXVzWCwgcmFkaXVzWSwgMCwgMCwgMiAqIE1hdGguUEkpO1xuICAgICAgdGhpcy5jdHguc3Ryb2tlKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncGFyYWxsZWxvZ3JhbScpIHtcbiAgICAgIGNvbnN0IGNlbnRlclggPSAoeDEgKyB4MikgLyAyO1xuICAgICAgdGhpcy5jdHgubW92ZVRvKGNlbnRlclgsIHkxKTtcbiAgICAgIHRoaXMuY3R4LmxpbmVUbyh4MiwgeTIpO1xuICAgICAgdGhpcy5jdHgubGluZVRvKGNlbnRlclgsIHkyKTtcbiAgICAgIHRoaXMuY3R4LmxpbmVUbyh4MSwgeTEpO1xuICAgICAgdGhpcy5jdHguY2xvc2VQYXRoKCk7XG4gICAgICB0aGlzLmN0eC5zdHJva2UoKTtcbiAgICB9XG4gICAgdGhpcy5jdHguc2V0TGluZURhc2goW10pO1xuICB9O1xuXG4gIGRyYXdQb2x5Z29uID0gKHNpZGVzOiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBjZW50ZXJYID0gKHgxICsgeDIpIC8gMjtcbiAgICBjb25zdCBjZW50ZXJZID0gKHkxICsgeTIpIC8gMjtcbiAgICBjb25zdCByYWRpdXMgPSBNYXRoLm1pbihNYXRoLmFicyh4MiAtIHgxKSwgTWF0aC5hYnMoeTIgLSB5MSkpIC8gMjtcbiAgICBjb25zdCBhbmdsZSA9ICgyICogTWF0aC5QSSkgLyBzaWRlcztcbiAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpZGVzOyBpKyspIHtcbiAgICAgIGNvbnN0IHggPSBjZW50ZXJYICsgcmFkaXVzICogTWF0aC5jb3MoaSAqIGFuZ2xlIC0gTWF0aC5QSSAvIDIpO1xuICAgICAgY29uc3QgeSA9IGNlbnRlclkgKyByYWRpdXMgKiBNYXRoLnNpbihpICogYW5nbGUgLSBNYXRoLlBJIC8gMik7XG4gICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICB0aGlzLmN0eC5tb3ZlVG8oeCwgeSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmN0eC5saW5lVG8oeCwgeSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY3R4LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xuICB9O1xuXG4gIHJlbW92ZVNoYXBlID0gKCkgPT4ge1xuICAgIHRoaXMuc2hhcGVzLnNoaWZ0KCk7XG4gICAgdGhpcy5kcmF3U2hhcGVzKCk7XG4gIH07XG5cbiAgZXJhc2UgPSAoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IHtcbiAgICB0aGlzLmN0eC5zYXZlKCk7XG4gICAgdGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgdGhpcy5jdHguYmVnaW5QYXRoKCk7XG4gICAgdGhpcy5jdHguYXJjKHgsIHksIHRoaXMuZXJhc2VyVGhpY2tuZXNzIC8gMiwgMCwgTWF0aC5QSSAqIDIsIGZhbHNlKTtcbiAgICB0aGlzLmN0eC5maWxsKCk7XG4gICAgdGhpcy5jdHgucmVzdG9yZSgpO1xuXG4gICAgdGhpcy5zaGFwZXMgPSB0aGlzLnNoYXBlc1xuICAgICAgLm1hcCgoc2hhcGUpID0+IHtcbiAgICAgICAgaWYgKHNoYXBlLnR5cGUgPT09ICdmcmVlaGFuZCcpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uc2hhcGUsXG4gICAgICAgICAgICBwb2ludHM6IHNoYXBlLnBvaW50cy5maWx0ZXIoKHBvaW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLnNxcnQoTWF0aC5wb3cocG9pbnQueCAtIHgsIDIpICsgTWF0aC5wb3cocG9pbnQueSAtIHksIDIpKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGRpc3RhbmNlID4gdGhpcy5lcmFzZXJUaGlja25lc3MgLyAyO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChzaGFwZS50eXBlID09PSAnbGluZScpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlzUG9pbnROZWFyTGluZShcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeSxcbiAgICAgICAgICAgICAgc2hhcGUueDEsXG4gICAgICAgICAgICAgIHNoYXBlLnkxLFxuICAgICAgICAgICAgICBzaGFwZS54MixcbiAgICAgICAgICAgICAgc2hhcGUueTIsXG4gICAgICAgICAgICAgIHRoaXMuZXJhc2VyVGhpY2tuZXNzIC8gMixcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChzaGFwZS50eXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0V2lkdGggPSB0aGlzLmN0eC5tZWFzdXJlVGV4dChzaGFwZS50ZXh0KS53aWR0aDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB4ID4gc2hhcGUueCAmJlxuICAgICAgICAgICAgeCA8IHNoYXBlLnggKyB0ZXh0V2lkdGggJiZcbiAgICAgICAgICAgIHkgPiBzaGFwZS55IC0gc2hhcGUuZm9udFNpemUgJiZcbiAgICAgICAgICAgIHkgPCBzaGFwZS55XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHggPiBzaGFwZS54MSAmJiB4IDwgc2hhcGUueDIgJiYgeSA+IHNoYXBlLnkxICYmIHkgPCBzaGFwZS55Mikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChzaGFwZSkgPT4gc2hhcGUgJiYgKHNoYXBlLnR5cGUgIT09ICdmcmVlaGFuZCcgfHwgc2hhcGUucG9pbnRzLmxlbmd0aCA+IDApKTtcbiAgfTtcblxuICBpc1BvaW50TmVhckxpbmUoXG4gICAgcHg6IG51bWJlcixcbiAgICBweTogbnVtYmVyLFxuICAgIHgxOiBudW1iZXIsXG4gICAgeTE6IG51bWJlcixcbiAgICB4MjogbnVtYmVyLFxuICAgIHkyOiBudW1iZXIsXG4gICAgdGhyZXNob2xkOiBudW1iZXIsXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGR4ID0geDIgLSB4MTtcbiAgICBjb25zdCBkeSA9IHkyIC0geTE7XG4gICAgY29uc3QgbGVuZ3RoID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgICBjb25zdCBkb3QgPSAoKHB4IC0geDEpICogZHggKyAocHkgLSB5MSkgKiBkeSkgLyAobGVuZ3RoICogbGVuZ3RoKTtcbiAgICBjb25zdCBjbG9zZXN0WCA9IHgxICsgZG90ICogZHg7XG4gICAgY29uc3QgY2xvc2VzdFkgPSB5MSArIGRvdCAqIGR5O1xuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KE1hdGgucG93KHB4IC0gY2xvc2VzdFgsIDIpICsgTWF0aC5wb3cocHkgLSBjbG9zZXN0WSwgMikpO1xuICAgIHJldHVybiBkaXN0YW5jZSA8PSB0aHJlc2hvbGQ7XG4gIH1cblxuICB0b2dnbGVUb29sYmFyID0gKCkgPT4ge1xuICAgIHRoaXMudG9vbGJhclZpc2libGUgPSAhdGhpcy50b29sYmFyVmlzaWJsZTtcbiAgfTtcblxuICB0b2dnbGVBbm5vdGF0ZSA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBhbm5vdGF0ZVNjcmVlblN0cmVhbSA9IHRoaXMucGFyYW1ldGVycy5hbm5vdGF0ZVNjcmVlblN0cmVhbTtcbiAgICB0aGlzLnBhcmFtZXRlcnMuYW5ub3RhdGVTY3JlZW5TdHJlYW0gPSAhYW5ub3RhdGVTY3JlZW5TdHJlYW07XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVBbm5vdGF0ZVNjcmVlblN0cmVhbSghYW5ub3RhdGVTY3JlZW5TdHJlYW0pO1xuICAgIH0pO1xuICAgIGlmICh0aGlzLnBhcmFtZXRlcnMuYW5ub3RhdGVTY3JlZW5TdHJlYW0pIHtcbiAgICAgIHRoaXMudG9vbGJhclZpc2libGUgPSB0cnVlO1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogYFlvdSBjYW4gbm93IGFubm90YXRlIHRoZSBzY3JlZW4uIElmIHlvdSBjYW5ub3Qgc2VlIHlvdXIgYW5ub3RhdGlvbiBjb250cm9scyAob24gdG9wKSwgdHJ5IG1pbmltaXppbmcgeW91ciBzY3JlZW4gYnkgdXNpbmcgJ0NtZCcgKyAnLScgKG9uIE1hYykgb3IgJ0N0cmwnICsgJy0nIChvbiBXaW5kb3dzKS5gLFxuICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgIGR1cmF0aW9uOiA5MDAwLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9vbGJhclZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlSXNTY3JlZW5ib2FyZE1vZGFsVmlzaWJsZSh0cnVlKTtcbiAgICBhd2FpdCB0aGlzLnBhcmFtZXRlcnMuc2xlZXAoeyBtczogNTAwIH0pO1xuICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVJc1NjcmVlbmJvYXJkTW9kYWxWaXNpYmxlKGZhbHNlKTtcbiAgfTtcbn1cbiIsIjxkaXYgaWQ9XCJzY3JlZW5ib2FyZC1pbnRlcmZhY2VcIiAqbmdJZj1cInNob3dBc3BlY3RcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2s7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgei1pbmRleDogMTAwMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyBtYXgtaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzogYXV0bztcIiAjc2NyZWVuYm9hcmRSZWY+XHJcbiAgPGRpdiBpZD1cInNjcmVlbmJvYXJkQ29udGVudFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgb3ZlcmZsb3c6IGhpZGRlbjsgdG9wOiAwOyBsZWZ0OiAwO1wiICNzY3JlZW5ib2FyZENvbnRlbnRSZWY+XHJcbiAgICA8YnV0dG9uIGlkPVwiYW5ub3RhdGVTY3JlZW5cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG5Cb2FyZFNjcmVlbiBhbm5vdGF0ZVNjcmVlbkJ0blwiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDVweDsgcmlnaHQ6IDEwcHg7IHotaW5kZXg6IDEwMDA7XCIgKGNsaWNrKT1cInRvZ2dsZUFubm90YXRlKClcIj5cclxuICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFQZW5jaWxBbHRcIiBbbmdTdHlsZV09XCJ7J2NvbG9yJzogcGFyYW1ldGVycy5hbm5vdGF0ZVNjcmVlblN0cmVhbSA/ICdyZWQnIDogJ2dyZWVuJ31cIj48L2ZhLWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIGlkPVwidG9vbGJhclRvZ2dsZVNjcmVlblwiICpuZ0lmPVwicGFyYW1ldGVycy5hbm5vdGF0ZVNjcmVlblN0cmVhbVwiIGNsYXNzPVwiYnRuIGJ0bkJvYXJkU2NyZWVuIGJ0bi1wcmltYXJ5XCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNXB4OyByaWdodDogNTVweDsgei1pbmRleDogMTAwMDtcIiAoY2xpY2spPVwidG9nZ2xlVG9vbGJhcigpXCI+XHJcbiAgICAgIDxmYS1pY29uIFtpY29uXT1cInRvb2xiYXJWaXNpYmxlID8gZmFDaGV2cm9uUmlnaHQgOiBmYUNoZXZyb25MZWZ0XCI+PC9mYS1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2xiYXJTY3JlZW4gbWItM1wiIGlkPVwidG9vbGJhclNjcmVlblwiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDVweDsgcmlnaHQ6IDEwNXB4OyB6LWluZGV4OiAxMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcIiBbc3R5bGUuZGlzcGxheV09XCJ0b29sYmFyVmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdcIj5cclxuICAgICAgPCEtLSBEcmF3IE1vZGUgRHJvcGRvd24gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bkJvYXJkU2NyZWVuIGJ0bi1zZWNvbmRhcnkgZHJvcGRvd24tdG9nZ2xlXCIgaWQ9XCJkcmF3TW9kZVNjcmVlblwiIChjbGljayk9XCJoYW5kbGVEcm9wZG93bkNsaWNrKCdkcmF3TW9kZVNjcmVlbicpXCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVBlbmNpbEFsdFwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJvcGRvd25PcGVuID09PSAnZHJhd01vZGVTY3JlZW4nXCIgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3dcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldERyYXdNb2RlKDMpXCI+WFgtU21hbGwgKDNweCk8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldERyYXdNb2RlKDYpXCI+WC1TbWFsbCAoNnB4KTwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0RHJhd01vZGUoMTIpXCI+U21hbGwgKDEycHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXREcmF3TW9kZSgxOClcIj5NZWRpdW0gKDE4cHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXREcmF3TW9kZSgyNClcIj5MYXJnZSAoMjRweCk8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldERyYXdNb2RlKDM2KVwiPlgtTGFyZ2UgKDM2cHgpPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBGcmVlaGFuZCBNb2RlIERyb3Bkb3duIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG5Cb2FyZFNjcmVlbiBidG4tZGFyayBkcm9wZG93bi10b2dnbGVcIiBpZD1cImZyZWVoYW5kTW9kZVNjcmVlblwiIChjbGljayk9XCJoYW5kbGVEcm9wZG93bkNsaWNrKCdmcmVlaGFuZE1vZGVTY3JlZW4nKVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFQYWludEJydXNoXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJkcm9wZG93bk9wZW4gPT09ICdmcmVlaGFuZE1vZGVTY3JlZW4nXCIgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3dcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldEZyZWVoYW5kTW9kZSg1KVwiPlgtU21hbGwgKDVweCk8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldEZyZWVoYW5kTW9kZSgxMClcIj5TbWFsbCAoMTBweCk8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldEZyZWVoYW5kTW9kZSgyMClcIj5NZWRpdW0gKDIwcHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRGcmVlaGFuZE1vZGUoNDApXCI+TGFyZ2UgKDQwcHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRGcmVlaGFuZE1vZGUoNjApXCI+WC1MYXJnZSAoNjBweCk8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFNoYXBlIE1vZGUgRHJvcGRvd24gd2l0aCBJbWFnZXMgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bkJvYXJkU2NyZWVuIGJ0bi1kYXJrIGRyb3Bkb3duLXRvZ2dsZVwiIGlkPVwic2hhcGVNb2RlU2NyZWVuXCIgKGNsaWNrKT1cImhhbmRsZURyb3Bkb3duQ2xpY2soJ3NoYXBlTW9kZVNjcmVlbicpXCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVNoYXBlc1wiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJvcGRvd25PcGVuID09PSAnc2hhcGVNb2RlU2NyZWVuJ1wiIGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRTaGFwZU1vZGUoJ3NxdWFyZScpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9tZWRpYXNmdS5jb20vaW1hZ2VzL3N2Zy9zcXVhcmUuc3ZnXCIgYWx0PVwiU3F1YXJlXCIgY2xhc3M9XCJzaGFwZS1pY29uXCIgLz4gU3F1YXJlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldFNoYXBlTW9kZSgncmVjdGFuZ2xlJylcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL21lZGlhc2Z1LmNvbS9pbWFnZXMvc3ZnL3JlY3RhbmdsZS5zdmdcIiBhbHQ9XCJSZWN0YW5nbGVcIiBjbGFzcz1cInNoYXBlLWljb25cIiAvPiBSZWN0YW5nbGVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0U2hhcGVNb2RlKCdjaXJjbGUnKVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vbWVkaWFzZnUuY29tL2ltYWdlcy9zdmcvY2lyY2xlLnN2Z1wiIGFsdD1cIkNpcmNsZVwiIGNsYXNzPVwic2hhcGUtaWNvblwiIC8+IENpcmNsZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRTaGFwZU1vZGUoJ3RyaWFuZ2xlJylcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL21lZGlhc2Z1LmNvbS9pbWFnZXMvc3ZnL3RyaWFuZ2xlLnN2Z1wiIGFsdD1cIlRyaWFuZ2xlXCIgY2xhc3M9XCJzaGFwZS1pY29uXCIgLz4gVHJpYW5nbGVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0U2hhcGVNb2RlKCdoZXhhZ29uJylcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL21lZGlhc2Z1LmNvbS9pbWFnZXMvc3ZnL2hleGFnb24uc3ZnXCIgYWx0PVwiSGV4YWdvblwiIGNsYXNzPVwic2hhcGUtaWNvblwiIC8+IEhleGFnb25cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0U2hhcGVNb2RlKCdwZW50YWdvbicpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9tZWRpYXNmdS5jb20vaW1hZ2VzL3N2Zy9wZW50YWdvbi5zdmdcIiBhbHQ9XCJQZW50YWdvblwiIGNsYXNzPVwic2hhcGUtaWNvblwiIC8+IFBlbnRhZ29uXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldFNoYXBlTW9kZSgncmhvbWJ1cycpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9tZWRpYXNmdS5jb20vaW1hZ2VzL3N2Zy9yaG9tYnVzLnN2Z1wiIGFsdD1cIlJob21idXNcIiBjbGFzcz1cInNoYXBlLWljb25cIiAvPiBSaG9tYnVzXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldFNoYXBlTW9kZSgnb2N0YWdvbicpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9tZWRpYXNmdS5jb20vaW1hZ2VzL3N2Zy9vY3RhZ29uLnN2Z1wiIGFsdD1cIk9jdGFnb25cIiBjbGFzcz1cInNoYXBlLWljb25cIiAvPiBPY3RhZ29uXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldFNoYXBlTW9kZSgnb3ZhbCcpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9tZWRpYXNmdS5jb20vaW1hZ2VzL3N2Zy9vdmFsLnN2Z1wiIGFsdD1cIk92YWxcIiBjbGFzcz1cInNoYXBlLWljb25cIiAvPiBPdmFsXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldFNoYXBlTW9kZSgncGFyYWxsZWxvZ3JhbScpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9tZWRpYXNmdS5jb20vaW1hZ2VzL3N2Zy9wYXJhbGxlbG9ncmFtLnN2Z1wiIGFsdD1cIlBhcmFsbGVsb2dyYW1cIiBjbGFzcz1cInNoYXBlLWljb25cIiAvPiBQYXJhbGxlbG9ncmFtXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIEVyYXNlIE1vZGUgRHJvcGRvd24gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bkJvYXJkU2NyZWVuIGJ0bi1kYW5nZXIgZHJvcGRvd24tdG9nZ2xlXCIgaWQ9XCJlcmFzZU1vZGVTY3JlZW5cIiAoY2xpY2spPVwiaGFuZGxlRHJvcGRvd25DbGljaygnZXJhc2VNb2RlU2NyZWVuJylcIj5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhRXJhc2VyXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJkcm9wZG93bk9wZW4gPT09ICdlcmFzZU1vZGVTY3JlZW4nXCIgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3dcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldEVyYXNlTW9kZSg1KVwiPlgtU21hbGwgKDVweCk8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldEVyYXNlTW9kZSgxMClcIj5TbWFsbCAoMTBweCk8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldEVyYXNlTW9kZSgyMClcIj5NZWRpdW0gKDIwcHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRFcmFzZU1vZGUoMzApXCI+TGFyZ2UgKDMwcHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRFcmFzZU1vZGUoNjApXCI+WC1MYXJnZSAoNjBweCk8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIEFkZGl0aW9uYWwgVG9vbGJhciBDb250cm9scyAtLT5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG5Cb2FyZCBidG4tc3VjY2Vzc1wiIGlkPVwiem9vbVJlc2V0U2NyZWVuXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxyXG4gICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhU2VhcmNoXCI+PC9mYS1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBjbGFzcz1cImJ0blwiIGlkPVwiY29sb3JQaWNrZXJTY3JlZW5cIiBbKG5nTW9kZWwpXT1cImNvbG9yXCI+XHJcbiAgICAgIDxzZWxlY3QgaWQ9XCJsaW5lVHlwZVBpY2tlclNjcmVlblwiIGNsYXNzPVwiY3VzdG9tLXNlbGVjdFwiIHN0eWxlPVwid2lkdGg6IGF1dG87XCIgWyhuZ01vZGVsKV09XCJsaW5lVHlwZVwiPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzb2xpZFwiPlNvbGlkPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRhc2hlZFwiPkRhc2hlZDwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb3R0ZWRcIj5Eb3R0ZWQ8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZGFzaERvdFwiPkRhc2gtRG90PC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGNhbnZhcyBpZD1cImNhbnZhc1JlZlwiIHdpZHRoPVwiMTI4MFwiIGhlaWdodD1cIjcyMFwiIFtuZ1N0eWxlXT1cInsnZGlzcGxheSc6IHBhcmFtZXRlcnMuYW5ub3RhdGVTY3JlZW5TdHJlYW0gPyAnYmxvY2snIDogJ25vbmUnfVwiIHN0eWxlPVwicGFkZGluZzogMDsgbWFyZ2luOiAwO1wiICNjYW52YXNSZWY+PC9jYW52YXM+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
627
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2NyZWVuYm9hcmQtY29tcG9uZW50cy9zY3JlZW5ib2FyZC9zY3JlZW5ib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zY3JlZW5ib2FyZC1jb21wb25lbnRzL3NjcmVlbmJvYXJkL3NjcmVlbmJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBTVQsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFlBQVksRUFDWixhQUFhLEVBQ2IsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixPQUFPLEVBQ1AsT0FBTyxFQUNQLGNBQWMsR0FDZixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBd0JyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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RHBCLFNBQVM7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPcHRpb25hbCxcbiAgSW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGZhQ2hldnJvblJpZ2h0LFxuICBmYUNoZXZyb25MZWZ0LFxuICBmYVBlbmNpbEFsdCxcbiAgZmFQYWludEJydXNoLFxuICBmYVNoYXBlcyxcbiAgZmFFcmFzZXIsXG4gIGZhU2VhcmNoLFxuICBmYVNlYXJjaFBsdXMsXG4gIGZhU2VhcmNoTWludXMsXG4gIGZhRm9udCxcbiAgZmFUZXh0SGVpZ2h0LFxuICBmYVVuZG8sXG4gIGZhUmVkbyxcbiAgZmFTYXZlLFxuICBmYVRyYXNoLFxuICBmYVRpbWVzLFxuICBmYU1vdXNlUG9pbnRlcixcbn0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgU2xlZXBUeXBlLCBTaG93QWxlcnQgfSBmcm9tICcuLi8uLi8uLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbmJvYXJkUGFyYW1ldGVycyB7XG4gIHVwZGF0ZUNhbnZhc1NjcmVlbmJvYXJkOiAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCkgPT4gdm9pZDtcbiAgYW5ub3RhdGVTY3JlZW5TdHJlYW06IGJvb2xlYW47XG4gIHVwZGF0ZUFubm90YXRlU2NyZWVuU3RyZWFtOiAoYW5ub3RhdGVTY3JlZW5TdHJlYW06IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZUlzU2NyZWVuYm9hcmRNb2RhbFZpc2libGU6IChpc1Zpc2libGU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHNsZWVwOiBTbGVlcFR5cGU7XG4gIHNob3dBbGVydD86IFNob3dBbGVydDtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBTY3JlZW5ib2FyZFBhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JlZW5ib2FyZE9wdGlvbnMge1xuICBjdXN0b21XaWR0aDogbnVtYmVyO1xuICBjdXN0b21IZWlnaHQ6IG51bWJlcjtcbiAgcGFyYW1ldGVyczogU2NyZWVuYm9hcmRQYXJhbWV0ZXJzO1xuICBzaG93QXNwZWN0OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBTY3JlZW5ib2FyZFR5cGUgPSAob3B0aW9uczogU2NyZWVuYm9hcmRPcHRpb25zKSA9PiB2b2lkO1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgU2NyZWVuYm9hcmQgY29tcG9uZW50IGZvciBNZWRpYVNGVS1Bbmd1bGFyIGFwcGxpY2F0aW9uLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IHByb3ZpZGVzIGEgc2NyZWVuYm9hcmQgd2l0aCBkcmF3aW5nLCBmcmVlaGFuZCwgc2hhcGUsIGFuZCBlcmFzZSBtb2Rlcy5cbiAqIEl0IHN1cHBvcnRzIG1vdXNlIGFuZCB0b3VjaCBldmVudHMgZm9yIGRyYXdpbmcgb24gYSBjYW52YXMuXG4gKlxuICogQGNvbXBvbmVudFxuICogQHNlbGVjdG9yIGFwcC1zY3JlZW5ib2FyZFxuICogQHRlbXBsYXRlVXJsIC4vc2NyZWVuYm9hcmQuY29tcG9uZW50Lmh0bWxcbiAqIEBzdHlsZVVybHMgLi9zY3JlZW5ib2FyZC5jb21wb25lbnQuY3NzXG4gKiBAaW1wb3J0cyBDb21tb25Nb2R1bGUsIEZvbnRBd2Vzb21lTW9kdWxlLCBGb3Jtc01vZHVsZVxuICpcbiAqIEBjbGFzcyBTY3JlZW5ib2FyZFxuICogQGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xuICpcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjdXN0b21XaWR0aCAtIEN1c3RvbSB3aWR0aCBmb3IgdGhlIHNjcmVlbmJvYXJkLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGN1c3RvbUhlaWdodCAtIEN1c3RvbSBoZWlnaHQgZm9yIHRoZSBzY3JlZW5ib2FyZC5cbiAqIEBwcm9wZXJ0eSB7YW55fSBwYXJhbWV0ZXJzIC0gUGFyYW1ldGVycyBmb3IgdGhlIHNjcmVlbmJvYXJkLlxuICogQHByb3BlcnR5IHtib29sZWFufSBzaG93QXNwZWN0IC0gRmxhZyB0byBzaG93IGFzcGVjdCByYXRpby5cbiAqXG4gKiBAcHJvcGVydHkge0VsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+fSBjYW52YXNSZWYgLSBSZWZlcmVuY2UgdG8gdGhlIGNhbnZhcyBlbGVtZW50LlxuICogQHByb3BlcnR5IHtFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pn0gc2NyZWVuYm9hcmRSZWYgLSBSZWZlcmVuY2UgdG8gdGhlIHNjcmVlbmJvYXJkIGRpdiBlbGVtZW50LlxuICogQHByb3BlcnR5IHtFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pn0gc2NyZWVuYm9hcmRDb250ZW50UmVmIC0gUmVmZXJlbmNlIHRvIHRoZSBzY3JlZW5ib2FyZCBjb250ZW50IGRpdiBlbGVtZW50LlxuICpcbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhQ2hldnJvblJpZ2h0IC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgY2hldnJvbiByaWdodC5cbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhQ2hldnJvbkxlZnQgLSBGb250QXdlc29tZSBpY29uIGZvciBjaGV2cm9uIGxlZnQuXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYVBlbmNpbEFsdCAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHBlbmNpbC5cbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhUGFpbnRCcnVzaCAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHBhaW50IGJydXNoLlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFTaGFwZXMgLSBGb250QXdlc29tZSBpY29uIGZvciBzaGFwZXMuXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYUVyYXNlciAtIEZvbnRBd2Vzb21lIGljb24gZm9yIGVyYXNlci5cbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhU2VhcmNoIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3Igc2VhcmNoLlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFTZWFyY2hQbHVzIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3Igc2VhcmNoIHBsdXMuXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYVNlYXJjaE1pbnVzIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3Igc2VhcmNoIG1pbnVzLlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFGb250IC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgZm9udC5cbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhVGV4dEhlaWdodCAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHRleHQgaGVpZ2h0LlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFVbmRvIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgdW5kby5cbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhUmVkbyAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHJlZG8uXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYVNhdmUgLSBGb250QXdlc29tZSBpY29uIGZvciBzYXZlLlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFUcmFzaCAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHRyYXNoLlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFUaW1lcyAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHRpbWVzLlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFNb3VzZVBvaW50ZXIgLSBGb250QXdlc29tZSBpY29uIGZvciBtb3VzZSBwb2ludGVyLlxuICpcbiAqIEBwcm9wZXJ0eSB7J2RyYXcnIHwgJ2ZyZWVoYW5kJyB8ICdzaGFwZScgfCAnZXJhc2UnfSBtb2RlIC0gQ3VycmVudCBkcmF3aW5nIG1vZGUuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzRHJhd2luZyAtIEZsYWcgdG8gaW5kaWNhdGUgaWYgZHJhd2luZyBpcyBpbiBwcm9ncmVzcy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzdGFydFggLSBTdGFydGluZyBYIGNvb3JkaW5hdGUgZm9yIGRyYXdpbmcuXG4gKiBAcHJvcGVydHkge251bWJlcn0gc3RhcnRZIC0gU3RhcnRpbmcgWSBjb29yZGluYXRlIGZvciBkcmF3aW5nLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGN1cnJlbnRYIC0gQ3VycmVudCBYIGNvb3JkaW5hdGUgZm9yIGRyYXdpbmcuXG4gKiBAcHJvcGVydHkge251bWJlcn0gY3VycmVudFkgLSBDdXJyZW50IFkgY29vcmRpbmF0ZSBmb3IgZHJhd2luZy5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8eyB4OiBudW1iZXI7IHk6IG51bWJlcjsgY29sb3I6IHN0cmluZzsgdGhpY2tuZXNzOiBudW1iZXIgfT59IGZyZWVoYW5kRHJhd2luZyAtIEFycmF5IG9mIHBvaW50cyBmb3IgZnJlZWhhbmQgZHJhd2luZy5cbiAqIEBwcm9wZXJ0eSB7YW55W119IHNoYXBlcyAtIEFycmF5IG9mIHNoYXBlcyBkcmF3biBvbiB0aGUgY2FudmFzLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGVyYXNlclRoaWNrbmVzcyAtIFRoaWNrbmVzcyBvZiB0aGUgZXJhc2VyLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGJydXNoVGhpY2tuZXNzIC0gVGhpY2tuZXNzIG9mIHRoZSBicnVzaC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsaW5lVGhpY2tuZXNzIC0gVGhpY2tuZXNzIG9mIHRoZSBsaW5lLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGxpbmVUeXBlIC0gVHlwZSBvZiB0aGUgbGluZSAoc29saWQsIGRhc2hlZCwgZG90dGVkLCBkYXNoRG90KS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb2xvciAtIENvbG9yIGZvciBkcmF3aW5nLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGZvbnQgLSBGb250IGZvciB0ZXh0LlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGZvbnRTaXplIC0gRm9udCBzaXplIGZvciB0ZXh0LlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSBzaGFwZSAtIEN1cnJlbnQgc2hhcGUgYmVpbmcgZHJhd24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHRvb2xiYXJWaXNpYmxlIC0gRmxhZyB0byBpbmRpY2F0ZSBpZiB0aGUgdG9vbGJhciBpcyB2aXNpYmxlLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSBkcm9wZG93bk9wZW4gLSBJRCBvZiB0aGUgY3VycmVudGx5IG9wZW4gZHJvcGRvd24uXG4gKiBAcHJvcGVydHkge0hUTUxDYW52YXNFbGVtZW50fSBjYW52YXMgLSBDYW52YXMgZWxlbWVudC5cbiAqIEBwcm9wZXJ0eSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjdHggLSBDYW52YXMgcmVuZGVyaW5nIGNvbnRleHQuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge251bWJlcn0gW2luamVjdGVkQ3VzdG9tV2lkdGhdIC0gSW5qZWN0ZWQgY3VzdG9tIHdpZHRoLlxuICogQHBhcmFtIHtudW1iZXJ9IFtpbmplY3RlZEN1c3RvbUhlaWdodF0gLSBJbmplY3RlZCBjdXN0b20gaGVpZ2h0LlxuICogQHBhcmFtIHthbnl9IFtpbmplY3RlZFBhcmFtZXRlcnNdIC0gSW5qZWN0ZWQgcGFyYW1ldGVycy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luamVjdGVkU2hvd0FzcGVjdF0gLSBJbmplY3RlZCBzaG93IGFzcGVjdCBmbGFnLlxuICpcbiAqIEBtZXRob2QgbmdPbkluaXQgLSBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgYXJlIGluaXRpYWxpemVkLlxuICogQG1ldGhvZCBuZ09uQ2hhbmdlcyAtIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIHdoZW4gYW55IGRhdGEtYm91bmQgcHJvcGVydHkgY2hhbmdlcy5cbiAqIEBtZXRob2QgbmdBZnRlclZpZXdJbml0IC0gTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGNvbXBvbmVudCdzIHZpZXcgaGFzIGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQuXG4gKiBAbWV0aG9kIG5nT25EZXN0cm95IC0gTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQganVzdCBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gKlxuICogQG1ldGhvZCBhZGRMaXN0ZW5lcnMgLSBBZGRzIGV2ZW50IGxpc3RlbmVycyB0byB0aGUgY2FudmFzLlxuICogQG1ldGhvZCBoYW5kbGVNb3VzZURvd24gLSBIYW5kbGVzIG1vdXNlIGRvd24gZXZlbnRzLlxuICogQG1ldGhvZCBoYW5kbGVNb3VzZU1vdmUgLSBIYW5kbGVzIG1vdXNlIG1vdmUgZXZlbnRzLlxuICogQG1ldGhvZCBoYW5kbGVNb3VzZVVwIC0gSGFuZGxlcyBtb3VzZSB1cCBldmVudHMuXG4gKiBAbWV0aG9kIGhhbmRsZVRvdWNoU3RhcnQgLSBIYW5kbGVzIHRvdWNoIHN0YXJ0IGV2ZW50cy5cbiAqIEBtZXRob2QgaGFuZGxlVG91Y2hNb3ZlIC0gSGFuZGxlcyB0b3VjaCBtb3ZlIGV2ZW50cy5cbiAqIEBtZXRob2QgaGFuZGxlVG91Y2hFbmQgLSBIYW5kbGVzIHRvdWNoIGVuZCBldmVudHMuXG4gKiBAbWV0aG9kIGhhbmRsZUNsaWNrT3V0c2lkZSAtIEhhbmRsZXMgY2xpY2sgZXZlbnRzIG91dHNpZGUgdGhlIGNvbXBvbmVudC5cbiAqIEBtZXRob2QgaGFuZGxlRHJvcGRvd25DbGljayAtIEhhbmRsZXMgZHJvcGRvd24gY2xpY2sgZXZlbnRzLlxuICogQG1ldGhvZCBzZXREcmF3TW9kZSAtIFNldHMgdGhlIGRyYXdpbmcgbW9kZS5cbiAqIEBtZXRob2Qgc2V0RnJlZWhhbmRNb2RlIC0gU2V0cyB0aGUgZnJlZWhhbmQgbW9kZS5cbiAqIEBtZXRob2Qgc2V0U2hhcGVNb2RlIC0gU2V0cyB0aGUgc2hhcGUgbW9kZS5cbiAqIEBtZXRob2Qgc2V0RXJhc2VNb2RlIC0gU2V0cyB0aGUgZXJhc2UgbW9kZS5cbiAqIEBtZXRob2Qgc3RhcnREcmF3aW5nIC0gU3RhcnRzIHRoZSBkcmF3aW5nIHByb2Nlc3MuXG4gKiBAbWV0aG9kIGRyYXcgLSBEcmF3cyBvbiB0aGUgY2FudmFzLlxuICogQG1ldGhvZCBzdG9wRHJhd2luZyAtIFN0b3BzIHRoZSBkcmF3aW5nIHByb2Nlc3MuXG4gKiBAbWV0aG9kIGRyYXdMaW5lIC0gRHJhd3MgYSBsaW5lIG9uIHRoZSBjYW52YXMuXG4gKiBAbWV0aG9kIGRyYXdTaGFwZXMgLSBEcmF3cyBhbGwgc2hhcGVzIG9uIHRoZSBjYW52YXMuXG4gKiBAbWV0aG9kIGRyYXdGcmVlaGFuZCAtIERyYXdzIGZyZWVoYW5kIG9uIHRoZSBjYW52YXMuXG4gKiBAbWV0aG9kIGRyYXdTaGFwZSAtIERyYXdzIGEgc2hhcGUgb24gdGhlIGNhbnZhcy5cbiAqIEBtZXRob2QgZHJhd1BvbHlnb24gLSBEcmF3cyBhIHBvbHlnb24gb24gdGhlIGNhbnZhcy5cbiAqIEBtZXRob2QgcmVtb3ZlU2hhcGUgLSBSZW1vdmVzIHRoZSBmaXJzdCBzaGFwZSBmcm9tIHRoZSBzaGFwZXMgYXJyYXkuXG4gKiBAbWV0aG9kIGVyYXNlIC0gRXJhc2VzIHBhcnQgb2YgdGhlIGRyYXdpbmcuXG4gKiBAbWV0aG9kIGlzUG9pbnROZWFyTGluZSAtIENoZWNrcyBpZiBhIHBvaW50IGlzIG5lYXIgYSBsaW5lLlxuICogQG1ldGhvZCB0b2dnbGVUb29sYmFyIC0gVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgdG9vbGJhci5cbiAqIEBtZXRob2QgdG9nZ2xlQW5ub3RhdGUgLSBUb2dnbGVzIHRoZSBhbm5vdGF0aW9uIG1vZGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxhcHAtc2NyZWVuYm9hcmRcbiAqICBbY3VzdG9tV2lkdGhdPVwiY3VzdG9tV2lkdGhcIlxuICogW2N1c3RvbUhlaWdodF09XCJjdXN0b21IZWlnaHRcIlxuICogW3BhcmFtZXRlcnNdPVwic2NyZWVuYm9hcmRQYXJhbWV0ZXJzXCJcbiAqIFtzaG93QXNwZWN0XT1cInNob3dBc3BlY3RcIlxuICogPjwvYXBwLXNjcmVlbmJvYXJkPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zY3JlZW5ib2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY3JlZW5ib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NjcmVlbmJvYXJkLmNvbXBvbmVudC5jc3MnXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGUsIEZvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2NyZWVuYm9hcmQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY3VzdG9tV2lkdGghOiBudW1iZXI7XG4gIEBJbnB1dCgpIGN1c3RvbUhlaWdodCE6IG51bWJlcjtcbiAgQElucHV0KCkgcGFyYW1ldGVyczogU2NyZWVuYm9hcmRQYXJhbWV0ZXJzID0ge30gYXMgU2NyZWVuYm9hcmRQYXJhbWV0ZXJzO1xuICBASW5wdXQoKSBzaG93QXNwZWN0ITogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdjYW52YXNSZWYnKVxuICBjYW52YXNSZWYhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnc2NyZWVuYm9hcmRSZWYnKVxuICBzY3JlZW5ib2FyZFJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdzY3JlZW5ib2FyZENvbnRlbnRSZWYnKVxuICBzY3JlZW5ib2FyZENvbnRlbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBmYUNoZXZyb25SaWdodCA9IGZhQ2hldnJvblJpZ2h0O1xuICBmYUNoZXZyb25MZWZ0ID0gZmFDaGV2cm9uTGVmdDtcbiAgZmFQZW5jaWxBbHQgPSBmYVBlbmNpbEFsdDtcbiAgZmFQYWludEJydXNoID0gZmFQYWludEJydXNoO1xuICBmYVNoYXBlcyA9IGZhU2hhcGVzO1xuICBmYUVyYXNlciA9IGZhRXJhc2VyO1xuICBmYVNlYXJjaCA9IGZhU2VhcmNoO1xuICBmYVNlYXJjaFBsdXMgPSBmYVNlYXJjaFBsdXM7XG4gIGZhU2VhcmNoTWludXMgPSBmYVNlYXJjaE1pbnVzO1xuICBmYUZvbnQgPSBmYUZvbnQ7XG4gIGZhVGV4dEhlaWdodCA9IGZhVGV4dEhlaWdodDtcbiAgZmFVbmRvID0gZmFVbmRvO1xuICBmYVJlZG8gPSBmYVJlZG87XG4gIGZhU2F2ZSA9IGZhU2F2ZTtcbiAgZmFUcmFzaCA9IGZhVHJhc2g7XG4gIGZhVGltZXMgPSBmYVRpbWVzO1xuICBmYU1vdXNlUG9pbnRlciA9IGZhTW91c2VQb2ludGVyO1xuXG4gIG1vZGU6ICdkcmF3JyB8ICdmcmVlaGFuZCcgfCAnc2hhcGUnIHwgJ2VyYXNlJyA9ICdkcmF3JztcbiAgaXNEcmF3aW5nID0gZmFsc2U7XG4gIHN0YXJ0WCA9IDA7XG4gIHN0YXJ0WSA9IDA7XG4gIGN1cnJlbnRYID0gMDtcbiAgY3VycmVudFkgPSAwO1xuICBmcmVlaGFuZERyYXdpbmc6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IGNvbG9yOiBzdHJpbmc7IHRoaWNrbmVzczogbnVtYmVyIH1bXSA9IFtdO1xuICBzaGFwZXM6IGFueVtdID0gW107XG4gIGVyYXNlclRoaWNrbmVzcyA9IDEwO1xuICBicnVzaFRoaWNrbmVzcyA9IDY7XG4gIGxpbmVUaGlja25lc3MgPSA2O1xuICBsaW5lVHlwZSA9ICdzb2xpZCc7XG4gIGNvbG9yID0gJyMwMDAwMDAnO1xuICBmb250ID0gJ0FyaWFsJztcbiAgZm9udFNpemUgPSAyMDtcbiAgc2hhcGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICB0b29sYmFyVmlzaWJsZSA9IGZhbHNlO1xuICBkcm9wZG93bk9wZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBjYW52YXMhOiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgY3R4ITogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ2N1c3RvbVdpZHRoJykgaW5qZWN0ZWRDdXN0b21XaWR0aDogbnVtYmVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ2N1c3RvbUhlaWdodCcpIGluamVjdGVkQ3VzdG9tSGVpZ2h0OiBudW1iZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgncGFyYW1ldGVycycpIGluamVjdGVkUGFyYW1ldGVyczogYW55LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ3Nob3dBc3BlY3QnKSBpbmplY3RlZFNob3dBc3BlY3Q6IGJvb2xlYW4sXG4gICkge1xuICAgIHRoaXMuY3VzdG9tV2lkdGggPSBpbmplY3RlZEN1c3RvbVdpZHRoIHx8IHRoaXMuY3VzdG9tV2lkdGggfHwgMDtcbiAgICB0aGlzLmN1c3RvbUhlaWdodCA9IGluamVjdGVkQ3VzdG9tSGVpZ2h0IHx8IHRoaXMuY3VzdG9tSGVpZ2h0IHx8IDA7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gaW5qZWN0ZWRQYXJhbWV0ZXJzIHx8IHRoaXMucGFyYW1ldGVycyB8fCB7fTtcbiAgICB0aGlzLnNob3dBc3BlY3QgPSBpbmplY3RlZFNob3dBc3BlY3QgfHwgdGhpcy5zaG93QXNwZWN0IHx8IGZhbHNlO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzKSB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG4gICAgICB9XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snc2hvd0FzcGVjdCddKSB7XG4gICAgICBpZiAoIXRoaXMuY2FudmFzICYmIHRoaXMuY2FudmFzUmVmKSB7XG4gICAgICAgIHRoaXMuY2FudmFzID0gdGhpcy5jYW52YXNSZWYhLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuYWRkTGlzdGVuZXJzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbnZhc1JlZiAmJiAhdGhpcy5jYW52YXMpIHtcbiAgICAgIHRoaXMuY2FudmFzID0gdGhpcy5jYW52YXNSZWYhLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICB0aGlzLmFkZExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbnZhcykge1xuICAgICAgdGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZU1vdXNlTW92ZS5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmhhbmRsZU1vdXNlVXAuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIHRoaXMuaGFuZGxlTW91c2VVcC5iaW5kKHRoaXMpKTtcblxuICAgICAgdGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuaGFuZGxlVG91Y2hTdGFydC5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuaGFuZGxlVG91Y2hNb3ZlLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLmhhbmRsZVRvdWNoRW5kLmJpbmQodGhpcykpO1xuXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZS5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cblxuICBhZGRMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuY2FudmFzKSB7XG4gICAgICB0aGlzLmN0eCA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJykhO1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZUNhbnZhc1NjcmVlbmJvYXJkKHRoaXMuY2FudmFzKTtcblxuICAgICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZU1vdXNlTW92ZS5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmhhbmRsZU1vdXNlVXAuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIHRoaXMuaGFuZGxlTW91c2VVcC5iaW5kKHRoaXMpKTtcblxuICAgICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuaGFuZGxlVG91Y2hTdGFydC5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuaGFuZGxlVG91Y2hNb3ZlLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLmhhbmRsZVRvdWNoRW5kLmJpbmQodGhpcykpO1xuXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZS5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH07XG5cbiAgaGFuZGxlTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5zdGFydERyYXdpbmcoZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5kcmF3KGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZU1vdXNlVXAoKSB7XG4gICAgdGhpcy5zdG9wRHJhd2luZygpO1xuICB9XG5cbiAgaGFuZGxlVG91Y2hTdGFydChlOiBUb3VjaEV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHRvdWNoID0gZS50b3VjaGVzWzBdO1xuICAgIGNvbnN0IG1vdXNlRXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJywge1xuICAgICAgY2xpZW50WDogdG91Y2guY2xpZW50WCxcbiAgICAgIGNsaWVudFk6IHRvdWNoLmNsaWVudFksXG4gICAgfSk7XG4gICAgdGhpcy5jYW52YXMuZGlzcGF0Y2hFdmVudChtb3VzZUV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZVRvdWNoTW92ZShlOiBUb3VjaEV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHRvdWNoID0gZS50b3VjaGVzWzBdO1xuICAgIGNvbnN0IG1vdXNlRXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vtb3ZlJywge1xuICAgICAgY2xpZW50WDogdG91Y2guY2xpZW50WCxcbiAgICAgIGNsaWVudFk6IHRvdWNoLmNsaWVudFksXG4gICAgfSk7XG4gICAgdGhpcy5jYW52YXMuZGlzcGF0Y2hFdmVudChtb3VzZUV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZVRvdWNoRW5kKGU6IFRvdWNoRXZlbnQpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgbW91c2VFdmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZXVwJywge30pO1xuICAgIHRoaXMuY2FudmFzLmRpc3BhdGNoRXZlbnQobW91c2VFdmVudCk7XG4gIH1cblxuICBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kcm9wZG93bk9wZW4gJiYgIShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5idG4tZ3JvdXAnKSkge1xuICAgICAgdGhpcy5kcm9wZG93bk9wZW4gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZURyb3Bkb3duQ2xpY2soaWQ6IHN0cmluZykge1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gdGhpcy5kcm9wZG93bk9wZW4gPT09IGlkID8gbnVsbCA6IGlkO1xuICB9XG5cbiAgc2V0RHJhd01vZGUodGhpY2tuZXNzOiBudW1iZXIpIHtcbiAgICB0aGlzLmxpbmVUaGlja25lc3MgPSB0aGlja25lc3M7XG4gICAgdGhpcy5tb2RlID0gJ2RyYXcnO1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gbnVsbDtcbiAgfVxuXG4gIHNldEZyZWVoYW5kTW9kZSh0aGlja25lc3M6IG51bWJlcikge1xuICAgIHRoaXMuYnJ1c2hUaGlja25lc3MgPSB0aGlja25lc3M7XG4gICAgdGhpcy5tb2RlID0gJ2ZyZWVoYW5kJztcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IG51bGw7XG4gIH1cblxuICBzZXRTaGFwZU1vZGUoc2hhcGU6IHN0cmluZykge1xuICAgIHRoaXMuc2hhcGUgPSBzaGFwZTtcbiAgICB0aGlzLm1vZGUgPSAnc2hhcGUnO1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gbnVsbDtcbiAgfVxuXG4gIHNldEVyYXNlTW9kZSh0aGlja25lc3M6IG51bWJlcikge1xuICAgIHRoaXMuZXJhc2VyVGhpY2tuZXNzID0gdGhpY2tuZXNzO1xuICAgIHRoaXMubW9kZSA9ICdlcmFzZSc7XG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBudWxsO1xuICB9XG5cbiAgc3RhcnREcmF3aW5nKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5pc0RyYXdpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQub2Zmc2V0WDtcbiAgICB0aGlzLnN0YXJ0WSA9IGV2ZW50Lm9mZnNldFk7XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSAnZXJhc2UnKSB7XG4gICAgICB0aGlzLmVyYXNlKGV2ZW50Lm9mZnNldFgsIGV2ZW50Lm9mZnNldFkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnZHJhdycgfHwgdGhpcy5tb2RlID09PSAnZnJlZWhhbmQnKSB7XG4gICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTtcbiAgICAgIHRoaXMuY3R4Lm1vdmVUbyhldmVudC5vZmZzZXRYLCBldmVudC5vZmZzZXRZKTtcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdmcmVlaGFuZCcpIHtcbiAgICAgICAgdGhpcy5mcmVlaGFuZERyYXdpbmcgPSBbXG4gICAgICAgICAgeyB4OiBldmVudC5vZmZzZXRYLCB5OiBldmVudC5vZmZzZXRZLCBjb2xvcjogdGhpcy5jb2xvciwgdGhpY2tuZXNzOiB0aGlzLmJydXNoVGhpY2tuZXNzIH0sXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZHJhdyhldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc0RyYXdpbmcpIHJldHVybjtcblxuICAgIHRoaXMuY3VycmVudFggPSBldmVudC5vZmZzZXRYO1xuICAgIHRoaXMuY3VycmVudFkgPSBldmVudC5vZmZzZXRZO1xuXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2VyYXNlJykge1xuICAgICAgdGhpcy5lcmFzZShldmVudC5vZmZzZXRYLCBldmVudC5vZmZzZXRZKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ2RyYXcnKSB7XG4gICAgICB0aGlzLmN0eC5jbGVhclJlY3QoMCwgMCwgdGhpcy5jYW52YXMud2lkdGgsIHRoaXMuY2FudmFzLmhlaWdodCk7XG4gICAgICB0aGlzLmRyYXdTaGFwZXMoKTtcbiAgICAgIHRoaXMuZHJhd0xpbmUodGhpcy5zdGFydFgsIHRoaXMuc3RhcnRZLCBldmVudC5vZmZzZXRYLCBldmVudC5vZmZzZXRZKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ2ZyZWVoYW5kJykge1xuICAgICAgdGhpcy5jdHgubGluZVRvKGV2ZW50Lm9mZnNldFgsIGV2ZW50Lm9mZnNldFkpO1xuICAgICAgdGhpcy5jdHguc3Ryb2tlU3R5bGUgPSB0aGlzLmNvbG9yO1xuICAgICAgdGhpcy5jdHgubGluZVdpZHRoID0gdGhpcy5icnVzaFRoaWNrbmVzcztcbiAgICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xuICAgICAgdGhpcy5mcmVlaGFuZERyYXdpbmcucHVzaCh7XG4gICAgICAgIHg6IGV2ZW50Lm9mZnNldFgsXG4gICAgICAgIHk6IGV2ZW50Lm9mZnNldFksXG4gICAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgICB0aGlja25lc3M6IHRoaXMuYnJ1c2hUaGlja25lc3MsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ3NoYXBlJykge1xuICAgICAgdGhpcy5jdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuICAgICAgdGhpcy5kcmF3U2hhcGVzKCk7XG4gICAgICB0aGlzLmRyYXdTaGFwZSh0aGlzLnNoYXBlISwgdGhpcy5zdGFydFgsIHRoaXMuc3RhcnRZLCBldmVudC5vZmZzZXRYLCBldmVudC5vZmZzZXRZKTtcbiAgICB9XG4gIH1cblxuICBzdG9wRHJhd2luZygpIHtcbiAgICB0aGlzLmlzRHJhd2luZyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RyYXcnKSB7XG4gICAgICB0aGlzLnNoYXBlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICB4MTogdGhpcy5zdGFydFgsXG4gICAgICAgIHkxOiB0aGlzLnN0YXJ0WSxcbiAgICAgICAgeDI6IHRoaXMuY3VycmVudFgsXG4gICAgICAgIHkyOiB0aGlzLmN1cnJlbnRZLFxuICAgICAgICBjb2xvcjogdGhpcy5jb2xvcixcbiAgICAgICAgdGhpY2tuZXNzOiB0aGlzLmxpbmVUaGlja25lc3MsXG4gICAgICAgIGxpbmVUeXBlOiB0aGlzLmxpbmVUeXBlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdmcmVlaGFuZCcpIHtcbiAgICAgIHRoaXMuc2hhcGVzLnB1c2goe1xuICAgICAgICB0eXBlOiAnZnJlZWhhbmQnLFxuICAgICAgICBwb2ludHM6IHRoaXMuZnJlZWhhbmREcmF3aW5nLFxuICAgICAgICBjb2xvcjogdGhpcy5jb2xvcixcbiAgICAgICAgdGhpY2tuZXNzOiB0aGlzLmJydXNoVGhpY2tuZXNzLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmZyZWVoYW5kRHJhd2luZyA9IFtdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnc2hhcGUnKSB7XG4gICAgICB0aGlzLnNoYXBlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogdGhpcy5zaGFwZSEsXG4gICAgICAgIHgxOiB0aGlzLnN0YXJ0WCxcbiAgICAgICAgeTE6IHRoaXMuc3RhcnRZLFxuICAgICAgICB4MjogdGhpcy5jdXJyZW50WCxcbiAgICAgICAgeTI6IHRoaXMuY3VycmVudFksXG4gICAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgICB0aGlja25lc3M6IHRoaXMubGluZVRoaWNrbmVzcyxcbiAgICAgICAgbGluZVR5cGU6IHRoaXMubGluZVR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVtb3ZlU2hhcGUoKSwgMTUwMDApO1xuICB9XG5cbiAgZHJhd0xpbmUgPSAoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcikgPT4ge1xuICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpO1xuICAgIHRoaXMuY3R4LnN0cm9rZVN0eWxlID0gdGhpcy5jb2xvcjtcbiAgICB0aGlzLmN0eC5saW5lV2lkdGggPSB0aGlzLmxpbmVUaGlja25lc3M7XG4gICAgaWYgKHRoaXMubGluZVR5cGUgPT09ICdkYXNoZWQnKSB7XG4gICAgICB0aGlzLmN0eC5zZXRMaW5lRGFzaChbMTAsIDEwXSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxpbmVUeXBlID09PSAnZG90dGVkJykge1xuICAgICAgdGhpcy5jdHguc2V0TGluZURhc2goWzIsIDEwXSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxpbmVUeXBlID09PSAnZGFzaERvdCcpIHtcbiAgICAgIHRoaXMuY3R4LnNldExpbmVEYXNoKFsxMCwgNSwgMiwgNV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN0eC5zZXRMaW5lRGFzaChbXSk7XG4gICAgfVxuICAgIHRoaXMuY3R4Lm1vdmVUbyh4MSwgeTEpO1xuICAgIHRoaXMuY3R4LmxpbmVUbyh4MiwgeTIpO1xuICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xuICAgIHRoaXMuY3R4LnNldExpbmVEYXNoKFtdKTtcbiAgfTtcblxuICBkcmF3U2hhcGVzID0gKCkgPT4ge1xuICAgIHRoaXMuY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICB0aGlzLnNoYXBlcy5mb3JFYWNoKChzaGFwZSkgPT4ge1xuICAgICAgaWYgKHNoYXBlLnR5cGUgPT09ICdsaW5lJykge1xuICAgICAgICB0aGlzLmRyYXdMaW5lKHNoYXBlLngxLCBzaGFwZS55MSwgc2hhcGUueDIsIHNoYXBlLnkyKTtcbiAgICAgIH0gZWxzZSBpZiAoc2hhcGUudHlwZSA9PT0gJ2ZyZWVoYW5kJykge1xuICAgICAgICB0aGlzLmRyYXdGcmVlaGFuZChzaGFwZS5wb2ludHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kcmF3U2hhcGUoc2hhcGUudHlwZSwgc2hhcGUueDEsIHNoYXBlLnkxLCBzaGFwZS54Miwgc2hhcGUueTIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGRyYXdGcmVlaGFuZCA9IChwb2ludHM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IGNvbG9yOiBzdHJpbmc7IHRoaWNrbmVzczogbnVtYmVyIH1bXSkgPT4ge1xuICAgIGlmIChwb2ludHMubGVuZ3RoIDwgMikgcmV0dXJuO1xuICAgIHRoaXMuY3R4LnN0cm9rZVN0eWxlID0gdGhpcy5jb2xvcjtcbiAgICB0aGlzLmN0eC5saW5lV2lkdGggPSB0aGlzLmJydXNoVGhpY2tuZXNzO1xuICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpO1xuICAgIHRoaXMuY3R4Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmN0eC5saW5lVG8ocG9pbnRzW2ldLngsIHBvaW50c1tpXS55KTtcbiAgICB9XG4gICAgdGhpcy5jdHguc3Ryb2tlKCk7XG4gIH07XG5cbiAgZHJhd1NoYXBlID0gKHR5cGU6IHN0cmluZywgeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcikgPT4ge1xuICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpO1xuICAgIHRoaXMuY3R4LnN0cm9rZVN0eWxlID0gdGhpcy5jb2xvcjtcbiAgICB0aGlzLmN0eC5saW5lV2lkdGggPSB0aGlzLmxpbmVUaGlja25lc3M7XG4gICAgaWYgKHRoaXMubGluZVR5cGUgPT09ICdkYXNoZWQnKSB7XG4gICAgICB0aGlzLmN0eC5zZXRMaW5lRGFzaChbMTAsIDEwXSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxpbmVUeXBlID09PSAnZG90dGVkJykge1xuICAgICAgdGhpcy5jdHguc2V0TGluZURhc2goWzIsIDEwXSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxpbmVUeXBlID09PSAnZGFzaERvdCcpIHtcbiAgICAgIHRoaXMuY3R4LnNldExpbmVEYXNoKFsxMCwgNSwgMiwgNV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN0eC5zZXRMaW5lRGFzaChbXSk7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAncmVjdGFuZ2xlJykge1xuICAgICAgdGhpcy5jdHguc3Ryb2tlUmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NpcmNsZScpIHtcbiAgICAgIGNvbnN0IHJhZGl1cyA9IE1hdGguc3FydChNYXRoLnBvdyh4MiAtIHgxLCAyKSArIE1hdGgucG93KHkyIC0geTEsIDIpKTtcbiAgICAgIHRoaXMuY3R4LmFyYyh4MSwgeTEsIHJhZGl1cywgMCwgMiAqIE1hdGguUEkpO1xuICAgICAgdGhpcy5jdHguc3Ryb2tlKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncmhvbWJ1cycpIHtcbiAgICAgIGNvbnN0IGNlbnRlclggPSAoeDEgKyB4MikgLyAyO1xuICAgICAgY29uc3QgY2VudGVyWSA9ICh5MSArIHkyKSAvIDI7XG4gICAgICB0aGlzLmN0eC5tb3ZlVG8oY2VudGVyWCwgeTEpO1xuICAgICAgdGhpcy5jdHgubGluZVRvKHgyLCBjZW50ZXJZKTtcbiAgICAgIHRoaXMuY3R4LmxpbmVUbyhjZW50ZXJYLCB5Mik7XG4gICAgICB0aGlzLmN0eC5saW5lVG8oeDEsIGNlbnRlclkpO1xuICAgICAgdGhpcy5jdHguY2xvc2VQYXRoKCk7XG4gICAgICB0aGlzLmN0eC5zdHJva2UoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwZW50YWdvbicpIHtcbiAgICAgIHRoaXMuZHJhd1BvbHlnb24oNSwgeDEsIHkxLCB4MiwgeTIpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2hleGFnb24nKSB7XG4gICAgICB0aGlzLmRyYXdQb2x5Z29uKDYsIHgxLCB5MSwgeDIsIHkyKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0cmlhbmdsZScpIHtcbiAgICAgIGNvbnN0IGNlbnRlclhUcmlhbmdsZSA9ICh4MSArIHgyKSAvIDI7XG4gICAgICB0aGlzLmN0eC5tb3ZlVG8oY2VudGVyWFRyaWFuZ2xlLCB5MSk7XG4gICAgICB0aGlzLmN0eC5saW5lVG8oeDIsIHkyKTtcbiAgICAgIHRoaXMuY3R4LmxpbmVUbyh4MSwgeTIpO1xuICAgICAgdGhpcy5jdHguY2xvc2VQYXRoKCk7XG4gICAgICB0aGlzLmN0eC5zdHJva2UoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzcXVhcmUnKSB7XG4gICAgICB0aGlzLmN0eC5zdHJva2VSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeDIgLSB4MSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2N0YWdvbicpIHtcbiAgICAgIHRoaXMuZHJhd1BvbHlnb24oOCwgeDEsIHkxLCB4MiwgeTIpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ292YWwnKSB7XG4gICAgICBjb25zdCByYWRpdXNYID0gTWF0aC5hYnMoeDIgLSB4MSkgLyAyO1xuICAgICAgY29uc3QgcmFkaXVzWSA9IE1hdGguYWJzKHkyIC0geTEpIC8gMjtcbiAgICAgIGNvbnN0IGNlbnRlclggPSAoeDEgKyB4MikgLyAyO1xuICAgICAgY29uc3QgY2VudGVyWSA9ICh5MSArIHkyKSAvIDI7XG4gICAgICB0aGlzLmN0eC5lbGxpcHNlKGNlbnRlclgsIGNlbnRlclksIHJhZGl1c1gsIHJhZGl1c1ksIDAsIDAsIDIgKiBNYXRoLlBJKTtcbiAgICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3BhcmFsbGVsb2dyYW0nKSB7XG4gICAgICBjb25zdCBjZW50ZXJYID0gKHgxICsgeDIpIC8gMjtcbiAgICAgIHRoaXMuY3R4Lm1vdmVUbyhjZW50ZXJYLCB5MSk7XG4gICAgICB0aGlzLmN0eC5saW5lVG8oeDIsIHkyKTtcbiAgICAgIHRoaXMuY3R4LmxpbmVUbyhjZW50ZXJYLCB5Mik7XG4gICAgICB0aGlzLmN0eC5saW5lVG8oeDEsIHkxKTtcbiAgICAgIHRoaXMuY3R4LmNsb3NlUGF0aCgpO1xuICAgICAgdGhpcy5jdHguc3Ryb2tlKCk7XG4gICAgfVxuICAgIHRoaXMuY3R4LnNldExpbmVEYXNoKFtdKTtcbiAgfTtcblxuICBkcmF3UG9seWdvbiA9IChzaWRlczogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY2VudGVyWCA9ICh4MSArIHgyKSAvIDI7XG4gICAgY29uc3QgY2VudGVyWSA9ICh5MSArIHkyKSAvIDI7XG4gICAgY29uc3QgcmFkaXVzID0gTWF0aC5taW4oTWF0aC5hYnMoeDIgLSB4MSksIE1hdGguYWJzKHkyIC0geTEpKSAvIDI7XG4gICAgY29uc3QgYW5nbGUgPSAoMiAqIE1hdGguUEkpIC8gc2lkZXM7XG4gICAgdGhpcy5jdHguYmVnaW5QYXRoKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWRlczsgaSsrKSB7XG4gICAgICBjb25zdCB4ID0gY2VudGVyWCArIHJhZGl1cyAqIE1hdGguY29zKGkgKiBhbmdsZSAtIE1hdGguUEkgLyAyKTtcbiAgICAgIGNvbnN0IHkgPSBjZW50ZXJZICsgcmFkaXVzICogTWF0aC5zaW4oaSAqIGFuZ2xlIC0gTWF0aC5QSSAvIDIpO1xuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgdGhpcy5jdHgubW92ZVRvKHgsIHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jdHgubGluZVRvKHgsIHkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmN0eC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLmN0eC5zdHJva2UoKTtcbiAgfTtcblxuICByZW1vdmVTaGFwZSA9ICgpID0+IHtcbiAgICB0aGlzLnNoYXBlcy5zaGlmdCgpO1xuICAgIHRoaXMuZHJhd1NoYXBlcygpO1xuICB9O1xuXG4gIGVyYXNlID0gKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiB7XG4gICAgdGhpcy5jdHguc2F2ZSgpO1xuICAgIHRoaXMuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdXQnO1xuICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpO1xuICAgIHRoaXMuY3R4LmFyYyh4LCB5LCB0aGlzLmVyYXNlclRoaWNrbmVzcyAvIDIsIDAsIE1hdGguUEkgKiAyLCBmYWxzZSk7XG4gICAgdGhpcy5jdHguZmlsbCgpO1xuICAgIHRoaXMuY3R4LnJlc3RvcmUoKTtcblxuICAgIHRoaXMuc2hhcGVzID0gdGhpcy5zaGFwZXNcbiAgICAgIC5tYXAoKHNoYXBlKSA9PiB7XG4gICAgICAgIGlmIChzaGFwZS50eXBlID09PSAnZnJlZWhhbmQnKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnNoYXBlLFxuICAgICAgICAgICAgcG9pbnRzOiBzaGFwZS5wb2ludHMuZmlsdGVyKChwb2ludDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KE1hdGgucG93KHBvaW50LnggLSB4LCAyKSArIE1hdGgucG93KHBvaW50LnkgLSB5LCAyKSk7XG4gICAgICAgICAgICAgIHJldHVybiBkaXN0YW5jZSA+IHRoaXMuZXJhc2VyVGhpY2tuZXNzIC8gMjtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoc2hhcGUudHlwZSA9PT0gJ2xpbmUnKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc1BvaW50TmVhckxpbmUoXG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHksXG4gICAgICAgICAgICAgIHNoYXBlLngxLFxuICAgICAgICAgICAgICBzaGFwZS55MSxcbiAgICAgICAgICAgICAgc2hhcGUueDIsXG4gICAgICAgICAgICAgIHNoYXBlLnkyLFxuICAgICAgICAgICAgICB0aGlzLmVyYXNlclRoaWNrbmVzcyAvIDIsXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2hhcGUudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgY29uc3QgdGV4dFdpZHRoID0gdGhpcy5jdHgubWVhc3VyZVRleHQoc2hhcGUudGV4dCkud2lkdGg7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgeCA+IHNoYXBlLnggJiZcbiAgICAgICAgICAgIHggPCBzaGFwZS54ICsgdGV4dFdpZHRoICYmXG4gICAgICAgICAgICB5ID4gc2hhcGUueSAtIHNoYXBlLmZvbnRTaXplICYmXG4gICAgICAgICAgICB5IDwgc2hhcGUueVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh4ID4gc2hhcGUueDEgJiYgeCA8IHNoYXBlLngyICYmIHkgPiBzaGFwZS55MSAmJiB5IDwgc2hhcGUueTIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoc2hhcGUpID0+IHNoYXBlICYmIChzaGFwZS50eXBlICE9PSAnZnJlZWhhbmQnIHx8IHNoYXBlLnBvaW50cy5sZW5ndGggPiAwKSk7XG4gIH07XG5cbiAgaXNQb2ludE5lYXJMaW5lKFxuICAgIHB4OiBudW1iZXIsXG4gICAgcHk6IG51bWJlcixcbiAgICB4MTogbnVtYmVyLFxuICAgIHkxOiBudW1iZXIsXG4gICAgeDI6IG51bWJlcixcbiAgICB5MjogbnVtYmVyLFxuICAgIHRocmVzaG9sZDogbnVtYmVyLFxuICApOiBib29sZWFuIHtcbiAgICBjb25zdCBkeCA9IHgyIC0geDE7XG4gICAgY29uc3QgZHkgPSB5MiAtIHkxO1xuICAgIGNvbnN0IGxlbmd0aCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gICAgY29uc3QgZG90ID0gKChweCAtIHgxKSAqIGR4ICsgKHB5IC0geTEpICogZHkpIC8gKGxlbmd0aCAqIGxlbmd0aCk7XG4gICAgY29uc3QgY2xvc2VzdFggPSB4MSArIGRvdCAqIGR4O1xuICAgIGNvbnN0IGNsb3Nlc3RZID0geTEgKyBkb3QgKiBkeTtcbiAgICBjb25zdCBkaXN0YW5jZSA9IE1hdGguc3FydChNYXRoLnBvdyhweCAtIGNsb3Nlc3RYLCAyKSArIE1hdGgucG93KHB5IC0gY2xvc2VzdFksIDIpKTtcbiAgICByZXR1cm4gZGlzdGFuY2UgPD0gdGhyZXNob2xkO1xuICB9XG5cbiAgdG9nZ2xlVG9vbGJhciA9ICgpID0+IHtcbiAgICB0aGlzLnRvb2xiYXJWaXNpYmxlID0gIXRoaXMudG9vbGJhclZpc2libGU7XG4gIH07XG5cbiAgdG9nZ2xlQW5ub3RhdGUgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYW5ub3RhdGVTY3JlZW5TdHJlYW0gPSB0aGlzLnBhcmFtZXRlcnMuYW5ub3RhdGVTY3JlZW5TdHJlYW07XG4gICAgdGhpcy5wYXJhbWV0ZXJzLmFubm90YXRlU2NyZWVuU3RyZWFtID0gIWFubm90YXRlU2NyZWVuU3RyZWFtO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlQW5ub3RhdGVTY3JlZW5TdHJlYW0oIWFubm90YXRlU2NyZWVuU3RyZWFtKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzLmFubm90YXRlU2NyZWVuU3RyZWFtKSB7XG4gICAgICB0aGlzLnRvb2xiYXJWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMucGFyYW1ldGVycy5zaG93QWxlcnQ/Lih7XG4gICAgICAgIG1lc3NhZ2U6IGBZb3UgY2FuIG5vdyBhbm5vdGF0ZSB0aGUgc2NyZWVuLiBJZiB5b3UgY2Fubm90IHNlZSB5b3VyIGFubm90YXRpb24gY29udHJvbHMgKG9uIHRvcCksIHRyeSBtaW5pbWl6aW5nIHlvdXIgc2NyZWVuIGJ5IHVzaW5nICdDbWQnICsgJy0nIChvbiBNYWMpIG9yICdDdHJsJyArICctJyAob24gV2luZG93cykuYCxcbiAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICBkdXJhdGlvbjogOTAwMCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRvb2xiYXJWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZUlzU2NyZWVuYm9hcmRNb2RhbFZpc2libGUodHJ1ZSk7XG4gICAgYXdhaXQgdGhpcy5wYXJhbWV0ZXJzLnNsZWVwKHsgbXM6IDUwMCB9KTtcbiAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlSXNTY3JlZW5ib2FyZE1vZGFsVmlzaWJsZShmYWxzZSk7XG4gIH07XG59XG4iLCI8ZGl2IGlkPVwic2NyZWVuYm9hcmQtaW50ZXJmYWNlXCIgKm5nSWY9XCJzaG93QXNwZWN0XCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGJsb2NrOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IHotaW5kZXg6IDEwMDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IG1heC13aWR0aDogMTAwJTsgbWF4LWhlaWdodDogMTAwJTsgb3ZlcmZsb3c6IGF1dG87XCIgI3NjcmVlbmJvYXJkUmVmPlxyXG4gIDxkaXYgaWQ9XCJzY3JlZW5ib2FyZENvbnRlbnRcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IG92ZXJmbG93OiBoaWRkZW47IHRvcDogMDsgbGVmdDogMDtcIiAjc2NyZWVuYm9hcmRDb250ZW50UmVmPlxyXG4gICAgPGJ1dHRvbiBpZD1cImFubm90YXRlU2NyZWVuXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuQm9hcmRTY3JlZW4gYW5ub3RhdGVTY3JlZW5CdG5cIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1cHg7IHJpZ2h0OiAxMHB4OyB6LWluZGV4OiAxMDAwO1wiIChjbGljayk9XCJ0b2dnbGVBbm5vdGF0ZSgpXCI+XHJcbiAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhUGVuY2lsQWx0XCIgW25nU3R5bGVdPVwieydjb2xvcic6IHBhcmFtZXRlcnMuYW5ub3RhdGVTY3JlZW5TdHJlYW0gPyAncmVkJyA6ICdncmVlbid9XCI+PC9mYS1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBpZD1cInRvb2xiYXJUb2dnbGVTY3JlZW5cIiAqbmdJZj1cInBhcmFtZXRlcnMuYW5ub3RhdGVTY3JlZW5TdHJlYW1cIiBjbGFzcz1cImJ0biBidG5Cb2FyZFNjcmVlbiBidG4tcHJpbWFyeVwiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDVweDsgcmlnaHQ6IDU1cHg7IHotaW5kZXg6IDEwMDA7XCIgKGNsaWNrKT1cInRvZ2dsZVRvb2xiYXIoKVwiPlxyXG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJ0b29sYmFyVmlzaWJsZSA/IGZhQ2hldnJvblJpZ2h0IDogZmFDaGV2cm9uTGVmdFwiPjwvZmEtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyU2NyZWVuIG1iLTNcIiBpZD1cInRvb2xiYXJTY3JlZW5cIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1cHg7IHJpZ2h0OiAxMDVweDsgei1pbmRleDogMTAwMDsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XCIgW3N0eWxlLmRpc3BsYXldPVwidG9vbGJhclZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnXCI+XHJcbiAgICAgIDwhLS0gRHJhdyBNb2RlIERyb3Bkb3duIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG5Cb2FyZFNjcmVlbiBidG4tc2Vjb25kYXJ5IGRyb3Bkb3duLXRvZ2dsZVwiIGlkPVwiZHJhd01vZGVTY3JlZW5cIiAoY2xpY2spPVwiaGFuZGxlRHJvcGRvd25DbGljaygnZHJhd01vZGVTY3JlZW4nKVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFQZW5jaWxBbHRcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRyb3Bkb3duT3BlbiA9PT0gJ2RyYXdNb2RlU2NyZWVuJ1wiIGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXREcmF3TW9kZSgzKVwiPlhYLVNtYWxsICgzcHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXREcmF3TW9kZSg2KVwiPlgtU21hbGwgKDZweCk8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldERyYXdNb2RlKDEyKVwiPlNtYWxsICgxMnB4KTwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0RHJhd01vZGUoMTgpXCI+TWVkaXVtICgxOHB4KTwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0RHJhd01vZGUoMjQpXCI+TGFyZ2UgKDI0cHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXREcmF3TW9kZSgzNilcIj5YLUxhcmdlICgzNnB4KTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gRnJlZWhhbmQgTW9kZSBEcm9wZG93biAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuQm9hcmRTY3JlZW4gYnRuLWRhcmsgZHJvcGRvd24tdG9nZ2xlXCIgaWQ9XCJmcmVlaGFuZE1vZGVTY3JlZW5cIiAoY2xpY2spPVwiaGFuZGxlRHJvcGRvd25DbGljaygnZnJlZWhhbmRNb2RlU2NyZWVuJylcIj5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhUGFpbnRCcnVzaFwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJvcGRvd25PcGVuID09PSAnZnJlZWhhbmRNb2RlU2NyZWVuJ1wiIGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRGcmVlaGFuZE1vZGUoNSlcIj5YLVNtYWxsICg1cHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRGcmVlaGFuZE1vZGUoMTApXCI+U21hbGwgKDEwcHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRGcmVlaGFuZE1vZGUoMjApXCI+TWVkaXVtICgyMHB4KTwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0RnJlZWhhbmRNb2RlKDQwKVwiPkxhcmdlICg0MHB4KTwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0RnJlZWhhbmRNb2RlKDYwKVwiPlgtTGFyZ2UgKDYwcHgpPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTaGFwZSBNb2RlIERyb3Bkb3duIHdpdGggSW1hZ2VzIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG5Cb2FyZFNjcmVlbiBidG4tZGFyayBkcm9wZG93bi10b2dnbGVcIiBpZD1cInNoYXBlTW9kZVNjcmVlblwiIChjbGljayk9XCJoYW5kbGVEcm9wZG93bkNsaWNrKCdzaGFwZU1vZGVTY3JlZW4nKVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFTaGFwZXNcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRyb3Bkb3duT3BlbiA9PT0gJ3NoYXBlTW9kZVNjcmVlbidcIiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hvd1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0U2hhcGVNb2RlKCdzcXVhcmUnKVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vbWVkaWFzZnUuY29tL2ltYWdlcy9zdmcvc3F1YXJlLnN2Z1wiIGFsdD1cIlNxdWFyZVwiIGNsYXNzPVwic2hhcGUtaWNvblwiIC8+IFNxdWFyZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRTaGFwZU1vZGUoJ3JlY3RhbmdsZScpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9tZWRpYXNmdS5jb20vaW1hZ2VzL3N2Zy9yZWN0YW5nbGUuc3ZnXCIgYWx0PVwiUmVjdGFuZ2xlXCIgY2xhc3M9XCJzaGFwZS1pY29uXCIgLz4gUmVjdGFuZ2xlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldFNoYXBlTW9kZSgnY2lyY2xlJylcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL21lZGlhc2Z1LmNvbS9pbWFnZXMvc3ZnL2NpcmNsZS5zdmdcIiBhbHQ9XCJDaXJjbGVcIiBjbGFzcz1cInNoYXBlLWljb25cIiAvPiBDaXJjbGVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0U2hhcGVNb2RlKCd0cmlhbmdsZScpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9tZWRpYXNmdS5jb20vaW1hZ2VzL3N2Zy90cmlhbmdsZS5zdmdcIiBhbHQ9XCJUcmlhbmdsZVwiIGNsYXNzPVwic2hhcGUtaWNvblwiIC8+IFRyaWFuZ2xlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldFNoYXBlTW9kZSgnaGV4YWdvbicpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9tZWRpYXNmdS5jb20vaW1hZ2VzL3N2Zy9oZXhhZ29uLnN2Z1wiIGFsdD1cIkhleGFnb25cIiBjbGFzcz1cInNoYXBlLWljb25cIiAvPiBIZXhhZ29uXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNldFNoYXBlTW9kZSgncGVudGFnb24nKVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vbWVkaWFzZnUuY29tL2ltYWdlcy9zdmcvcGVudGFnb24uc3ZnXCIgYWx0PVwiUGVudGFnb25cIiBjbGFzcz1cInNoYXBlLWljb25cIiAvPiBQZW50YWdvblxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRTaGFwZU1vZGUoJ3Job21idXMnKVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vbWVkaWFzZnUuY29tL2ltYWdlcy9zdmcvcmhvbWJ1cy5zdmdcIiBhbHQ9XCJSaG9tYnVzXCIgY2xhc3M9XCJzaGFwZS1pY29uXCIgLz4gUmhvbWJ1c1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRTaGFwZU1vZGUoJ29jdGFnb24nKVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vbWVkaWFzZnUuY29tL2ltYWdlcy9zdmcvb2N0YWdvbi5zdmdcIiBhbHQ9XCJPY3RhZ29uXCIgY2xhc3M9XCJzaGFwZS1pY29uXCIgLz4gT2N0YWdvblxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRTaGFwZU1vZGUoJ292YWwnKVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vbWVkaWFzZnUuY29tL2ltYWdlcy9zdmcvb3ZhbC5zdmdcIiBhbHQ9XCJPdmFsXCIgY2xhc3M9XCJzaGFwZS1pY29uXCIgLz4gT3ZhbFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRTaGFwZU1vZGUoJ3BhcmFsbGVsb2dyYW0nKVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vbWVkaWFzZnUuY29tL2ltYWdlcy9zdmcvcGFyYWxsZWxvZ3JhbS5zdmdcIiBhbHQ9XCJQYXJhbGxlbG9ncmFtXCIgY2xhc3M9XCJzaGFwZS1pY29uXCIgLz4gUGFyYWxsZWxvZ3JhbVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBFcmFzZSBNb2RlIERyb3Bkb3duIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG5Cb2FyZFNjcmVlbiBidG4tZGFuZ2VyIGRyb3Bkb3duLXRvZ2dsZVwiIGlkPVwiZXJhc2VNb2RlU2NyZWVuXCIgKGNsaWNrKT1cImhhbmRsZURyb3Bkb3duQ2xpY2soJ2VyYXNlTW9kZVNjcmVlbicpXCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYUVyYXNlclwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJvcGRvd25PcGVuID09PSAnZXJhc2VNb2RlU2NyZWVuJ1wiIGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRFcmFzZU1vZGUoNSlcIj5YLVNtYWxsICg1cHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRFcmFzZU1vZGUoMTApXCI+U21hbGwgKDEwcHgpPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZXRFcmFzZU1vZGUoMjApXCI+TWVkaXVtICgyMHB4KTwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0RXJhc2VNb2RlKDMwKVwiPkxhcmdlICgzMHB4KTwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2V0RXJhc2VNb2RlKDYwKVwiPlgtTGFyZ2UgKDYwcHgpPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBBZGRpdGlvbmFsIFRvb2xiYXIgQ29udHJvbHMgLS0+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuQm9hcmQgYnRuLXN1Y2Nlc3NcIiBpZD1cInpvb21SZXNldFNjcmVlblwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cclxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVNlYXJjaFwiPjwvZmEtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgY2xhc3M9XCJidG5cIiBpZD1cImNvbG9yUGlja2VyU2NyZWVuXCIgWyhuZ01vZGVsKV09XCJjb2xvclwiPlxyXG4gICAgICA8c2VsZWN0IGlkPVwibGluZVR5cGVQaWNrZXJTY3JlZW5cIiBjbGFzcz1cImN1c3RvbS1zZWxlY3RcIiBzdHlsZT1cIndpZHRoOiBhdXRvO1wiIFsobmdNb2RlbCldPVwibGluZVR5cGVcIj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic29saWRcIj5Tb2xpZDwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJkYXNoZWRcIj5EYXNoZWQ8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG90dGVkXCI+RG90dGVkPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRhc2hEb3RcIj5EYXNoLURvdDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxjYW52YXMgaWQ9XCJjYW52YXNSZWZcIiB3aWR0aD1cIjEyODBcIiBoZWlnaHQ9XCI3MjBcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBwYXJhbWV0ZXJzLmFubm90YXRlU2NyZWVuU3RyZWFtID8gJ2Jsb2NrJyA6ICdub25lJ31cIiBzdHlsZT1cInBhZGRpbmc6IDA7IG1hcmdpbjogMDtcIiAjY2FudmFzUmVmPjwvY2FudmFzPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -50,6 +50,17 @@ import * as i2 from "@fortawesome/angular-fontawesome";
50
50
  * @method handleScreenTransport - Method to handle screen transport logic.
51
51
  * @method stopAnnotation - Method to stop the screen annotation.
52
52
  * @method stopAllTracks - Method to stop all media tracks.
53
+ * @returns {HTMLElement} The screenboard modal component.
54
+ * @example
55
+ * ```html
56
+ * <app-screenboard-modal
57
+ * [parameters]="screenboardModalParams"
58
+ * [isVisible]="isModalVisible"
59
+ * [onClose]="closeModal"
60
+ * [position]="'topRight'"
61
+ * [backgroundColor]="'#83c0e9'">
62
+ * </app-screenboard-modal>
63
+ * ```
53
64
  */
54
65
  export class ScreenboardModal {
55
66
  parameters = {};
@@ -377,4 +388,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
377
388
  type: ViewChild,
378
389
  args: ['screenCanvas']
379
390
  }] } });
380
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuYm9hcmQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2NyZWVuYm9hcmQtY29tcG9uZW50cy9zY3JlZW5ib2FyZC1tb2RhbC9zY3JlZW5ib2FyZC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zY3JlZW5ib2FyZC1jb21wb25lbnRzL3NjcmVlbmJvYXJkLW1vZGFsL3NjcmVlbmJvYXJkLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxTQUFTLEdBS1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUEwRDVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkNHO0FBUUgsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixVQUFVLEdBQStCLEVBQWdDLENBQUM7SUFDMUUsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixPQUFPLENBQWM7SUFDckIsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUN0QixlQUFlLEdBQUcsU0FBUyxDQUFDO0lBRVgsY0FBYyxDQUFnQztJQUM3QyxlQUFlLENBQWlDO0lBRTNFLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFFVixr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RSxpQkFBaUIsQ0FBQzs4QkFHOUMsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRW9CLGNBQWM7c0JBQXZDLFNBQVM7dUJBQUMsYUFBYTtnQkFDRyxlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYVRpbWVzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IFByb2R1Y2VyIH0gZnJvbSAnbWVkaWFzb3VwLWNsaWVudC9saWIvdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW5UeXBlLFxuICBDcmVhdGVTZW5kVHJhbnNwb3J0VHlwZSxcbiAgRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW5UeXBlLFxuICBQcmVwb3B1bGF0ZVVzZXJNZWRpYVR5cGUsXG4gIFN0b3BTaGFyZVNjcmVlblR5cGUsXG4gIFNsZWVwVHlwZSxcbiAgQ29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW5QYXJhbWV0ZXJzLFxuICBDcmVhdGVTZW5kVHJhbnNwb3J0UGFyYW1ldGVycyxcbiAgRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW5QYXJhbWV0ZXJzLFxuICBQcmVwb3B1bGF0ZVVzZXJNZWRpYVBhcmFtZXRlcnMsXG4gIFN0b3BTaGFyZVNjcmVlblBhcmFtZXRlcnMsXG59IGZyb20gJy4uLy4uLy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyZWVuYm9hcmRNb2RhbFBhcmFtZXRlcnNcbiAgZXh0ZW5kcyBDb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblBhcmFtZXRlcnMsXG4gICAgQ3JlYXRlU2VuZFRyYW5zcG9ydFBhcmFtZXRlcnMsXG4gICAgRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW5QYXJhbWV0ZXJzLFxuICAgIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgICBTdG9wU2hhcmVTY3JlZW5QYXJhbWV0ZXJzIHtcbiAgbG9jYWxTdHJlYW1TY3JlZW46IE1lZGlhU3RyZWFtIHwgbnVsbDtcbiAgc2hhcmVkOiBib29sZWFuO1xuICBob3N0TGFiZWw6IHN0cmluZztcbiAgYW5ub3RhdGVTY3JlZW5TdHJlYW06IGJvb2xlYW47XG4gIHByb2Nlc3NlZFNjcmVlblN0cmVhbTogTWVkaWFTdHJlYW0gfCBudWxsO1xuICBtYWluU2NyZWVuQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGw7XG4gIGNhbnZhc1NjcmVlbmJvYXJkOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGw7XG4gIHRyYW5zcG9ydENyZWF0ZWQ6IGJvb2xlYW47XG4gIHNjcmVlblByb2R1Y2VyOiBQcm9kdWNlciB8IG51bGw7XG5cbiAgdXBkYXRlTG9jYWxTdHJlYW1TY3JlZW46IChzdHJlYW06IE1lZGlhU3RyZWFtIHwgbnVsbCkgPT4gdm9pZDtcbiAgdXBkYXRlUHJvY2Vzc2VkU2NyZWVuU3RyZWFtOiAoc3RyZWFtOiBNZWRpYVN0cmVhbSB8IG51bGwpID0+IHZvaWQ7XG4gIHVwZGF0ZU1haW5TY3JlZW5DYW52YXM6IChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCkgPT4gdm9pZDtcblxuICAvLyBtZWRpYXNmdSBmdW5jdGlvbnNcbiAgc2xlZXA6IFNsZWVwVHlwZTtcbiAgY3JlYXRlU2VuZFRyYW5zcG9ydDogQ3JlYXRlU2VuZFRyYW5zcG9ydFR5cGU7XG4gIGRpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuOiBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblR5cGU7XG4gIGNvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuOiBDb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblR5cGU7XG4gIHN0b3BTaGFyZVNjcmVlbjogU3RvcFNoYXJlU2NyZWVuVHlwZTtcbiAgcHJlcG9wdWxhdGVVc2VyTWVkaWE6IFByZXBvcHVsYXRlVXNlck1lZGlhVHlwZTtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBTY3JlZW5ib2FyZE1vZGFsUGFyYW1ldGVycztcbiAgLy8gW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbmJvYXJkTW9kYWxPcHRpb25zIHtcbiAgcGFyYW1ldGVyczogU2NyZWVuYm9hcmRNb2RhbFBhcmFtZXRlcnM7XG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcbiAgb25DbG9zZTogKCkgPT4gdm9pZDtcbiAgcG9zaXRpb246IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFNjcmVlbmJvYXJkTW9kYWxUeXBlID0gKG9wdGlvbnM6IFNjcmVlbmJvYXJkTW9kYWxPcHRpb25zKSA9PiBIVE1MRWxlbWVudDtcblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IFNjcmVlbmJvYXJkTW9kYWwgY29tcG9uZW50IGZvciBoYW5kbGluZyBzY3JlZW4gYW5ub3RhdGlvbiBhbmQgbW9kYWwgdmlzaWJpbGl0eS5cbiAqXG4gKiBAY29tcG9uZW50XG4gKiBAc2VsZWN0b3IgYXBwLXNjcmVlbmJvYXJkLW1vZGFsXG4gKiBAc3RhbmRhbG9uZSB0cnVlXG4gKiBAdGVtcGxhdGVVcmwgLi9zY3JlZW5ib2FyZC1tb2RhbC5jb21wb25lbnQuaHRtbFxuICogQHN0eWxlVXJscyAuL3NjcmVlbmJvYXJkLW1vZGFsLmNvbXBvbmVudC5jc3NcbiAqIEBpbXBvcnRzIENvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEZvbnRBd2Vzb21lTW9kdWxlXG4gKlxuICogQGNsYXNzIFNjcmVlbmJvYXJkTW9kYWxcbiAqIEBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgc2NyZWVuIGFubm90YXRpb24gbW9kYWwsIGluY2x1ZGluZyBzaG93aW5nIGFuZCBoaWRpbmcgdGhlIG1vZGFsLFxuICogaGFuZGxpbmcgc2NyZWVuIGFubm90YXRpb25zLCBhbmQgbWFuYWdpbmcgbWVkaWEgc3RyZWFtcy5cbiAqXG4gKiBAcHJvcGVydHkge1NjcmVlbmJvYXJkTW9kYWxQYXJhbWV0ZXJzfSBwYXJhbWV0ZXJzIC0gSW5wdXQgcGFyYW1ldGVyIGZvciBzY3JlZW4gYW5ub3RhdGlvbiBtb2RhbC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNWaXNpYmxlIC0gSW5wdXQgZmxhZyB0byBjb250cm9sIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBtb2RhbC5cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gb25DbG9zZSAtIElucHV0IGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBtb2RhbCBpcyBjbG9zZWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcG9zaXRpb24gLSBJbnB1dCBzdHJpbmcgdG8gc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbW9kYWwuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYmFja2dyb3VuZENvbG9yIC0gSW5wdXQgc3RyaW5nIHRvIHNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgbW9kYWwuXG4gKlxuICogQHByb3BlcnR5IHtFbGVtZW50UmVmPEhUTUxWaWRlb0VsZW1lbnQ+fSBzY3JlZW5WaWRlb1JlZiAtIFZpZXdDaGlsZCByZWZlcmVuY2UgdG8gdGhlIHNjcmVlbiB2aWRlbyBlbGVtZW50LlxuICogQHByb3BlcnR5IHtFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50Pn0gc2NyZWVuQ2FudmFzUmVmIC0gVmlld0NoaWxkIHJlZmVyZW5jZSB0byB0aGUgc2NyZWVuIGNhbnZhcyBlbGVtZW50LlxuICpcbiAqIEBwcm9wZXJ0eSB7SWNvbkRlZmluaXRpb259IGZhVGltZXMgLSBGb250QXdlc29tZSBpY29uIGZvciB0aGUgY2xvc2UgYnV0dG9uLlxuICpcbiAqIEBwcm9wZXJ0eSB7YW55fSBhbm5vdGF0aW9uSW50ZXJ2YWwgLSBJbnRlcnZhbCBmb3IgYW5ub3RhdGlvbiB1cGRhdGVzLlxuICogQHByb3BlcnR5IHthbnl9IGFubm90YXRpb25DaGVja0ludGVydmFsIC0gSW50ZXJ2YWwgZm9yIGNoZWNraW5nIGFubm90YXRpb24gdXBkYXRlcy5cbiAqIEBwcm9wZXJ0eSB7TWVkaWFTdHJlYW0gfCBudWxsfSBjbG9uZWRTdHJlYW1TY3JlZW4gLSBDbG9uZWQgbWVkaWEgc3RyZWFtIGZvciBzY3JlZW4gc2hhcmluZy5cbiAqIEBwcm9wZXJ0eSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHwgbnVsbH0gY3R4IC0gQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICpcbiAqIEBtZXRob2QgbmdPbkluaXQgLSBJbml0aWFsaXphdGlvbiBsb2dpYyB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgdmlldy5cbiAqIEBtZXRob2QgbmdPbkRlc3Ryb3kgLSBDbGVhbnVwIGxvZ2ljIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gKiBAbWV0aG9kIG5nT25DaGFuZ2VzIC0gTG9naWMgdG8gaGFuZGxlIGNoYW5nZXMgaW4gaW5wdXQgcHJvcGVydGllcy5cbiAqIEBtZXRob2QgbmdBZnRlclZpZXdJbml0IC0gTG9naWMgdGhhdCByZXF1aXJlcyB2aWV3IGFjY2Vzcy5cbiAqIEBtZXRob2Qgc2hvd01vZGFsIC0gTWV0aG9kIHRvIHNob3cgdGhlIG1vZGFsIGFuZCBoYW5kbGUgc2NyZWVuIGFubm90YXRpb24gc2V0dXAuXG4gKiBAbWV0aG9kIGhpZGVNb2RhbCAtIE1ldGhvZCB0byBoaWRlIHRoZSBtb2RhbCBhbmQgY2xlYW51cCBzY3JlZW4gYW5ub3RhdGlvbi5cbiAqIEBtZXRob2QgYW5ub3RhdGF0aW9uUHJldmlldyAtIE1ldGhvZCB0byBoYW5kbGUgdGhlIHByZXZpZXcgb2Ygc2NyZWVuIGFubm90YXRpb25zLlxuICogQG1ldGhvZCBoYW5kbGVTY3JlZW5UcmFuc3BvcnQgLSBNZXRob2QgdG8gaGFuZGxlIHNjcmVlbiB0cmFuc3BvcnQgbG9naWMuXG4gKiBAbWV0aG9kIHN0b3BBbm5vdGF0aW9uIC0gTWV0aG9kIHRvIHN0b3AgdGhlIHNjcmVlbiBhbm5vdGF0aW9uLlxuICogQG1ldGhvZCBzdG9wQWxsVHJhY2tzIC0gTWV0aG9kIHRvIHN0b3AgYWxsIG1lZGlhIHRyYWNrcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNjcmVlbmJvYXJkLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjcmVlbmJvYXJkLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2NyZWVuYm9hcmQtbW9kYWwuY29tcG9uZW50LmNzcyddLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTY3JlZW5ib2FyZE1vZGFsIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHBhcmFtZXRlcnM6IFNjcmVlbmJvYXJkTW9kYWxQYXJhbWV0ZXJzID0ge30gYXMgU2NyZWVuYm9hcmRNb2RhbFBhcmFtZXRlcnM7XG4gIEBJbnB1dCgpIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBvbkNsb3NlITogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgcG9zaXRpb24gPSAndG9wUmlnaHQnO1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kQ29sb3IgPSAnIzgzYzBlOSc7XG5cbiAgQFZpZXdDaGlsZCgnc2NyZWVuVmlkZW8nKSBzY3JlZW5WaWRlb1JlZiE6IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3NjcmVlbkNhbnZhcycpIHNjcmVlbkNhbnZhc1JlZiE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuXG4gIGZhVGltZXMgPSBmYVRpbWVzO1xuXG4gIHByaXZhdGUgYW5ub3RhdGlvbkludGVydmFsOiBhbnk7XG4gIHByaXZhdGUgYW5ub3RhdGlvbkNoZWNrSW50ZXJ2YWw6IGFueTtcbiAgcHJpdmF0ZSBjbG9uZWRTdHJlYW1TY3JlZW46IE1lZGlhU3RyZWFtIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBudWxsID0gbnVsbDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBJbml0aWFsaXphdGlvbiBsb2dpYyB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgdmlld1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdG9wQW5ub3RhdGlvbigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydpc1Zpc2libGUnXSkge1xuICAgICAgdGhpcy5pc1Zpc2libGUgPSBjaGFuZ2VzWydpc1Zpc2libGUnXS5jdXJyZW50VmFsdWU7XG4gICAgICBpZiAodGhpcy5pc1Zpc2libGUpIHtcbiAgICAgICAgLy8gSW4gY2FzZSBpc1Zpc2libGUgY2hhbmdlcyBhZnRlciB2aWV3IGluaXRcbiAgICAgICAgaWYgKHRoaXMuc2NyZWVuQ2FudmFzUmVmICYmIHRoaXMuc2NyZWVuVmlkZW9SZWYpIHtcbiAgICAgICAgICB0aGlzLnNob3dNb2RhbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2NyZWVuQ2FudmFzUmVmICYmIHRoaXMuc2NyZWVuVmlkZW9SZWYpIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TW9kYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5zY3JlZW5DYW52YXNSZWYgJiYgdGhpcy5zY3JlZW5WaWRlb1JlZikge1xuICAgICAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gTW92ZSBsb2dpYyB0aGF0IHJlcXVpcmVzIHZpZXcgYWNjZXNzIGhlcmVcbiAgfVxuXG4gIHNob3dNb2RhbCA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHsgYW5ub3RhdGVTY3JlZW5TdHJlYW0sIHNoYXJlZCwgY3JlYXRlU2VuZFRyYW5zcG9ydCwgcHJlcG9wdWxhdGVVc2VyTWVkaWEsIGhvc3RMYWJlbCB9ID1cbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzO1xuICAgICAgY29uc3QgYW5ub3RhdGUgPSBhbm5vdGF0ZVNjcmVlblN0cmVhbTtcbiAgICAgIGNvbnN0IHNjcmVlblZpZGVvID0gdGhpcy5zY3JlZW5WaWRlb1JlZiEubmF0aXZlRWxlbWVudDtcblxuICAgICAgaWYgKGFubm90YXRlICYmIHNoYXJlZCkge1xuICAgICAgICBzY3JlZW5WaWRlby5jbGFzc0xpc3QucmVtb3ZlKCdkLW5vbmUnKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hbm5vdGF0YXRpb25QcmV2aWV3KCk7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5wYXJhbWV0ZXJzLnRyYW5zcG9ydENyZWF0ZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IGNyZWF0ZVNlbmRUcmFuc3BvcnQoeyBvcHRpb246ICdzY3JlZW4nLCBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU2NyZWVuVHJhbnNwb3J0KCk7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5zbGVlcCh7IG1zOiAyNTAgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5jb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbih7XG4gICAgICAgICAgICBzdHJlYW06IHRoaXMucGFyYW1ldGVycy5wcm9jZXNzZWRTY3JlZW5TdHJlYW0sXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEhKHsgbmFtZTogaG9zdExhYmVsLCBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY3JlZW5WaWRlby5jbGFzc0xpc3QuYWRkKCdkLW5vbmUnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8qIGhhbmRsZSBlcnJvciAqL1xuICAgIH1cbiAgfTtcblxuICBoaWRlTW9kYWwgPSBhc3luYyAoKSA9PiB7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcbiAgICBjb25zdCB7XG4gICAgICBhbm5vdGF0ZVNjcmVlblN0cmVhbSxcbiAgICAgIHNoYXJlZCxcbiAgICAgIGNyZWF0ZVNlbmRUcmFuc3BvcnQsXG4gICAgICBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbixcbiAgICAgIHN0b3BTaGFyZVNjcmVlbixcbiAgICAgIHByZXBvcHVsYXRlVXNlck1lZGlhLFxuICAgICAgaG9zdExhYmVsLFxuICAgIH0gPSB0aGlzLnBhcmFtZXRlcnM7XG4gICAgY29uc3QgYW5ub3RhdGUgPSBhbm5vdGF0ZVNjcmVlblN0cmVhbTtcbiAgICBjb25zdCBzY3JlZW5WaWRlbyA9IHRoaXMuc2NyZWVuVmlkZW9SZWYgJiYgdGhpcy5zY3JlZW5WaWRlb1JlZiEubmF0aXZlRWxlbWVudDtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoIWFubm90YXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdG9wQW5ub3RhdGlvbigpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hhcmVkKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnBhcmFtZXRlcnMudHJhbnNwb3J0Q3JlYXRlZCkge1xuICAgICAgICAgICAgYXdhaXQgY3JlYXRlU2VuZFRyYW5zcG9ydCh7IG9wdGlvbjogJ3NjcmVlbicsIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW4oeyBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5zbGVlcCh7IG1zOiA1MDAgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbiAmJlxuICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbi5nZXRWaWRlb1RyYWNrcygpWzBdLnJlYWR5U3RhdGUgPT09ICdlbmRlZCdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4ucmVtb3ZlVHJhY2soXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmNsb25lZFN0cmVhbVNjcmVlbikge1xuICAgICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbi5hZGRUcmFjayhcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0uY2xvbmUoKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVMb2NhbFN0cmVhbVNjcmVlbih0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0ub25lbmRlZCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbih7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgICAgICBhd2FpdCBzdG9wU2hhcmVTY3JlZW4oeyBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBhcmFtZXRlcnMuY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW4oe1xuICAgICAgICAgICAgICBzdHJlYW06IHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbixcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcEFsbFRyYWNrcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEhKHsgbmFtZTogaG9zdExhYmVsLCBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICB9XG4gICAgICBzY3JlZW5WaWRlbyAmJiBzY3JlZW5WaWRlby5jbGFzc0xpc3QuYWRkKCdkLW5vbmUnKTtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMubWFpblNjcmVlbkNhbnZhcyAmJiB0aGlzLnNjcmVlbkNhbnZhc1JlZikge1xuICAgICAgICB0aGlzLnNjcmVlbkNhbnZhc1JlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Qtbm9uZScpO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICB9XG4gIH07XG5cbiAgYW5ub3RhdGF0aW9uUHJldmlldyA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzY3JlZW5WaWRlbyA9IHRoaXMuc2NyZWVuVmlkZW9SZWYhLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCF0aGlzLnBhcmFtZXRlcnMubWFpblNjcmVlbkNhbnZhcykge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLm1haW5TY3JlZW5DYW52YXMgPSB0aGlzLnNjcmVlbkNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZU1haW5TY3JlZW5DYW52YXModGhpcy5wYXJhbWV0ZXJzLm1haW5TY3JlZW5DYW52YXMpO1xuICAgIH1cbiAgICBjb25zdCBhbm5vdGF0ZSA9IHRoaXMucGFyYW1ldGVycy5hbm5vdGF0ZVNjcmVlblN0cmVhbTtcblxuICAgIGlmIChcbiAgICAgIGFubm90YXRlICYmXG4gICAgICAoIXRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuIHx8XG4gICAgICAgICh0aGlzLmNsb25lZFN0cmVhbVNjcmVlbiAmJlxuICAgICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0ucmVhZHlTdGF0ZSA9PT0gJ2VuZGVkJykpXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFRyYWNrID0gdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuIS5nZXRWaWRlb1RyYWNrcygpWzBdO1xuICAgICAgY29uc3Qgb3JpZ2luYWxTZXR0aW5ncyA9IG9yaWdpbmFsVHJhY2suZ2V0U2V0dGluZ3MoKTtcbiAgICAgIGNvbnN0IGNsb25lZCA9IG9yaWdpbmFsVHJhY2suY2xvbmUoKTtcbiAgICAgIGF3YWl0IGNsb25lZC5hcHBseUNvbnN0cmFpbnRzKHtcbiAgICAgICAgd2lkdGg6IG9yaWdpbmFsU2V0dGluZ3Mud2lkdGgsXG4gICAgICAgIGhlaWdodDogb3JpZ2luYWxTZXR0aW5ncy5oZWlnaHQsXG4gICAgICAgIGZyYW1lUmF0ZTogb3JpZ2luYWxTZXR0aW5ncy5mcmFtZVJhdGUsXG4gICAgICAgIGFzcGVjdFJhdGlvOiBvcmlnaW5hbFNldHRpbmdzLmFzcGVjdFJhdGlvLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbiA9IG5ldyBNZWRpYVN0cmVhbShbY2xvbmVkXSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jbG9uZWRTdHJlYW1TY3JlZW4gJiZcbiAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbiAmJlxuICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0ucmVhZHlTdGF0ZSA9PT0gJ2VuZGVkJ1xuICAgICkge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuLnJlbW92ZVRyYWNrKFxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4uZ2V0VmlkZW9UcmFja3MoKVswXSxcbiAgICAgICk7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4uYWRkVHJhY2soXG4gICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0uY2xvbmUoKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuKSB7XG4gICAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbi5nZXRWaWRlb1RyYWNrcygpWzBdLm9uZW5kZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5kaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbih7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgYXdhaXQgdGhpcy5wYXJhbWV0ZXJzLnN0b3BTaGFyZVNjcmVlbih7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFDYW52YXMgPSB0aGlzLnBhcmFtZXRlcnMubWFpblNjcmVlbkNhbnZhcztcbiAgICBjb25zdCBjdHggPSBtZWRpYUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIG1lZGlhQ2FudmFzLndpZHRoID0gdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuIS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkud2lkdGghO1xuICAgIG1lZGlhQ2FudmFzLmhlaWdodCA9IHRoaXMucGFyYW1ldGVyc1xuICAgICAgLmxvY2FsU3RyZWFtU2NyZWVuIS5nZXRWaWRlb1RyYWNrcygpWzBdXG4gICAgICAuZ2V0U2V0dGluZ3MoKS5oZWlnaHQhO1xuXG4gICAgaWYgKCFhbm5vdGF0ZSkge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnByb2Nlc3NlZFNjcmVlblN0cmVhbSA9IG51bGw7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlUHJvY2Vzc2VkU2NyZWVuU3RyZWFtKG51bGwpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhcHR1cmVTdHJlYW0gPSAoKSA9PiB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBtZWRpYUNhbnZhcy5jYXB0dXJlU3RyZWFtKDMwKTtcbiAgICAgIHRoaXMuYW5ub3RhdGlvbkNoZWNrSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG4gICAgICAgIGNhbnZhc0VsZW1lbnQgPSBwYXJhbXMuY2FudmFzU2NyZWVuYm9hcmQ7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGNhbnZhc0VsZW1lbnQhLmhlaWdodDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBjYW52YXNFbGVtZW50IS53aWR0aDtcbiAgICAgICAgY29uc3QgcmVmSGVpZ2h0ID0gcGFyYW1zLmxvY2FsU3RyZWFtU2NyZWVuIS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkuaGVpZ2h0ITtcbiAgICAgICAgY29uc3QgcmVmV2lkdGggPSBwYXJhbXMubG9jYWxTdHJlYW1TY3JlZW4hLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS53aWR0aCE7XG4gICAgICAgIGlmIChoZWlnaHQgIT09IHJlZkhlaWdodCB8fCB3aWR0aCAhPT0gcmVmV2lkdGgpIHtcbiAgICAgICAgICBjYW52YXNFbGVtZW50IS53aWR0aCA9IHJlZldpZHRoO1xuICAgICAgICAgIGNhbnZhc0VsZW1lbnQhLmhlaWdodCA9IHJlZkhlaWdodDtcbiAgICAgICAgICBtZWRpYUNhbnZhcy53aWR0aCA9IHJlZldpZHRoO1xuICAgICAgICAgIG1lZGlhQ2FudmFzLmhlaWdodCA9IHJlZkhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwMCk7XG4gICAgICB0aGlzLmFubm90YXRpb25JbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgZHJhd0NvbWJpbmVkKCk7XG4gICAgICB9LCAzMCk7XG4gICAgICByZXR1cm4gc3RyZWFtO1xuICAgIH07XG5cbiAgICBjb25zdCBhbm5vdGF0ZUltYWdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnByb2Nlc3NlZFNjcmVlblN0cmVhbSA9IGF3YWl0IGNhcHR1cmVTdHJlYW0oKTtcbiAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVQcm9jZXNzZWRTY3JlZW5TdHJlYW0odGhpcy5wYXJhbWV0ZXJzLnByb2Nlc3NlZFNjcmVlblN0cmVhbSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGFubm90YXRlVmlkZW8gPSB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbjtcbiAgICBpZiAoYW5ub3RhdGVWaWRlbyAmJiBhbm5vdGF0ZSkge1xuICAgICAgc2NyZWVuVmlkZW8uc3R5bGUud2lkdGggPSBgJHthbm5vdGF0ZVZpZGVvLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS53aWR0aH1weGA7XG4gICAgICBzY3JlZW5WaWRlby5zdHlsZS5oZWlnaHQgPSBgJHthbm5vdGF0ZVZpZGVvLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHR9cHhgO1xuICAgICAgc2NyZWVuVmlkZW8uc3JjT2JqZWN0ID0gYW5ub3RhdGVWaWRlbztcbiAgICAgIGF3YWl0IGFubm90YXRlSW1hZ2UoKTtcbiAgICB9XG5cbiAgICBsZXQgY2FudmFzRWxlbWVudCA9IHRoaXMucGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCkuY2FudmFzU2NyZWVuYm9hcmQ7XG4gICAgY2FudmFzRWxlbWVudCEud2lkdGggPSBtZWRpYUNhbnZhcy53aWR0aDtcbiAgICBjYW52YXNFbGVtZW50IS5oZWlnaHQgPSBtZWRpYUNhbnZhcy5oZWlnaHQ7XG5cbiAgICBjb25zdCBkcmF3Q29tYmluZWQgPSAoKSA9PiB7XG4gICAgICBjdHghLmNsZWFyUmVjdCgwLCAwLCBjYW52YXNFbGVtZW50IS53aWR0aCwgY2FudmFzRWxlbWVudCEuaGVpZ2h0KTtcbiAgICAgIGN0eCEuZHJhd0ltYWdlKHNjcmVlblZpZGVvLCAwLCAwLCBjYW52YXNFbGVtZW50IS53aWR0aCwgY2FudmFzRWxlbWVudCEuaGVpZ2h0KTtcbiAgICAgIGN0eCEuZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQhLCAwLCAwLCBjYW52YXNFbGVtZW50IS53aWR0aCwgY2FudmFzRWxlbWVudCEuaGVpZ2h0KTtcbiAgICAgIGN0eCEucmVzdG9yZSgpO1xuICAgIH07XG4gIH07XG5cbiAgaGFuZGxlU2NyZWVuVHJhbnNwb3J0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbiEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4hLmdldFZpZGVvVHJhY2tzKClbMF0uaWQgPT09XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zY3JlZW5Qcm9kdWNlcj8udHJhY2shLmlkXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuICYmXG4gICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID4gMCAmJlxuICAgICAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbi5nZXRWaWRlb1RyYWNrcygpWzBdLnJlYWR5U3RhdGUgPT09ICdlbmRlZCdcbiAgICAgICkge1xuICAgICAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbi5yZW1vdmVUcmFjayh0aGlzLmNsb25lZFN0cmVhbVNjcmVlbi5nZXRWaWRlb1RyYWNrcygpWzBdKTtcbiAgICAgICAgdGhpcy5jbG9uZWRTdHJlYW1TY3JlZW4uYWRkVHJhY2soXG4gICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuIS5nZXRWaWRlb1RyYWNrcygpWzBdLmNsb25lKCksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4hLnJlbW92ZVRyYWNrKFxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4hLmdldFZpZGVvVHJhY2tzKClbMF0sXG4gICAgICApO1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuIS5hZGRUcmFjayhcbiAgICAgICAgdGhpcy5jbG9uZWRTdHJlYW1TY3JlZW4hLmdldFZpZGVvVHJhY2tzKClbMF0uY2xvbmUoKSxcbiAgICAgICk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5kaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbih7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgfTtcblxuICBzdG9wQW5ub3RhdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAodGhpcy5hbm5vdGF0aW9uSW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hbm5vdGF0aW9uSW50ZXJ2YWwpO1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFubm90YXRpb25DaGVja0ludGVydmFsKTtcbiAgICAgIHRoaXMuYW5ub3RhdGlvbkludGVydmFsID0gbnVsbDtcbiAgICAgIHRoaXMuYW5ub3RhdGlvbkNoZWNrSW50ZXJ2YWwgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmFtZXRlcnMucHJvY2Vzc2VkU2NyZWVuU3RyZWFtKSB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMucHJvY2Vzc2VkU2NyZWVuU3RyZWFtXG4gICAgICAgIC5nZXRUcmFja3MoKVxuICAgICAgICAuZm9yRWFjaCgodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2spID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMucHJvY2Vzc2VkU2NyZWVuU3RyZWFtID0gbnVsbDtcbiAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVQcm9jZXNzZWRTY3JlZW5TdHJlYW0obnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFyYW1ldGVycy5tYWluU2NyZWVuQ2FudmFzKSB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMubWFpblNjcmVlbkNhbnZhc1xuICAgICAgICA/LmdldENvbnRleHQoJzJkJykhXG4gICAgICAgIC5jbGVhclJlY3QoXG4gICAgICAgICAgMCxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5tYWluU2NyZWVuQ2FudmFzLndpZHRoLFxuICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5tYWluU2NyZWVuQ2FudmFzLmhlaWdodCxcbiAgICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgc3RvcEFsbFRyYWNrcyA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4gJiZcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlblxuICAgICAgICAgIC5nZXRWaWRlb1RyYWNrcygpXG4gICAgICAgICAgLmZvckVhY2goKHRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrKSA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlTG9jYWxTdHJlYW1TY3JlZW4obnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlTG9jYWxTdHJlYW1TY3JlZW4obnVsbCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuICYmIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbi5nZXRWaWRlb1RyYWNrcygpLmZvckVhY2goKHRyYWNrKSA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMucHJvY2Vzc2VkU2NyZWVuU3RyZWFtKSB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5wcm9jZXNzZWRTY3JlZW5TdHJlYW1cbiAgICAgICAgICAuZ2V0VHJhY2tzKClcbiAgICAgICAgICAuZm9yRWFjaCgodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2spID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVQcm9jZXNzZWRTY3JlZW5TdHJlYW0obnVsbCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICB9XG5cbiAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbiA9IG51bGw7XG4gIH07XG59XG4iLCI8ZGl2ICpuZ0lmPVwiaXNWaXNpYmxlXCIgY2xhc3M9XCJtb2RhbC1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5TY3JlZW4gQW5ub3RhdGlvbjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY2xvc2VcIiAoY2xpY2spPVwiaGlkZU1vZGFsKClcIj5cclxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVRpbWVzXCI+PC9mYS1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGhyIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICA8dmlkZW8gI3NjcmVlblZpZGVvIGlkPVwic2NyZWVuVmlkZW9cIiBjbGFzcz1cImQtbm9uZVwiIGF1dG9wbGF5PjwvdmlkZW8+XHJcbiAgICAgIDxjYW52YXMgI3NjcmVlbkNhbnZhcyBpZD1cInNjcmVlbkNhbnZhc1wiPjwvY2FudmFzPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuYm9hcmQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2NyZWVuYm9hcmQtY29tcG9uZW50cy9zY3JlZW5ib2FyZC1tb2RhbC9zY3JlZW5ib2FyZC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zY3JlZW5ib2FyZC1jb21wb25lbnRzL3NjcmVlbmJvYXJkLW1vZGFsL3NjcmVlbmJvYXJkLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxTQUFTLEdBS1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUEwRDVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzREc7QUFRSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ2xCLFVBQVUsR0FBK0IsRUFBZ0MsQ0FBQztJQUMxRSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLE9BQU8sQ0FBYztJQUNyQixRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQ3RCLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFFWCxjQUFjLENBQWdDO0lBQzdDLGVBQWUsQ0FBaUM7SUFFM0UsT0FBTyxHQUFHLE9BQU8s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QUUsV0FBVyxFQUFFLGlCQUFpQixDQUFDOzhCQUc5QyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFb0IsY0FBYztzQkFBdkMsU0FBUzt1QkFBQyxhQUFhO2dCQUNHLGVBQWU7c0JBQXpDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IGZhVGltZXMgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgUHJvZHVjZXIgfSBmcm9tICdtZWRpYXNvdXAtY2xpZW50L2xpYi90eXBlcyc7XG5pbXBvcnQge1xuICBDb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblR5cGUsXG4gIENyZWF0ZVNlbmRUcmFuc3BvcnRUeXBlLFxuICBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblR5cGUsXG4gIFByZXBvcHVsYXRlVXNlck1lZGlhVHlwZSxcbiAgU3RvcFNoYXJlU2NyZWVuVHlwZSxcbiAgU2xlZXBUeXBlLFxuICBDb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblBhcmFtZXRlcnMsXG4gIENyZWF0ZVNlbmRUcmFuc3BvcnRQYXJhbWV0ZXJzLFxuICBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblBhcmFtZXRlcnMsXG4gIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgU3RvcFNoYXJlU2NyZWVuUGFyYW1ldGVycyxcbn0gZnJvbSAnLi4vLi4vLi4vQHR5cGVzL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBTY3JlZW5ib2FyZE1vZGFsUGFyYW1ldGVyc1xuICBleHRlbmRzIENvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuUGFyYW1ldGVycyxcbiAgICBDcmVhdGVTZW5kVHJhbnNwb3J0UGFyYW1ldGVycyxcbiAgICBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblBhcmFtZXRlcnMsXG4gICAgUHJlcG9wdWxhdGVVc2VyTWVkaWFQYXJhbWV0ZXJzLFxuICAgIFN0b3BTaGFyZVNjcmVlblBhcmFtZXRlcnMge1xuICBsb2NhbFN0cmVhbVNjcmVlbjogTWVkaWFTdHJlYW0gfCBudWxsO1xuICBzaGFyZWQ6IGJvb2xlYW47XG4gIGhvc3RMYWJlbDogc3RyaW5nO1xuICBhbm5vdGF0ZVNjcmVlblN0cmVhbTogYm9vbGVhbjtcbiAgcHJvY2Vzc2VkU2NyZWVuU3RyZWFtOiBNZWRpYVN0cmVhbSB8IG51bGw7XG4gIG1haW5TY3JlZW5DYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbDtcbiAgY2FudmFzU2NyZWVuYm9hcmQ6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbDtcbiAgdHJhbnNwb3J0Q3JlYXRlZDogYm9vbGVhbjtcbiAgc2NyZWVuUHJvZHVjZXI6IFByb2R1Y2VyIHwgbnVsbDtcblxuICB1cGRhdGVMb2NhbFN0cmVhbVNjcmVlbjogKHN0cmVhbTogTWVkaWFTdHJlYW0gfCBudWxsKSA9PiB2b2lkO1xuICB1cGRhdGVQcm9jZXNzZWRTY3JlZW5TdHJlYW06IChzdHJlYW06IE1lZGlhU3RyZWFtIHwgbnVsbCkgPT4gdm9pZDtcbiAgdXBkYXRlTWFpblNjcmVlbkNhbnZhczogKGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsKSA9PiB2b2lkO1xuXG4gIC8vIG1lZGlhc2Z1IGZ1bmN0aW9uc1xuICBzbGVlcDogU2xlZXBUeXBlO1xuICBjcmVhdGVTZW5kVHJhbnNwb3J0OiBDcmVhdGVTZW5kVHJhbnNwb3J0VHlwZTtcbiAgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW46IERpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuVHlwZTtcbiAgY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW46IENvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuVHlwZTtcbiAgc3RvcFNoYXJlU2NyZWVuOiBTdG9wU2hhcmVTY3JlZW5UeXBlO1xuICBwcmVwb3B1bGF0ZVVzZXJNZWRpYTogUHJlcG9wdWxhdGVVc2VyTWVkaWFUeXBlO1xuXG4gIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IFNjcmVlbmJvYXJkTW9kYWxQYXJhbWV0ZXJzO1xuICAvLyBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyZWVuYm9hcmRNb2RhbE9wdGlvbnMge1xuICBwYXJhbWV0ZXJzOiBTY3JlZW5ib2FyZE1vZGFsUGFyYW1ldGVycztcbiAgaXNWaXNpYmxlOiBib29sZWFuO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBwb3NpdGlvbjogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgU2NyZWVuYm9hcmRNb2RhbFR5cGUgPSAob3B0aW9uczogU2NyZWVuYm9hcmRNb2RhbE9wdGlvbnMpID0+IEhUTUxFbGVtZW50O1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgU2NyZWVuYm9hcmRNb2RhbCBjb21wb25lbnQgZm9yIGhhbmRsaW5nIHNjcmVlbiBhbm5vdGF0aW9uIGFuZCBtb2RhbCB2aXNpYmlsaXR5LlxuICpcbiAqIEBjb21wb25lbnRcbiAqIEBzZWxlY3RvciBhcHAtc2NyZWVuYm9hcmQtbW9kYWxcbiAqIEBzdGFuZGFsb25lIHRydWVcbiAqIEB0ZW1wbGF0ZVVybCAuL3NjcmVlbmJvYXJkLW1vZGFsLmNvbXBvbmVudC5odG1sXG4gKiBAc3R5bGVVcmxzIC4vc2NyZWVuYm9hcmQtbW9kYWwuY29tcG9uZW50LmNzc1xuICogQGltcG9ydHMgQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGVcbiAqXG4gKiBAY2xhc3MgU2NyZWVuYm9hcmRNb2RhbFxuICogQGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhpcyBjb21wb25lbnQgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBzY3JlZW4gYW5ub3RhdGlvbiBtb2RhbCwgaW5jbHVkaW5nIHNob3dpbmcgYW5kIGhpZGluZyB0aGUgbW9kYWwsXG4gKiBoYW5kbGluZyBzY3JlZW4gYW5ub3RhdGlvbnMsIGFuZCBtYW5hZ2luZyBtZWRpYSBzdHJlYW1zLlxuICpcbiAqIEBwcm9wZXJ0eSB7U2NyZWVuYm9hcmRNb2RhbFBhcmFtZXRlcnN9IHBhcmFtZXRlcnMgLSBJbnB1dCBwYXJhbWV0ZXIgZm9yIHNjcmVlbiBhbm5vdGF0aW9uIG1vZGFsLlxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1Zpc2libGUgLSBJbnB1dCBmbGFnIHRvIGNvbnRyb2wgdGhlIHZpc2liaWxpdHkgb2YgdGhlIG1vZGFsLlxuICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSBvbkNsb3NlIC0gSW5wdXQgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwb3NpdGlvbiAtIElucHV0IHN0cmluZyB0byBzZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBtb2RhbC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBiYWNrZ3JvdW5kQ29sb3IgLSBJbnB1dCBzdHJpbmcgdG8gc2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBtb2RhbC5cbiAqXG4gKiBAcHJvcGVydHkge0VsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD59IHNjcmVlblZpZGVvUmVmIC0gVmlld0NoaWxkIHJlZmVyZW5jZSB0byB0aGUgc2NyZWVuIHZpZGVvIGVsZW1lbnQuXG4gKiBAcHJvcGVydHkge0VsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+fSBzY3JlZW5DYW52YXNSZWYgLSBWaWV3Q2hpbGQgcmVmZXJlbmNlIHRvIHRoZSBzY3JlZW4gY2FudmFzIGVsZW1lbnQuXG4gKlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFUaW1lcyAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHRoZSBjbG9zZSBidXR0b24uXG4gKlxuICogQHByb3BlcnR5IHthbnl9IGFubm90YXRpb25JbnRlcnZhbCAtIEludGVydmFsIGZvciBhbm5vdGF0aW9uIHVwZGF0ZXMuXG4gKiBAcHJvcGVydHkge2FueX0gYW5ub3RhdGlvbkNoZWNrSW50ZXJ2YWwgLSBJbnRlcnZhbCBmb3IgY2hlY2tpbmcgYW5ub3RhdGlvbiB1cGRhdGVzLlxuICogQHByb3BlcnR5IHtNZWRpYVN0cmVhbSB8IG51bGx9IGNsb25lZFN0cmVhbVNjcmVlbiAtIENsb25lZCBtZWRpYSBzdHJlYW0gZm9yIHNjcmVlbiBzaGFyaW5nLlxuICogQHByb3BlcnR5IHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBudWxsfSBjdHggLSBDYW52YXMgcmVuZGVyaW5nIGNvbnRleHQuXG4gKlxuICogQG1ldGhvZCBuZ09uSW5pdCAtIEluaXRpYWxpemF0aW9uIGxvZ2ljIHRoYXQgZG9lcyBub3QgZGVwZW5kIG9uIHRoZSB2aWV3LlxuICogQG1ldGhvZCBuZ09uRGVzdHJveSAtIENsZWFudXAgbG9naWMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cbiAqIEBtZXRob2QgbmdPbkNoYW5nZXMgLSBMb2dpYyB0byBoYW5kbGUgY2hhbmdlcyBpbiBpbnB1dCBwcm9wZXJ0aWVzLlxuICogQG1ldGhvZCBuZ0FmdGVyVmlld0luaXQgLSBMb2dpYyB0aGF0IHJlcXVpcmVzIHZpZXcgYWNjZXNzLlxuICogQG1ldGhvZCBzaG93TW9kYWwgLSBNZXRob2QgdG8gc2hvdyB0aGUgbW9kYWwgYW5kIGhhbmRsZSBzY3JlZW4gYW5ub3RhdGlvbiBzZXR1cC5cbiAqIEBtZXRob2QgaGlkZU1vZGFsIC0gTWV0aG9kIHRvIGhpZGUgdGhlIG1vZGFsIGFuZCBjbGVhbnVwIHNjcmVlbiBhbm5vdGF0aW9uLlxuICogQG1ldGhvZCBhbm5vdGF0YXRpb25QcmV2aWV3IC0gTWV0aG9kIHRvIGhhbmRsZSB0aGUgcHJldmlldyBvZiBzY3JlZW4gYW5ub3RhdGlvbnMuXG4gKiBAbWV0aG9kIGhhbmRsZVNjcmVlblRyYW5zcG9ydCAtIE1ldGhvZCB0byBoYW5kbGUgc2NyZWVuIHRyYW5zcG9ydCBsb2dpYy5cbiAqIEBtZXRob2Qgc3RvcEFubm90YXRpb24gLSBNZXRob2QgdG8gc3RvcCB0aGUgc2NyZWVuIGFubm90YXRpb24uXG4gKiBAbWV0aG9kIHN0b3BBbGxUcmFja3MgLSBNZXRob2QgdG8gc3RvcCBhbGwgbWVkaWEgdHJhY2tzLlxuICogQHJldHVybnMge0hUTUxFbGVtZW50fSBUaGUgc2NyZWVuYm9hcmQgbW9kYWwgY29tcG9uZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxhcHAtc2NyZWVuYm9hcmQtbW9kYWxcbiAqICBbcGFyYW1ldGVyc109XCJzY3JlZW5ib2FyZE1vZGFsUGFyYW1zXCJcbiAqIFtpc1Zpc2libGVdPVwiaXNNb2RhbFZpc2libGVcIlxuICogW29uQ2xvc2VdPVwiY2xvc2VNb2RhbFwiXG4gKiBbcG9zaXRpb25dPVwiJ3RvcFJpZ2h0J1wiXG4gKiBbYmFja2dyb3VuZENvbG9yXT1cIicjODNjMGU5J1wiPlxuICogPC9hcHAtc2NyZWVuYm9hcmQtbW9kYWw+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNjcmVlbmJvYXJkLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjcmVlbmJvYXJkLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2NyZWVuYm9hcmQtbW9kYWwuY29tcG9uZW50LmNzcyddLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTY3JlZW5ib2FyZE1vZGFsIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHBhcmFtZXRlcnM6IFNjcmVlbmJvYXJkTW9kYWxQYXJhbWV0ZXJzID0ge30gYXMgU2NyZWVuYm9hcmRNb2RhbFBhcmFtZXRlcnM7XG4gIEBJbnB1dCgpIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBvbkNsb3NlITogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgcG9zaXRpb24gPSAndG9wUmlnaHQnO1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kQ29sb3IgPSAnIzgzYzBlOSc7XG5cbiAgQFZpZXdDaGlsZCgnc2NyZWVuVmlkZW8nKSBzY3JlZW5WaWRlb1JlZiE6IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3NjcmVlbkNhbnZhcycpIHNjcmVlbkNhbnZhc1JlZiE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuXG4gIGZhVGltZXMgPSBmYVRpbWVzO1xuXG4gIHByaXZhdGUgYW5ub3RhdGlvbkludGVydmFsOiBhbnk7XG4gIHByaXZhdGUgYW5ub3RhdGlvbkNoZWNrSW50ZXJ2YWw6IGFueTtcbiAgcHJpdmF0ZSBjbG9uZWRTdHJlYW1TY3JlZW46IE1lZGlhU3RyZWFtIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBudWxsID0gbnVsbDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBJbml0aWFsaXphdGlvbiBsb2dpYyB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgdmlld1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdG9wQW5ub3RhdGlvbigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydpc1Zpc2libGUnXSkge1xuICAgICAgdGhpcy5pc1Zpc2libGUgPSBjaGFuZ2VzWydpc1Zpc2libGUnXS5jdXJyZW50VmFsdWU7XG4gICAgICBpZiAodGhpcy5pc1Zpc2libGUpIHtcbiAgICAgICAgLy8gSW4gY2FzZSBpc1Zpc2libGUgY2hhbmdlcyBhZnRlciB2aWV3IGluaXRcbiAgICAgICAgaWYgKHRoaXMuc2NyZWVuQ2FudmFzUmVmICYmIHRoaXMuc2NyZWVuVmlkZW9SZWYpIHtcbiAgICAgICAgICB0aGlzLnNob3dNb2RhbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2NyZWVuQ2FudmFzUmVmICYmIHRoaXMuc2NyZWVuVmlkZW9SZWYpIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TW9kYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5zY3JlZW5DYW52YXNSZWYgJiYgdGhpcy5zY3JlZW5WaWRlb1JlZikge1xuICAgICAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gTW92ZSBsb2dpYyB0aGF0IHJlcXVpcmVzIHZpZXcgYWNjZXNzIGhlcmVcbiAgfVxuXG4gIHNob3dNb2RhbCA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHsgYW5ub3RhdGVTY3JlZW5TdHJlYW0sIHNoYXJlZCwgY3JlYXRlU2VuZFRyYW5zcG9ydCwgcHJlcG9wdWxhdGVVc2VyTWVkaWEsIGhvc3RMYWJlbCB9ID1cbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzO1xuICAgICAgY29uc3QgYW5ub3RhdGUgPSBhbm5vdGF0ZVNjcmVlblN0cmVhbTtcbiAgICAgIGNvbnN0IHNjcmVlblZpZGVvID0gdGhpcy5zY3JlZW5WaWRlb1JlZiEubmF0aXZlRWxlbWVudDtcblxuICAgICAgaWYgKGFubm90YXRlICYmIHNoYXJlZCkge1xuICAgICAgICBzY3JlZW5WaWRlby5jbGFzc0xpc3QucmVtb3ZlKCdkLW5vbmUnKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hbm5vdGF0YXRpb25QcmV2aWV3KCk7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5wYXJhbWV0ZXJzLnRyYW5zcG9ydENyZWF0ZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IGNyZWF0ZVNlbmRUcmFuc3BvcnQoeyBvcHRpb246ICdzY3JlZW4nLCBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU2NyZWVuVHJhbnNwb3J0KCk7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5zbGVlcCh7IG1zOiAyNTAgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5jb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbih7XG4gICAgICAgICAgICBzdHJlYW06IHRoaXMucGFyYW1ldGVycy5wcm9jZXNzZWRTY3JlZW5TdHJlYW0sXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEhKHsgbmFtZTogaG9zdExhYmVsLCBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY3JlZW5WaWRlby5jbGFzc0xpc3QuYWRkKCdkLW5vbmUnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8qIGhhbmRsZSBlcnJvciAqL1xuICAgIH1cbiAgfTtcblxuICBoaWRlTW9kYWwgPSBhc3luYyAoKSA9PiB7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcbiAgICBjb25zdCB7XG4gICAgICBhbm5vdGF0ZVNjcmVlblN0cmVhbSxcbiAgICAgIHNoYXJlZCxcbiAgICAgIGNyZWF0ZVNlbmRUcmFuc3BvcnQsXG4gICAgICBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbixcbiAgICAgIHN0b3BTaGFyZVNjcmVlbixcbiAgICAgIHByZXBvcHVsYXRlVXNlck1lZGlhLFxuICAgICAgaG9zdExhYmVsLFxuICAgIH0gPSB0aGlzLnBhcmFtZXRlcnM7XG4gICAgY29uc3QgYW5ub3RhdGUgPSBhbm5vdGF0ZVNjcmVlblN0cmVhbTtcbiAgICBjb25zdCBzY3JlZW5WaWRlbyA9IHRoaXMuc2NyZWVuVmlkZW9SZWYgJiYgdGhpcy5zY3JlZW5WaWRlb1JlZiEubmF0aXZlRWxlbWVudDtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoIWFubm90YXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdG9wQW5ub3RhdGlvbigpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hhcmVkKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnBhcmFtZXRlcnMudHJhbnNwb3J0Q3JlYXRlZCkge1xuICAgICAgICAgICAgYXdhaXQgY3JlYXRlU2VuZFRyYW5zcG9ydCh7IG9wdGlvbjogJ3NjcmVlbicsIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW4oeyBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5zbGVlcCh7IG1zOiA1MDAgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbiAmJlxuICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbi5nZXRWaWRlb1RyYWNrcygpWzBdLnJlYWR5U3RhdGUgPT09ICdlbmRlZCdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4ucmVtb3ZlVHJhY2soXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmNsb25lZFN0cmVhbVNjcmVlbikge1xuICAgICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbi5hZGRUcmFjayhcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0uY2xvbmUoKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVMb2NhbFN0cmVhbVNjcmVlbih0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0ub25lbmRlZCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbih7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgICAgICBhd2FpdCBzdG9wU2hhcmVTY3JlZW4oeyBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBhcmFtZXRlcnMuY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW4oe1xuICAgICAgICAgICAgICBzdHJlYW06IHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbixcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcEFsbFRyYWNrcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEhKHsgbmFtZTogaG9zdExhYmVsLCBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICB9XG4gICAgICBzY3JlZW5WaWRlbyAmJiBzY3JlZW5WaWRlby5jbGFzc0xpc3QuYWRkKCdkLW5vbmUnKTtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMubWFpblNjcmVlbkNhbnZhcyAmJiB0aGlzLnNjcmVlbkNhbnZhc1JlZikge1xuICAgICAgICB0aGlzLnNjcmVlbkNhbnZhc1JlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Qtbm9uZScpO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICB9XG4gIH07XG5cbiAgYW5ub3RhdGF0aW9uUHJldmlldyA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzY3JlZW5WaWRlbyA9IHRoaXMuc2NyZWVuVmlkZW9SZWYhLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCF0aGlzLnBhcmFtZXRlcnMubWFpblNjcmVlbkNhbnZhcykge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLm1haW5TY3JlZW5DYW52YXMgPSB0aGlzLnNjcmVlbkNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZU1haW5TY3JlZW5DYW52YXModGhpcy5wYXJhbWV0ZXJzLm1haW5TY3JlZW5DYW52YXMpO1xuICAgIH1cbiAgICBjb25zdCBhbm5vdGF0ZSA9IHRoaXMucGFyYW1ldGVycy5hbm5vdGF0ZVNjcmVlblN0cmVhbTtcblxuICAgIGlmIChcbiAgICAgIGFubm90YXRlICYmXG4gICAgICAoIXRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuIHx8XG4gICAgICAgICh0aGlzLmNsb25lZFN0cmVhbVNjcmVlbiAmJlxuICAgICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0ucmVhZHlTdGF0ZSA9PT0gJ2VuZGVkJykpXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFRyYWNrID0gdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuIS5nZXRWaWRlb1RyYWNrcygpWzBdO1xuICAgICAgY29uc3Qgb3JpZ2luYWxTZXR0aW5ncyA9IG9yaWdpbmFsVHJhY2suZ2V0U2V0dGluZ3MoKTtcbiAgICAgIGNvbnN0IGNsb25lZCA9IG9yaWdpbmFsVHJhY2suY2xvbmUoKTtcbiAgICAgIGF3YWl0IGNsb25lZC5hcHBseUNvbnN0cmFpbnRzKHtcbiAgICAgICAgd2lkdGg6IG9yaWdpbmFsU2V0dGluZ3Mud2lkdGgsXG4gICAgICAgIGhlaWdodDogb3JpZ2luYWxTZXR0aW5ncy5oZWlnaHQsXG4gICAgICAgIGZyYW1lUmF0ZTogb3JpZ2luYWxTZXR0aW5ncy5mcmFtZVJhdGUsXG4gICAgICAgIGFzcGVjdFJhdGlvOiBvcmlnaW5hbFNldHRpbmdzLmFzcGVjdFJhdGlvLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbiA9IG5ldyBNZWRpYVN0cmVhbShbY2xvbmVkXSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jbG9uZWRTdHJlYW1TY3JlZW4gJiZcbiAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbiAmJlxuICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0ucmVhZHlTdGF0ZSA9PT0gJ2VuZGVkJ1xuICAgICkge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuLnJlbW92ZVRyYWNrKFxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4uZ2V0VmlkZW9UcmFja3MoKVswXSxcbiAgICAgICk7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4uYWRkVHJhY2soXG4gICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKClbMF0uY2xvbmUoKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuKSB7XG4gICAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbi5nZXRWaWRlb1RyYWNrcygpWzBdLm9uZW5kZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5kaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbih7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgYXdhaXQgdGhpcy5wYXJhbWV0ZXJzLnN0b3BTaGFyZVNjcmVlbih7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFDYW52YXMgPSB0aGlzLnBhcmFtZXRlcnMubWFpblNjcmVlbkNhbnZhcztcbiAgICBjb25zdCBjdHggPSBtZWRpYUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIG1lZGlhQ2FudmFzLndpZHRoID0gdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuIS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkud2lkdGghO1xuICAgIG1lZGlhQ2FudmFzLmhlaWdodCA9IHRoaXMucGFyYW1ldGVyc1xuICAgICAgLmxvY2FsU3RyZWFtU2NyZWVuIS5nZXRWaWRlb1RyYWNrcygpWzBdXG4gICAgICAuZ2V0U2V0dGluZ3MoKS5oZWlnaHQhO1xuXG4gICAgaWYgKCFhbm5vdGF0ZSkge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnByb2Nlc3NlZFNjcmVlblN0cmVhbSA9IG51bGw7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlUHJvY2Vzc2VkU2NyZWVuU3RyZWFtKG51bGwpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhcHR1cmVTdHJlYW0gPSAoKSA9PiB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBtZWRpYUNhbnZhcy5jYXB0dXJlU3RyZWFtKDMwKTtcbiAgICAgIHRoaXMuYW5ub3RhdGlvbkNoZWNrSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG4gICAgICAgIGNhbnZhc0VsZW1lbnQgPSBwYXJhbXMuY2FudmFzU2NyZWVuYm9hcmQ7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGNhbnZhc0VsZW1lbnQhLmhlaWdodDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBjYW52YXNFbGVtZW50IS53aWR0aDtcbiAgICAgICAgY29uc3QgcmVmSGVpZ2h0ID0gcGFyYW1zLmxvY2FsU3RyZWFtU2NyZWVuIS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkuaGVpZ2h0ITtcbiAgICAgICAgY29uc3QgcmVmV2lkdGggPSBwYXJhbXMubG9jYWxTdHJlYW1TY3JlZW4hLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS53aWR0aCE7XG4gICAgICAgIGlmIChoZWlnaHQgIT09IHJlZkhlaWdodCB8fCB3aWR0aCAhPT0gcmVmV2lkdGgpIHtcbiAgICAgICAgICBjYW52YXNFbGVtZW50IS53aWR0aCA9IHJlZldpZHRoO1xuICAgICAgICAgIGNhbnZhc0VsZW1lbnQhLmhlaWdodCA9IHJlZkhlaWdodDtcbiAgICAgICAgICBtZWRpYUNhbnZhcy53aWR0aCA9IHJlZldpZHRoO1xuICAgICAgICAgIG1lZGlhQ2FudmFzLmhlaWdodCA9IHJlZkhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwMCk7XG4gICAgICB0aGlzLmFubm90YXRpb25JbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgZHJhd0NvbWJpbmVkKCk7XG4gICAgICB9LCAzMCk7XG4gICAgICByZXR1cm4gc3RyZWFtO1xuICAgIH07XG5cbiAgICBjb25zdCBhbm5vdGF0ZUltYWdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnByb2Nlc3NlZFNjcmVlblN0cmVhbSA9IGF3YWl0IGNhcHR1cmVTdHJlYW0oKTtcbiAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVQcm9jZXNzZWRTY3JlZW5TdHJlYW0odGhpcy5wYXJhbWV0ZXJzLnByb2Nlc3NlZFNjcmVlblN0cmVhbSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGFubm90YXRlVmlkZW8gPSB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbjtcbiAgICBpZiAoYW5ub3RhdGVWaWRlbyAmJiBhbm5vdGF0ZSkge1xuICAgICAgc2NyZWVuVmlkZW8uc3R5bGUud2lkdGggPSBgJHthbm5vdGF0ZVZpZGVvLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS53aWR0aH1weGA7XG4gICAgICBzY3JlZW5WaWRlby5zdHlsZS5oZWlnaHQgPSBgJHthbm5vdGF0ZVZpZGVvLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHR9cHhgO1xuICAgICAgc2NyZWVuVmlkZW8uc3JjT2JqZWN0ID0gYW5ub3RhdGVWaWRlbztcbiAgICAgIGF3YWl0IGFubm90YXRlSW1hZ2UoKTtcbiAgICB9XG5cbiAgICBsZXQgY2FudmFzRWxlbWVudCA9IHRoaXMucGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCkuY2FudmFzU2NyZWVuYm9hcmQ7XG4gICAgY2FudmFzRWxlbWVudCEud2lkdGggPSBtZWRpYUNhbnZhcy53aWR0aDtcbiAgICBjYW52YXNFbGVtZW50IS5oZWlnaHQgPSBtZWRpYUNhbnZhcy5oZWlnaHQ7XG5cbiAgICBjb25zdCBkcmF3Q29tYmluZWQgPSAoKSA9PiB7XG4gICAgICBjdHghLmNsZWFyUmVjdCgwLCAwLCBjYW52YXNFbGVtZW50IS53aWR0aCwgY2FudmFzRWxlbWVudCEuaGVpZ2h0KTtcbiAgICAgIGN0eCEuZHJhd0ltYWdlKHNjcmVlblZpZGVvLCAwLCAwLCBjYW52YXNFbGVtZW50IS53aWR0aCwgY2FudmFzRWxlbWVudCEuaGVpZ2h0KTtcbiAgICAgIGN0eCEuZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQhLCAwLCAwLCBjYW52YXNFbGVtZW50IS53aWR0aCwgY2FudmFzRWxlbWVudCEuaGVpZ2h0KTtcbiAgICAgIGN0eCEucmVzdG9yZSgpO1xuICAgIH07XG4gIH07XG5cbiAgaGFuZGxlU2NyZWVuVHJhbnNwb3J0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlbiEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4hLmdldFZpZGVvVHJhY2tzKClbMF0uaWQgPT09XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zY3JlZW5Qcm9kdWNlcj8udHJhY2shLmlkXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuICYmXG4gICAgICAgIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID4gMCAmJlxuICAgICAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbi5nZXRWaWRlb1RyYWNrcygpWzBdLnJlYWR5U3RhdGUgPT09ICdlbmRlZCdcbiAgICAgICkge1xuICAgICAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbi5yZW1vdmVUcmFjayh0aGlzLmNsb25lZFN0cmVhbVNjcmVlbi5nZXRWaWRlb1RyYWNrcygpWzBdKTtcbiAgICAgICAgdGhpcy5jbG9uZWRTdHJlYW1TY3JlZW4uYWRkVHJhY2soXG4gICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuIS5nZXRWaWRlb1RyYWNrcygpWzBdLmNsb25lKCksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4hLnJlbW92ZVRyYWNrKFxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4hLmdldFZpZGVvVHJhY2tzKClbMF0sXG4gICAgICApO1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuIS5hZGRUcmFjayhcbiAgICAgICAgdGhpcy5jbG9uZWRTdHJlYW1TY3JlZW4hLmdldFZpZGVvVHJhY2tzKClbMF0uY2xvbmUoKSxcbiAgICAgICk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5kaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbih7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgfTtcblxuICBzdG9wQW5ub3RhdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAodGhpcy5hbm5vdGF0aW9uSW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hbm5vdGF0aW9uSW50ZXJ2YWwpO1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFubm90YXRpb25DaGVja0ludGVydmFsKTtcbiAgICAgIHRoaXMuYW5ub3RhdGlvbkludGVydmFsID0gbnVsbDtcbiAgICAgIHRoaXMuYW5ub3RhdGlvbkNoZWNrSW50ZXJ2YWwgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmFtZXRlcnMucHJvY2Vzc2VkU2NyZWVuU3RyZWFtKSB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMucHJvY2Vzc2VkU2NyZWVuU3RyZWFtXG4gICAgICAgIC5nZXRUcmFja3MoKVxuICAgICAgICAuZm9yRWFjaCgodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2spID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMucHJvY2Vzc2VkU2NyZWVuU3RyZWFtID0gbnVsbDtcbiAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVQcm9jZXNzZWRTY3JlZW5TdHJlYW0obnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFyYW1ldGVycy5tYWluU2NyZWVuQ2FudmFzKSB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMubWFpblNjcmVlbkNhbnZhc1xuICAgICAgICA/LmdldENvbnRleHQoJzJkJykhXG4gICAgICAgIC5jbGVhclJlY3QoXG4gICAgICAgICAgMCxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5tYWluU2NyZWVuQ2FudmFzLndpZHRoLFxuICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5tYWluU2NyZWVuQ2FudmFzLmhlaWdodCxcbiAgICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgc3RvcEFsbFRyYWNrcyA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMubG9jYWxTdHJlYW1TY3JlZW4gJiZcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5sb2NhbFN0cmVhbVNjcmVlblxuICAgICAgICAgIC5nZXRWaWRlb1RyYWNrcygpXG4gICAgICAgICAgLmZvckVhY2goKHRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrKSA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlTG9jYWxTdHJlYW1TY3JlZW4obnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlTG9jYWxTdHJlYW1TY3JlZW4obnVsbCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuICYmIHRoaXMuY2xvbmVkU3RyZWFtU2NyZWVuLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbi5nZXRWaWRlb1RyYWNrcygpLmZvckVhY2goKHRyYWNrKSA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMucHJvY2Vzc2VkU2NyZWVuU3RyZWFtKSB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5wcm9jZXNzZWRTY3JlZW5TdHJlYW1cbiAgICAgICAgICAuZ2V0VHJhY2tzKClcbiAgICAgICAgICAuZm9yRWFjaCgodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2spID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVQcm9jZXNzZWRTY3JlZW5TdHJlYW0obnVsbCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICB9XG5cbiAgICB0aGlzLmNsb25lZFN0cmVhbVNjcmVlbiA9IG51bGw7XG4gIH07XG59XG4iLCI8ZGl2ICpuZ0lmPVwiaXNWaXNpYmxlXCIgY2xhc3M9XCJtb2RhbC1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5TY3JlZW4gQW5ub3RhdGlvbjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY2xvc2VcIiAoY2xpY2spPVwiaGlkZU1vZGFsKClcIj5cclxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVRpbWVzXCI+PC9mYS1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGhyIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICA8dmlkZW8gI3NjcmVlblZpZGVvIGlkPVwic2NyZWVuVmlkZW9cIiBjbGFzcz1cImQtbm9uZVwiIGF1dG9wbGF5PjwvdmlkZW8+XHJcbiAgICAgIDxjYW52YXMgI3NjcmVlbkNhbnZhcyBpZD1cInNjcmVlbkNhbnZhc1wiPjwvY2FudmFzPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=