speechrecorderng 3.9.7 → 3.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +478 -12
- package/esm2022/lib/action/action.mjs +1 -1
- package/esm2022/lib/audio/array_audio_buffer.mjs +1 -1
- package/esm2022/lib/audio/array_audio_buffer_input_stream.mjs +1 -1
- package/esm2022/lib/audio/audio_data_holder.mjs +1 -1
- package/esm2022/lib/audio/audio_display.mjs +4 -4
- package/esm2022/lib/audio/audio_player.mjs +4 -4
- package/esm2022/lib/audio/capture/capture.mjs +1 -1
- package/esm2022/lib/audio/context.mjs +1 -1
- package/esm2022/lib/audio/dsp/level_measure.mjs +5 -4
- package/esm2022/lib/audio/impl/wavreader.mjs +1 -1
- package/esm2022/lib/audio/impl/wavwriter.mjs +1 -1
- package/esm2022/lib/audio/inddb_audio_buffer.mjs +1 -1
- package/esm2022/lib/audio/io/stream.mjs +1 -1
- package/esm2022/lib/audio/net_audio_buffer.mjs +1 -1
- package/esm2022/lib/audio/persistor.mjs +1 -1
- package/esm2022/lib/audio/playback/array_audio_buffer_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/audio_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/audio_source_worklet_module_loader.mjs +1 -1
- package/esm2022/lib/audio/playback/inddb_audio_buffer_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/net_audio_buffer_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/player.mjs +1 -1
- package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +7 -7
- package/esm2022/lib/audio/ui/audio_display_control.mjs +4 -4
- package/esm2022/lib/audio/ui/audio_display_scroll_pane.mjs +4 -4
- package/esm2022/lib/audio/ui/audiosignal.mjs +4 -4
- package/esm2022/lib/audio/ui/container.mjs +4 -4
- package/esm2022/lib/audio/ui/livelevel.mjs +4 -4
- package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +3 -3
- package/esm2022/lib/audio/ui/sonagram.mjs +4 -4
- package/esm2022/lib/db/inddb.mjs +4 -4
- package/esm2022/lib/dsp/utils.mjs +1 -1
- package/esm2022/lib/io/BinaryReader.mjs +1 -1
- package/esm2022/lib/io/BinaryWriter.mjs +1 -1
- package/esm2022/lib/io/stream.mjs +1 -1
- package/esm2022/lib/math/complex.mjs +1 -1
- package/esm2022/lib/math/dft.mjs +1 -1
- package/esm2022/lib/net/uploader.mjs +1 -1
- package/esm2022/lib/recorder_component.mjs +1 -1
- package/esm2022/lib/speechrecorder/project/project.mjs +1 -1
- package/esm2022/lib/speechrecorder/project/project.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/recording.mjs +1 -1
- package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +1 -1
- package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/script/script.mjs +1 -1
- package/esm2022/lib/speechrecorder/script/script.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +7 -7
- package/esm2022/lib/speechrecorder/session/basicrecorder.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/controlpanel.mjs +22 -22
- package/esm2022/lib/speechrecorder/session/item.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/progress.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/prompting.mjs +16 -16
- package/esm2022/lib/speechrecorder/session/recorder_combi_pane.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/recording_file_cache.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/recording_list.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/session.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/session_finished_dialog.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/warning_bar.mjs +4 -4
- package/esm2022/lib/speechrecorder/spruploader.mjs +4 -4
- package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +4 -4
- package/esm2022/lib/speechrecorderng.component.mjs +4 -4
- package/esm2022/lib/speechrecorderng.module.mjs +9 -13
- package/esm2022/lib/spr.config.mjs +3 -3
- package/esm2022/lib/spr.module.version.mjs +2 -2
- package/esm2022/lib/ui/canvas_layer_comp.mjs +4 -4
- package/esm2022/lib/ui/intersection-observer.directive.mjs +4 -4
- package/esm2022/lib/ui/message_dialog.mjs +3 -3
- package/esm2022/lib/ui/recordingitem_display.mjs +7 -7
- package/esm2022/lib/ui/responsive_component.mjs +3 -3
- package/esm2022/lib/utils/scrollIntoViewToBottom.mjs +4 -4
- package/esm2022/lib/utils/ua-parser.mjs +1 -1
- package/esm2022/lib/utils/utils.mjs +1 -1
- package/esm2022/lib/utils/wake_lock.mjs +1 -1
- package/fesm2022/speechrecorderng.mjs +171 -174
- package/fesm2022/speechrecorderng.mjs.map +1 -1
- package/lib/speechrecorderng.module.d.ts +11 -12
- package/lib/spr.module.version.d.ts +1 -1
- package/package.json +13 -13
|
@@ -505,4 +505,4 @@ export class IndexedDbAudioInputStream {
|
|
|
505
505
|
this.framePos += n;
|
|
506
506
|
}
|
|
507
507
|
}
|
|
508
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZGJfYXVkaW9fYnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2luZGRiX2F1ZGlvX2J1ZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwQyxPQUFPLEVBQWMsZ0JBQWdCLEVBQTBCLE1BQU0scUJBQXFCLENBQUM7QUFFM0YsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsWUFBb0IsVUFBc0IsRUFBUyxVQUFpQjtRQUFoRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBTztJQUNwRSxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQXdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQXdCO1FBQ2xDLElBQUksRUFBRSxHQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxVQUFVLENBQU8sVUFBVSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2QyxJQUFJLFFBQVEsR0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsUUFBUSxDQUFDLFNBQVMsR0FBQyxHQUFFLEVBQUU7Z0JBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztnQkFDckQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixDQUFDLENBQUE7WUFDRCxRQUFRLENBQUMsT0FBTyxHQUFDLEdBQUUsRUFBRTtnQkFDbkIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsR0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakUsQ0FBQyxDQUFBO1lBQ0QsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFO2dCQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7Z0JBQ3ZFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixDQUFDLENBQUE7WUFDRCxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUM3QixVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLENBQUMsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUVGO0FBRUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGdCQUFnQjtJQUN4RCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksNEJBQTRCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQVNELFlBQW9CLDZCQUEwRCxFQUFTLGFBQXFCLEVBQVUsV0FBbUIsRUFBUyxjQUFxQixFQUFTLFNBQWdCLEVBQVUsS0FBWTtRQUNwTixLQUFLLEVBQUUsQ0FBQztRQURVLGtDQUE2QixHQUE3Qiw2QkFBNkIsQ0FBNkI7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQU87UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFPO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBTztRQU45TSxnQkFBVyxHQUFDLENBQUMsQ0FBQztRQUNkLGdCQUFXLEdBQVMsQ0FBQyxDQUFDO1FBQ3RCLFlBQU8sR0FBQyxLQUFLLENBQUM7UUFDZCxnQkFBVyxHQUFZLElBQUksQ0FBQztRQUtsQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxFQUFpQixFQUFDLEVBQVMsRUFBQyxFQUE2QixFQUFDLEtBQXVCO1FBRW5HLDRCQUE0QjtRQUM1QixJQUFJLElBQUksR0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksSUFBSSxHQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBQyxFQUFFLEVBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLElBQUksS0FBSyxHQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksSUFBSSxHQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLFNBQVMsR0FBQyxHQUFFLEVBQUU7WUFDakIsSUFBSSxFQUFFLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNuQixJQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBRTtnQkFDcEIsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsRUFBRSxDQUFDLE9BQU8sR0FBQyxDQUFDLEtBQUssRUFBQyxFQUFFO29CQUNsQixLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckMsQ0FBQyxDQUFBO2dCQUNELEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFDLEdBQUUsRUFBRTtvQkFDNUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNULENBQUMsQ0FBQTtnQkFDRCxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBQyxDQUFDLEtBQUssRUFBQyxFQUFFO1lBQ3BCLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQTtJQUVILENBQUM7SUFFTyxhQUFhLENBQUMsRUFBaUIsRUFBQyxFQUFTLEVBQUMsS0FBYyxFQUFDLEtBQXVCO1FBQ3RGLDZLQUE2SztRQUM3SyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxNQUFNLEVBQUMsRUFBRTtZQUMvQixJQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBQztnQkFDM0Isc0VBQXNFO2dCQUN0RSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3hDO2lCQUFJO2dCQUNILHdGQUF3RjtnQkFDeEYsS0FBSyxFQUFFLENBQUM7YUFDVDtRQUNILENBQUMsRUFBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ1AsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBK0I7UUFFbEQsT0FBTyxJQUFJLFVBQVUsQ0FBTyxVQUFVLENBQUMsRUFBRTtZQUV2QyxJQUFJLElBQUksQ0FBQyw2QkFBNkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNwRCxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUM3SCxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFbkYsSUFBSTtvQkFDRixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RCLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ2hDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztvQkFDWixLQUFLLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFO3dCQUNyRCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7d0JBQ2YsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUU7NEJBQzdDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDOUIsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7NEJBQ3RCLGdEQUFnRDs0QkFDaEQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUMzRCxJQUFJLEVBQUUsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFDN0MsNkRBQTZEOzRCQUM3RCxFQUFFLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtnQ0FDbEIsbURBQW1EO2dDQUNuRCx5REFBeUQ7Z0NBQ3pELGlCQUFpQjtnQ0FDakIsSUFBSTs0QkFDTixDQUFDLENBQUE7NEJBQ0QsRUFBRSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7Z0NBQ2hCLElBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29DQUNwQiwyQkFBMkI7b0NBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEdBQUcsS0FBSyxDQUFDLFVBQVUsR0FBRyx3QkFBd0IsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7aUNBQ3hHOzRCQUNILENBQUMsQ0FBQTt5QkFDRjt3QkFDRCxHQUFHLElBQUksTUFBTSxDQUFDO3dCQUNkLElBQUksQ0FBQyxTQUFTLElBQUUsTUFBTSxDQUFDO3FCQUN4QjtvQkFDRCxJQUFJLENBQUMsV0FBVyxJQUFJLFVBQVUsQ0FBQztvQkFFL0IsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFO3dCQUNsQixJQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTs0QkFDcEIsMkJBQTJCOzRCQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLCtEQUErRCxHQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDeEYsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO3lCQUM3Qjt3QkFDRCxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDN0IsQ0FBQyxDQUFBO29CQUNELEVBQUUsQ0FBQyxPQUFPLEdBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRTt3QkFDZixvREFBb0Q7d0JBQ3BELElBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFOzRCQUNwQiwyQkFBMkI7NEJBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUVBQWlFLEdBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUMxRixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7eUJBQzdCO3dCQUNELFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3QixDQUFDLENBQUE7b0JBQ0QsRUFBRSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFO3dCQUNyQixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3hCLENBQUMsQ0FBQTtvQkFDRCxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ2I7Z0JBQUMsT0FBTyxHQUFHLEVBQUU7b0JBQ1osVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUNsRTthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLDRCQUF5RCxFQUFFLFdBQXVCO1FBRTVHLE9BQU8sSUFBSSxVQUFVLENBQXVCLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZELElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN2QyxJQUFJLEVBQUUsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ2hDLElBQUksY0FBYyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFFeEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDOUcsR0FBRyxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FDL0M7Z0JBQ0UsSUFBSSxFQUFFLEdBQUUsRUFBRTtvQkFDUixVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QixDQUFDO2dCQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7b0JBQ2IsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4QixDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBQyxFQUFFO29CQUNaLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hCLENBQUM7YUFDRixDQUNGLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxXQUF1QjtRQUM1QyxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7U0FDL0U7UUFDRCxJQUFJLEdBQUcsR0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7UUFDckMsSUFBRyxJQUFJLENBQUMsYUFBYSxLQUFJLEdBQUcsRUFBQztZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxHQUFDLEdBQUcsR0FBQyw0Q0FBNEMsR0FBQyxJQUFJLENBQUMsYUFBYSxHQUFDLDJDQUEyQyxDQUFDLENBQUM7U0FDcks7UUFDRCxJQUFJLEVBQUUsR0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQzlCLElBQUcsRUFBRSxLQUFHLElBQUksQ0FBQyxXQUFXLEVBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsR0FBQyxFQUFFLEdBQUMsOENBQThDLEdBQUMsSUFBSSxDQUFDLFdBQVcsR0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQy9KO1FBRUQsSUFBSSxJQUFJLEdBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFHLElBQUksR0FBQyxJQUFJLENBQUMsY0FBYyxFQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLEdBQUMsSUFBSSxHQUFDLHNEQUFzRCxHQUFDLElBQUksQ0FBQyxjQUFjLEdBQUMscURBQXFELENBQUMsQ0FBQztTQUN4TTtRQUNELE9BQU8sSUFBSSxVQUFVLENBQU8sVUFBVSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsNkJBQTZCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDcEQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDckUsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25GLElBQUk7b0JBRUEsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUU7d0JBQzdDLElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQzNDLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ25ELElBQUk7NEJBQ0YsSUFBSSxFQUFFLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7NEJBQzdDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQTs0QkFDekIsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dDQUNsQix5Q0FBeUM7Z0NBQ3pDLHFFQUFxRTtnQ0FDckUsSUFBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7b0NBQ3BCLDJCQUEyQjtvQ0FDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUMsVUFBVSxHQUFHLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQ0FDeEc7Z0NBQ0QsNkJBQTZCOzRCQUMvQixDQUFDLENBQUE7eUJBQ0Y7d0JBQUEsT0FBTSxJQUFRLEVBQUM7NEJBQ2QsSUFBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0NBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0NBQStDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0NBQ3RFLElBQUksQ0FBQyxXQUFXLEdBQUMsQ0FBQyxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFBLElBQUksQ0FBQSxDQUFDLENBQUEsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7NkJBQy9EOzRCQUNELFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ3hCO3FCQUNGO29CQUNELElBQUksQ0FBQyxTQUFTLElBQUUsSUFBSSxDQUFDO29CQUV2QixFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUU7d0JBQ2xCLElBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFOzRCQUNwQiwyQkFBMkI7NEJBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0RBQStELEdBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUN4RixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7eUJBQzdCO3dCQUNELFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3QixDQUFDLENBQUE7b0JBQ0QsRUFBRSxDQUFDLE9BQU8sR0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFO3dCQUNmLG9EQUFvRDt3QkFDcEQsSUFBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7NEJBQ3BCLDJCQUEyQjs0QkFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxpRUFBaUUsR0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQzFGLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQzt5QkFDN0I7d0JBQ0QsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzdCLENBQUMsQ0FBQTtvQkFDRCxFQUFFLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUU7d0JBQ3JCLHdDQUF3Qzt3QkFDeEMsSUFBRyxJQUFJLEdBQUMsSUFBSSxDQUFDLGNBQWMsRUFBQzs0QkFDMUIsYUFBYTs0QkFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7eUJBQ2I7d0JBQ0QsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNsQixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3hCLENBQUMsQ0FBQTtvQkFDRCxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ2I7Z0JBQUMsT0FBTyxHQUFHLEVBQUU7b0JBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsR0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDckMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUNsRTthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLFVBQVUsQ0FBTyxDQUFDLFVBQVUsRUFBQyxFQUFFO1lBQ3hDLElBQUksRUFBRSxHQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEdBQUUsRUFBRTtnQkFDMUIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsQixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsQ0FBQyxFQUFDLENBQUMsR0FBRyxFQUFDLEVBQUU7Z0JBQ1AsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLHFDQUFxQyxHQUFDLElBQUksQ0FBQyxZQUFZLEdBQUMsaUJBQWlCLEdBQUMsSUFBSSxDQUFDLFVBQVUsR0FBQyx3QkFBd0IsR0FBQyxJQUFJLENBQUMsY0FBYyxHQUFDLHNCQUFzQixHQUFDLElBQUksQ0FBQyxVQUFVLEdBQUMsa0JBQWtCLEdBQUMsSUFBSSxDQUFDLFFBQVEsR0FBQyxZQUFZLEdBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ25QLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxtQ0FBbUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsY0FBYyxHQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLGFBQWEsR0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsT0FBTyxJQUFJLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FFRjtBQUdELE1BQU0sT0FBTywyQkFBMkI7SUFLdEMsWUFBb0IsUUFBNkI7UUFBN0IsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFIekMsWUFBTyxHQUFDLENBQUMsQ0FBQztRQUNWLGFBQVEsR0FBcUIsSUFBSSxDQUFDO0lBRzFDLENBQUM7SUFFTyxLQUFLLENBQUMsRUFBaUIsRUFBQyxFQUFTLEVBQUMsRUFBd0MsRUFBQyxLQUF1QjtRQUV4Ryw0QkFBNEI7UUFDNUIsSUFBSSxJQUFJLEdBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLEdBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RCxJQUFJLEtBQUssR0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztRQUV2QyxJQUFJLEVBQUUsR0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLEVBQUUsQ0FBQyxTQUFTLEdBQUMsR0FBRSxFQUFFO1lBQ2YsSUFBSSxFQUFFLEdBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEdBQUcsQ0FBQztZQUNSLElBQUksS0FBSyxHQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDcEIsSUFBRyxLQUFLLElBQUUsQ0FBQyxFQUFDO2dCQUNWLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDVCxPQUFPO2FBQ1I7WUFDRCxJQUFHLEtBQUssS0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBQztnQkFDcEMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLG9DQUFvQyxHQUFDLEtBQUssR0FBQyx1Q0FBdUMsR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNwSSxPQUFPO2FBQ0c7WUFDWixJQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFDO2dCQUNiLEdBQUcsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDWDtZQUNELElBQUksTUFBTSxHQUFDLElBQUksS0FBSyxFQUFnQixDQUFDO1lBQ3JDLElBQUksS0FBSyxHQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDckIsS0FBSSxJQUFJLEVBQUUsR0FBQyxDQUFDLEVBQUMsRUFBRSxHQUFDLEtBQUssRUFBQyxFQUFFLEVBQUUsRUFBQztnQkFDekIsSUFBSSxLQUFLLEdBQUMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLEtBQUksSUFBSSxFQUFFLEdBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBQyxLQUFLLEVBQUMsRUFBRSxFQUFFLEVBQUM7b0JBQ3pCLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3RCO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEI7WUFDRCxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDYixDQUFDLENBQUE7UUFDRCxFQUFFLENBQUMsT0FBTyxHQUFDLENBQUMsS0FBSyxFQUFDLEVBQUU7WUFDbEIsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFBO0lBRUgsQ0FBQztJQUVPLFNBQVMsQ0FBQyxNQUFxQixFQUFDLFFBQStFLEVBQUMsUUFBb0Q7UUFDMUssSUFBSSxTQUFTLEdBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFHLFNBQVMsR0FBQyxDQUFDLEVBQUU7WUFDZCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUU5Qiw4SEFBOEg7WUFDOUgsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFO2dCQUN6RCw2REFBNkQ7Z0JBQzdELDRFQUE0RTtnQkFDNUUsSUFBSSxDQUFDLFFBQVEsR0FBQyxJQUFJLENBQUM7Z0JBQ25CLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDZCxRQUFRLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQztnQkFDakIsUUFBUSxDQUFDLFdBQVcsSUFBRSxTQUFTLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsNERBQTREO2dCQUM1RCxRQUFRLENBQUMsS0FBSyxHQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQkFDdEQsSUFBSSxPQUFPLEdBQUcsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pDLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQztnQkFFdkIsSUFBSSxNQUFNLEdBQUcsT0FBTyxFQUFFO29CQUNwQixNQUFNLEdBQUcsT0FBTyxDQUFDO2lCQUNsQjtnQkFDRCxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFO29CQUM5QixNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztpQkFDNUI7Z0JBQ0QsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRTtvQkFDckMsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRTt3QkFDbEMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUMxRTtpQkFDRjtnQkFDRCxRQUFRLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQztnQkFDMUIsUUFBUSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUM7Z0JBQzVCLFFBQVEsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDO2dCQUM1QixRQUFRLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQztnQkFDekIsSUFBSSxRQUFRLENBQUMsS0FBSyxJQUFJLFNBQVMsRUFBRTtvQkFDL0IsbUJBQW1CO29CQUNuQixJQUFJLENBQUMsUUFBUSxHQUFDLElBQUksQ0FBQztvQkFDbkIsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNkLElBQUksQ0FBQyxPQUFPLEdBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDekIsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQ25CLFFBQVEsQ0FBQyxXQUFXLElBQUUsU0FBUyxDQUFDO2lCQUNqQzthQUNGO1NBQ0Y7SUFFSCxDQUFDO0lBRU8sUUFBUSxDQUFDLEVBQWlCLEVBQUMsUUFBK0UsRUFBQyxRQUFvRSxFQUFDLEVBQXdCLEVBQUMsS0FBMkIsRUFBQyxLQUF1QjtRQUNsUSxtT0FBbU87UUFDbk8sSUFBRyxJQUFJLENBQUMsUUFBUSxFQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCwrRUFBK0U7WUFDL0UsSUFBRyxRQUFRLENBQUMsUUFBUSxLQUFHLENBQUMsRUFBQztnQkFDdkIsNkZBQTZGO2dCQUM3RixLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3hCO2lCQUFLO2dCQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQzthQUN6RDtTQUNGO2FBQUs7WUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksTUFBTSxFQUFFO29CQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7b0JBRXZCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDM0MsK0VBQStFO29CQUMvRSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFO3dCQUMzQiw2RkFBNkY7d0JBQzdGLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQ3hCO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztxQkFDeEQ7aUJBQ0Y7cUJBQU07b0JBQ0wsaUdBQWlHO29CQUNqRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN4QjtZQUNILENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNULEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBR0QsU0FBUyxDQUFDLFFBQWUsRUFBQyxRQUFlLEVBQUMsSUFBbUI7UUFDM0QsT0FBTyxJQUFJLFVBQVUsQ0FBUyxDQUFDLFVBQVUsRUFBQyxFQUFFO1lBQzFDLElBQUksRUFBRSxHQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEUsSUFBSSxFQUFFLEdBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVFLGNBQWM7WUFDZCxJQUFJLEtBQUssR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNELElBQUcsS0FBSyxLQUFHLElBQUksQ0FBQyxPQUFPLEVBQUM7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUMsS0FBSyxDQUFDO2dCQUNuQixJQUFJLENBQUMsUUFBUSxHQUFDLElBQUksQ0FBQzthQUNwQjtZQUNELElBQUksV0FBVyxHQUFDLEtBQUssR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUNsRCxJQUFJLFFBQVEsR0FBQyxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUMsQ0FBQztZQUN6RSxJQUFJLFFBQVEsR0FBQyxFQUFDLFdBQVcsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBQyxDQUFDLEVBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLENBQUMsR0FBRyxFQUFDLEVBQUUsR0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFhLEVBQUMsRUFBRTtnQkFDNUQsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBRTtnQkFDTixVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUMsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtJQUlwQyxZQUFvQixPQUE0QjtRQUE1QixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUZ4QyxhQUFRLEdBQVEsQ0FBQyxDQUFDO1FBR3RCLElBQUksQ0FBQyxVQUFVLEdBQUMsSUFBSSwyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUE0QjtRQUNsQyxPQUFPLElBQUksVUFBVSxDQUFTLE1BQU0sQ0FBQSxFQUFFO1lBQ3BDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQzlELElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNiLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO3dCQUN0QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNwQixDQUFDO29CQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7d0JBQ2IsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNwQixDQUFDO29CQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3BCLENBQUM7aUJBQ0YsQ0FBQyxDQUFBO2FBQ0g7aUJBQUk7Z0JBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDZixNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbkI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBUztRQUNsQixJQUFJLENBQUMsUUFBUSxJQUFFLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7QXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSwgRmxvYXQzMkFycmF5SW5wdXRTdHJlYW19IGZyb20gXCIuLi9pby9zdHJlYW1cIjtcclxuaW1wb3J0IHtVVUlEfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcclxuaW1wb3J0IHtBdWRpb1NvdXJjZSwgQmFzaWNBdWRpb1NvdXJjZSwgUmFuZG9tQWNjZXNzQXVkaW9TdHJlYW19IGZyb20gXCIuL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldHtcclxuICBnZXQgaW5kZXhlZERiKCk6IElEQkRhdGFiYXNlIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmRleGVkRGI7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RvcmVOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RvcmVOYW1lO1xyXG4gIH1cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbmRleGVkRGI6SURCRGF0YWJhc2UscHJpdmF0ZSBfc3RvcmVOYW1lOnN0cmluZykge1xyXG4gIH1cclxuXHJcbiAgdHJhbnNhY3Rpb24obW9kZT86SURCVHJhbnNhY3Rpb25Nb2RlKTpJREJUcmFuc2FjdGlvbntcclxuICAgIHJldHVybiB0aGlzLl9pbmRleGVkRGIudHJhbnNhY3Rpb24odGhpcy5zdG9yZU5hbWUsIG1vZGUpO1xyXG4gIH1cclxuXHJcbiAgb2JqZWN0U3RvcmUobW9kZT86SURCVHJhbnNhY3Rpb25Nb2RlICl7XHJcbiAgICBsZXQgdHI9dGhpcy50cmFuc2FjdGlvbihtb2RlKTtcclxuICAgIHJldHVybiB0ci5vYmplY3RTdG9yZSh0aGlzLl9zdG9yZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQWxsKCk6T2JzZXJ2YWJsZTx2b2lkPntcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2b2lkPihzdWJzY3JpYmVyID0+IHtcclxuICAgICAgbGV0IG9zID0gdGhpcy5vYmplY3RTdG9yZSgncmVhZHdyaXRlJyk7XHJcbiAgICAgIGxldCBjbGVhclJlcT1vcy5jbGVhcigpO1xyXG4gICAgICBjbGVhclJlcS5vbnN1Y2Nlc3M9KCk9PntcclxuICAgICAgICBjb25zb2xlLmRlYnVnKFwiQ2xlYXJlZCBhdWRpbyBzdG9yYWdlIG9iamVjdCBzdG9yZS5cIik7XHJcbiAgICAgICAgb3MudHJhbnNhY3Rpb24uY29tbWl0KCk7XHJcbiAgICAgIH1cclxuICAgICAgY2xlYXJSZXEub25lcnJvcj0oKT0+e1xyXG4gICAgICAgIG9zLnRyYW5zYWN0aW9uLmFib3J0KCk7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkNvdWxkIG5vdCBjbGVhciBvYmplY3Qgc3RvcmU6IFwiK2NsZWFyUmVxLmVycm9yKTtcclxuICAgICAgfVxyXG4gICAgICBvcy50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoXCJUcmFuc2FjdGlvbiBjb21wbGV0ZTogQ2xlYXIgYXVkaW8gc3RvcmFnZSBvYmplY3Qgc3RvcmUuXCIpO1xyXG4gICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIG9zLnRyYW5zYWN0aW9uLm9uZXJyb3IgPSAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBJbmRleGVkRGJBdWRpb0J1ZmZlciBleHRlbmRzIEJhc2ljQXVkaW9Tb3VyY2UgaW1wbGVtZW50cyBBdWRpb1NvdXJjZXtcclxuICBnZXQgY2h1bmtGcmFtZUxlbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NodW5rRnJhbWVMZW47XHJcbiAgfVxyXG4gIGdldCBwZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0KCk6IFBlcnNpc3RlbnRBdWRpb1N0b3JhZ2VUYXJnZXQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BlcnNpc3RlbnRBdWRpb1N0b3JhZ2VUYXJnZXQ7XHJcbiAgfVxyXG4gIGdldCB1dWlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXVpZDtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIF9jaHVua0NvdW50PTA7XHJcbiAgcHJpdmF0ZSBpbmREYkNoa0lkeDogbnVtYmVyPTA7XHJcbiAgcHJpdmF0ZSBfc2VhbGVkPWZhbHNlO1xyXG4gIHByaXZhdGUgX3N0b3JlRXJyb3I6RXJyb3J8bnVsbD1udWxsO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldDpQZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0LHByaXZhdGUgX2NoYW5uZWxDb3VudDogbnVtYmVyLCBwcml2YXRlIF9zYW1wbGVSYXRlOiBudW1iZXIscHJpdmF0ZSBfY2h1bmtGcmFtZUxlbjpudW1iZXIscHJpdmF0ZSBfZnJhbWVMZW46bnVtYmVyLCBwcml2YXRlIF91dWlkOnN0cmluZykge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMucmVhZHkoKTtcclxuICB9XHJcblxyXG4gIGdldCBjaGFubmVsQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ291bnQ7XHJcbiAgfVxyXG5cclxuICBzZWFsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VhbGVkO1xyXG4gIH1cclxuXHJcbiAgc2VhbCgpOnZvaWR7XHJcbiAgICB0aGlzLl9zZWFsZWQ9dHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVsZXRlQ2h1bmsob3M6SURCT2JqZWN0U3RvcmUsY2k6bnVtYmVyLGNiOihrZXlzOklEQlZhbGlkS2V5W10pPT52b2lkLGVyckNiOihlcnI6RXJyb3IpPT52b2lkKXtcclxuXHJcbiAgICAvLyBCdWlsZCBib3VuZHMgZm9yIGNoYW5uZWxzXHJcbiAgICBsZXQgbElkeD1bdGhpcy5fdXVpZCxjaSwwXTtcclxuICAgIGxldCBoSWR4PVt0aGlzLl91dWlkLGNpLHRoaXMuX2NoYW5uZWxDb3VudF07XHJcbiAgICBsZXQgY2hzS3I9SURCS2V5UmFuZ2UuYm91bmQobElkeCxoSWR4KTtcclxuXHJcbiAgICBsZXQgZXhScT1vcy5nZXRBbGxLZXlzKGNoc0tyKTtcclxuXHJcbiAgICBleFJxLm9uc3VjY2Vzcz0oKT0+e1xyXG4gICAgICBsZXQgY2M9ZXhScS5yZXN1bHQ7XHJcbiAgICAgIGlmKGNjICYmIGNjLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgbGV0IHJxID0gb3MuZGVsZXRlKGNoc0tyKTtcclxuICAgICAgICBycS5vbmVycm9yPShlcnJFdik9PntcclxuICAgICAgICAgIGVyckNiKG5ldyBFcnJvcihlcnJFdi50b1N0cmluZygpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9zLnRyYW5zYWN0aW9uLm9uY29tcGxldGU9KCk9PntcclxuICAgICAgICAgIGNiKGNjKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3MudHJhbnNhY3Rpb24uY29tbWl0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGV4UnEub25lcnJvcj0oZXJyRXYpPT57XHJcbiAgICAgIGVyckNiKG5ldyBFcnJvcihlcnJFdi50b1N0cmluZygpKSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWxldGVBbGxCdWZzKG9zOklEQk9iamVjdFN0b3JlLGNpOm51bWJlcixjYkVuZDooKT0+dm9pZCxjYkVycjooZXJyOkVycm9yKT0+dm9pZCl7XHJcbiAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmczogZnJhbWVQb3M6JytmcmFtZVBvcysnLCBmcmFtZUxlbjogJytmcmFtZUxlbisnLCBmaWxsZWQ6ICcrZmlsbGVkKycsIHNyY0ZyYW1lUG9zOiAnK3NyY0ZyYW1lUG9zKycsY2k6ICcrY2krJywgY2NQb3M6ICcrY2NQb3MpO1xyXG4gICAgdGhpcy5kZWxldGVDaHVuayhvcyxjaSwoY2NLZXlzKT0+e1xyXG4gICAgICBpZihjY0tleXMgJiYgY2NLZXlzLmxlbmd0aD4wKXtcclxuICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmcyBmcmFtZUxlbjogJytmcmFtZUxlbik7XHJcbiAgICAgICAgY2krKztcclxuICAgICAgICB0aGlzLmRlbGV0ZUFsbEJ1ZnMob3MsY2ksY2JFbmQsIGNiRXJyKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgKGNodW5rIG5vdCBmb3VuZCkgY2FsbDogY2JlbmQgJytmaWxsZWQpO1xyXG4gICAgICAgIGNiRW5kKCk7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycik9PntcclxuICAgICAgY2JFcnIoZXJyKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldCBzYW1wbGVSYXRlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2FtcGxlUmF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBmcmFtZUxlbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZyYW1lTGVuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNodW5rQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaHVua0NvdW50O1xyXG4gIH1cclxuXHJcbiAgYXBwZW5kUmF3QXVkaW9EYXRhKGRhdGE6QXJyYXk8QXJyYXk8RmxvYXQzMkFycmF5Pj4pOk9ic2VydmFibGU8dm9pZD57XHJcblxyXG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2b2lkPihzdWJzY3JpYmVyID0+IHtcclxuXHJcbiAgICBpZiAodGhpcy5fcGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldCAmJiB0aGlzLl91dWlkKSB7XHJcbiAgICAgIGxldCB0ciA9IHRoaXMuX3BlcnNpc3RlbnRBdWRpb1N0b3JhZ2VUYXJnZXQuaW5kZXhlZERiLnRyYW5zYWN0aW9uKHRoaXMuX3BlcnNpc3RlbnRBdWRpb1N0b3JhZ2VUYXJnZXQuc3RvcmVOYW1lLCAncmVhZHdyaXRlJyk7XHJcbiAgICAgIGxldCByZWNGaWxlT2JqU3RvcmUgPSB0ci5vYmplY3RTdG9yZSh0aGlzLl9wZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0LnN0b3JlTmFtZSk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBjaDBEYXRhID0gZGF0YVswXTtcclxuICAgICAgICBsZXQgZGF0YUNoa0NudCA9IGNoMERhdGEubGVuZ3RoO1xyXG4gICAgICAgIGxldCBwb3MgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGNoQ2tJZHggPSAwOyBjaENrSWR4IDwgZGF0YUNoa0NudDsgY2hDa0lkeCsrKSB7XHJcbiAgICAgICAgICBsZXQgYnVmTGVuID0gMDtcclxuICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCB0aGlzLmNoYW5uZWxDb3VudDsgY2grKykge1xyXG4gICAgICAgICAgICBsZXQgY2hDaGsgPSBkYXRhW2NoXVtjaENrSWR4XTtcclxuICAgICAgICAgICAgYnVmTGVuID0gY2hDaGsubGVuZ3RoO1xyXG4gICAgICAgICAgICAvL2xldCBjYWNoZUlkID0gdXVpZCArICdfJyArIGNoICsgJ18nICsgY2hDa0lkeDtcclxuICAgICAgICAgICAgbGV0IGNoa0RiSWQgPSBbdGhpcy5fdXVpZCwgdGhpcy5pbmREYkNoa0lkeCArIGNoQ2tJZHgsIGNoXTtcclxuICAgICAgICAgICAgbGV0IGNyID0gcmVjRmlsZU9ialN0b3JlLmFkZChjaENoaywgY2hrRGJJZCk7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkFkZGVkOiBcIitjaCtcIiBcIisodGhpcy5pbmREYkNoa0lkeCtjaENrSWR4KSk7XHJcbiAgICAgICAgICAgIGNyLm9uc3VjY2VzcyA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJTdG9yZWQgYXVkaW8gZGF0YSB0byBpbmRleGVkIGRiXCIpO1xyXG4gICAgICAgICAgICAgIC8vIGlmKGNoQ2tJZHg+PSBkYXRhQ2hrQ250LTEgJiYgY2g+PXRoaXMuY2hhbm5lbENvdW50LTEpe1xyXG4gICAgICAgICAgICAgIC8vICAgdHIuY29tbWl0KCk7XHJcbiAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNyLm9uZXJyb3IgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYoIXRoaXMuX3N0b3JlRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIC8vIE9ubHkgbG9nIHRoZSBmaXJzdCBlcnJvclxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHN0b3JpbmcgYXVkaW8gZGF0YSBvZiBcIiArIGNoQ2hrLmJ5dGVMZW5ndGggKyBcIiBieXRlcyB0byBpbmRleGVkIGRiOiBcIiArIGNyLmVycm9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBvcyArPSBidWZMZW47XHJcbiAgICAgICAgICB0aGlzLl9mcmFtZUxlbis9YnVmTGVuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluZERiQ2hrSWR4ICs9IGRhdGFDaGtDbnQ7XHJcblxyXG4gICAgICAgIHRyLm9uZXJyb3IgPSAoZXYpID0+IHtcclxuICAgICAgICAgIGlmKCF0aGlzLl9zdG9yZUVycm9yKSB7XHJcbiAgICAgICAgICAgIC8vIE9ubHkgbG9nIHRoZSBmaXJzdCBlcnJvclxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHN0b3JlIGF1ZGlvIGRhdGEgdG8gaW5kZXhlZCBkYiwgdHJhbnNhY3Rpb24gZXJyb3I6IFwiK3RyLmVycm9yKTtcclxuICAgICAgICAgICAgdGhpcy5fc3RvcmVFcnJvciA9IHRyLmVycm9yO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3Vic2NyaWJlci5lcnJvcih0ci5lcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyLm9uYWJvcnQ9KGV2KT0+e1xyXG4gICAgICAgICAgLy8gSWYgQ2hyb21lIHJlYWNoZXMgcXVvdGEgaXQgYWJvcnRzIHRoZSB0cmFuc2FjdGlvblxyXG4gICAgICAgICAgaWYoIXRoaXMuX3N0b3JlRXJyb3IpIHtcclxuICAgICAgICAgICAgLy8gT25seSBsb2cgdGhlIGZpcnN0IGVycm9yXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gc3RvcmUgYXVkaW8gZGF0YSB0byBpbmRleGVkIGRiLCB0cmFuc2FjdGlvbiBhYm9ydGVkOiBcIit0ci5lcnJvcik7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3JlRXJyb3IgPSB0ci5lcnJvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IodHIuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0ci5vbmNvbXBsZXRlID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyLmNvbW1pdCgpO1xyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBzdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcignVHJhbnNmZXIgYXVkaW8gZGF0YSBlcnJvcjogJyArIGVycikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUNodW5rQXVkaW9CdWZmZXIocGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldDpQZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0ICxhdWRpb0J1ZmZlcjpBdWRpb0J1ZmZlcik6T2JzZXJ2YWJsZTxJbmRleGVkRGJBdWRpb0J1ZmZlcj57XHJcblxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEluZGV4ZWREYkF1ZGlvQnVmZmVyPihzdWJzY3JpYmVyID0+IHtcclxuICAgICAgbGV0IGNocyA9IGF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7XHJcbiAgICAgIGxldCBzciA9IGF1ZGlvQnVmZmVyLnNhbXBsZVJhdGU7XHJcbiAgICAgIGxldCBjaGtGcmFtZUxlbmd0aCA9IGF1ZGlvQnVmZmVyLmxlbmd0aDtcclxuXHJcbiAgICAgIGxldCBpYWIgPSBuZXcgSW5kZXhlZERiQXVkaW9CdWZmZXIocGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldCwgY2hzLCBzciwgY2hrRnJhbWVMZW5ndGgsIDAsIFVVSUQuZ2VuZXJhdGUoKSk7XHJcbiAgICAgIGlhYi5hcHBlbmRDaHVua0F1ZGlvQnVmZmVyKGF1ZGlvQnVmZmVyKS5zdWJzY3JpYmUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmV4dDogKCk9PntcclxuICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGlhYik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKT0+e1xyXG4gICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFwcGVuZENodW5rQXVkaW9CdWZmZXIoYXVkaW9CdWZmZXI6QXVkaW9CdWZmZXIpe1xyXG4gICAgaWYodGhpcy5fc2VhbGVkKXtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYXBwZW5kIGF1ZGlvIGJ1ZmZlciB0byBhbHJlYWR5IHNlYWxlZCBhdWRpbyBidWZmZXIuJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgY2hzPWF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7XHJcbiAgICBpZih0aGlzLl9jaGFubmVsQ291bnQhPT0gY2hzKXtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYXBwZW5kIGF1ZGlvIGJ1ZmZlciB3aXRoICcrY2hzKycgY2hhbm5lbHMgdG8gdGhpcyBhcnJheSBhdWRpbyBidWZmZXIgd2l0aCAnK3RoaXMuX2NoYW5uZWxDb3VudCsnIGNoYW5uZWxzLiBOdW1iZXIgb2YgY2hhbm5lbHMgbXVzdCBtYXRjaC4nKTtcclxuICAgIH1cclxuICAgIGxldCBzcj1hdWRpb0J1ZmZlci5zYW1wbGVSYXRlO1xyXG4gICAgaWYoc3IhPT10aGlzLl9zYW1wbGVSYXRlKXtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYXBwZW5kIGF1ZGlvIGJ1ZmZlciB3aXRoIHNhbXBsZXJhdGUgJytzcisnIHRvIHRoaXMgYXJyYXkgYXVkaW8gYnVmZmVyIHdpdGggc2FtcGxlcmF0ZSAnK3RoaXMuX3NhbXBsZVJhdGUrJy4gU2FtcGxlcmF0ZXMgbXVzdCBtYXRjaC4nKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYWJGbD1hdWRpb0J1ZmZlci5sZW5ndGg7XHJcbiAgICBpZihhYkZsPnRoaXMuX2NodW5rRnJhbWVMZW4pe1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBhcHBlbmQgYXVkaW8gYnVmZmVyIHdpdGggZnJhbWUgbGVuZ3RoICcrYWJGbCsnIHRvIHRoaXMgYXJyYXkgYXVkaW8gYnVmZmVyIHdpdGggY2h1bmsgZnJhbWUgbGVuZ3RoICcrdGhpcy5fY2h1bmtGcmFtZUxlbisnLiBDaHVuayBsZW5ndGggbXVzdCBiZSBlcXVhbCBvciBsZXNzIGlmIGxhc3QgY2h1bmsuJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dm9pZD4oc3Vic2NyaWJlciA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl9wZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0ICYmIHRoaXMuX3V1aWQpIHtcclxuICAgICAgICBsZXQgdHIgPSB0aGlzLl9wZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0LnRyYW5zYWN0aW9uKCdyZWFkd3JpdGUnKTtcclxuICAgICAgICBsZXQgcmVjRmlsZU9ialN0b3JlID0gdHIub2JqZWN0U3RvcmUodGhpcy5fcGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldC5zdG9yZU5hbWUpO1xyXG4gICAgICAgIHRyeSB7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgdGhpcy5jaGFubmVsQ291bnQ7IGNoKyspIHtcclxuICAgICAgICAgICAgICBsZXQgY2hDaGsgPSBhdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YShjaCk7XHJcbiAgICAgICAgICAgICAgbGV0IGNoa0RiSWQgPSBbdGhpcy5fdXVpZCwgdGhpcy5pbmREYkNoa0lkeCsrLCBjaF07XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGxldCBjciA9IHJlY0ZpbGVPYmpTdG9yZS5hZGQoY2hDaGssIGNoa0RiSWQpO1xyXG4gICAgICAgICAgICAgICAgY3Iub25zdWNjZXNzID0gKGV2KSA9PiB7fVxyXG4gICAgICAgICAgICAgICAgY3Iub25lcnJvciA9IChldikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAvLyBpUGFkIG1heSB0aHJvdyBRdW90YUV4Y2VlZGVkRXJyb3IgaGVyZVxyXG4gICAgICAgICAgICAgICAgICAvLyBpUGFkIGFza3MgZm9yIG1vcmUgc3RvcmFnZSBhbmQgaWYgZGVuaWVkLCB0aGUgZXJyb3IgaXMgdGhyb3duIGhlcmVcclxuICAgICAgICAgICAgICAgICAgaWYoIXRoaXMuX3N0b3JlRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGxvZyB0aGUgZmlyc3QgZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igc3RvcmluZyBhdWRpbyBkYXRhIG9mIFwiICsgY2hDaGsuYnl0ZUxlbmd0aCArIFwiIGJ5dGVzIHRvIGluZGV4ZWQgZGI6IFwiICsgY3IuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vc3Vic2NyaWJlci5lcnJvcihjci5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfWNhdGNoKGVycjE6YW55KXtcclxuICAgICAgICAgICAgICAgIGlmKCF0aGlzLl9zdG9yZUVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBhZGRpbmcgYXVkaW8gZGF0YSB0byBpbmRleGVkIGRiIHN0b3JlOiBcIiArIGVycjEpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLl9zdG9yZUVycm9yPShlcnIxIGluc3RhbmNlb2YgRXJyb3IpP2VycjE6bmV3IEVycm9yKGVycjEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnIxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fZnJhbWVMZW4rPWFiRmw7XHJcblxyXG4gICAgICAgICAgdHIub25lcnJvciA9IChldikgPT4ge1xyXG4gICAgICAgICAgICBpZighdGhpcy5fc3RvcmVFcnJvcikge1xyXG4gICAgICAgICAgICAgIC8vIE9ubHkgbG9nIHRoZSBmaXJzdCBlcnJvclxyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gc3RvcmUgYXVkaW8gZGF0YSB0byBpbmRleGVkIGRiLCB0cmFuc2FjdGlvbiBlcnJvcjogXCIrdHIuZXJyb3IpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3N0b3JlRXJyb3IgPSB0ci5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKHRyLmVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRyLm9uYWJvcnQ9KGV2KT0+e1xyXG4gICAgICAgICAgICAvLyBJZiBDaHJvbWUgcmVhY2hlcyBxdW90YSBpdCBhYm9ydHMgdGhlIHRyYW5zYWN0aW9uXHJcbiAgICAgICAgICAgIGlmKCF0aGlzLl9zdG9yZUVycm9yKSB7XHJcbiAgICAgICAgICAgICAgLy8gT25seSBsb2cgdGhlIGZpcnN0IGVycm9yXHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBzdG9yZSBhdWRpbyBkYXRhIHRvIGluZGV4ZWQgZGIsIHRyYW5zYWN0aW9uIGFib3J0ZWQ6IFwiK3RyLmVycm9yKTtcclxuICAgICAgICAgICAgICB0aGlzLl9zdG9yZUVycm9yID0gdHIuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcih0ci5lcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0ci5vbmNvbXBsZXRlID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlRyYW5zYWN0aW9uIGNvbXBsZXRlXCIpO1xyXG4gICAgICAgICAgICBpZihhYkZsPHRoaXMuX2NodW5rRnJhbWVMZW4pe1xyXG4gICAgICAgICAgICAgIC8vIGxhc3QgY2h1bmtcclxuICAgICAgICAgICAgICB0aGlzLnNlYWwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoKTtcclxuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdHIuY29tbWl0KCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdDYXRjaGVkIGVycm9yOiAnK2Vycik7XHJcbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcignVHJhbnNmZXIgYXVkaW8gZGF0YSBlcnJvcjogJyArIGVycikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWxlYXNlQXVkaW9EYXRhKCk6T2JzZXJ2YWJsZTx2b2lkPntcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2b2lkPigoc3Vic2NyaWJlcik9PntcclxuICAgICAgbGV0IG9zPXRoaXMuX3BlcnNpc3RlbnRBdWRpb1N0b3JhZ2VUYXJnZXQub2JqZWN0U3RvcmUoJ3JlYWR3cml0ZScpO1xyXG4gICAgICB0aGlzLmRlbGV0ZUFsbEJ1ZnMob3MsMCwoKT0+e1xyXG4gICAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xyXG4gICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcclxuICAgICAgfSwoZXJyKT0+e1xyXG4gICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKTtcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9TdHJpbmcoKTpzdHJpbmd7XHJcbiAgICByZXR1cm4gXCJJbmRleGVkIGRiIGF1ZGlvIGJ1ZmZlci4gQ2hhbm5lbHM6IFwiK3RoaXMuY2hhbm5lbENvdW50K1wiLCBzYW1wbGUgcmF0ZTogXCIrdGhpcy5zYW1wbGVSYXRlK1wiLCBjaHVuayBmcmFtZSBsZW5ndGg6IFwiK3RoaXMuX2NodW5rRnJhbWVMZW4rXCIsIG51bWJlciBvZiBjaHVua3M6IFwiK3RoaXMuY2h1bmtDb3VudCtcIiwgZnJhbWUgbGVuZ3RoOiBcIit0aGlzLmZyYW1lTGVuK1wiLCBzZWFsZWQ6IFwiK3RoaXMuc2VhbGVkKCk7XHJcbiAgfVxyXG5cclxuICBhc3luY0F1ZGlvSW5wdXRTdHJlYW0oKTogQXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSB8IG51bGwge1xyXG4gICAgcmV0dXJuIG5ldyBJbmRleGVkRGJBdWRpb0lucHV0U3RyZWFtKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgYXVkaW9JbnB1dFN0cmVhbSgpOiBGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSB8IG51bGwge1xyXG4gICAgLy8gU3luY2hyb25vdXMgc3RyZWFtIG5vdCBzdXBwb3J0ZWRcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGR1cmF0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2h1bmtGcmFtZUxlbi90aGlzLl9zYW1wbGVSYXRlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG51bWJlck9mQ2hhbm5lbHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ291bnQ7XHJcbiAgfVxyXG5cclxuICBzYW1wbGVDb3VudHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ291bnQqdGhpcy5fZnJhbWVMZW47XHJcbiAgfVxyXG5cclxuICByYW5kb21BY2Nlc3NBdWRpb1N0cmVhbSgpOiBSYW5kb21BY2Nlc3NBdWRpb1N0cmVhbSB7XHJcbiAgICByZXR1cm4gbmV3IEluZGV4ZWREYlJhbmRvbUFjY2Vzc1N0cmVhbSh0aGlzKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEluZGV4ZWREYlJhbmRvbUFjY2Vzc1N0cmVhbSBpbXBsZW1lbnRzIFJhbmRvbUFjY2Vzc0F1ZGlvU3RyZWFte1xyXG5cclxuICBwcml2YXRlIF9jdXJyQ2k9MDtcclxuICBwcml2YXRlIF9jY0NhY2hlOkZsb2F0MzJBcnJheVtdfG51bGw9bnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5kZGJBYjpJbmRleGVkRGJBdWRpb0J1ZmZlcikge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaHVuayhvczpJREJPYmplY3RTdG9yZSxjaTpudW1iZXIsY2I6KGJ1ZnM6QXJyYXk8RmxvYXQzMkFycmF5PnxudWxsKT0+dm9pZCxlcnJDYjooZXJyOkVycm9yKT0+dm9pZCl7XHJcblxyXG4gICAgLy8gQnVpbGQgYm91bmRzIGZvciBjaGFubmVsc1xyXG4gICAgbGV0IGxJZHg9W3RoaXMuX2luZGRiQWIudXVpZCxjaSwwXTtcclxuICAgIGxldCBoSWR4PVt0aGlzLl9pbmRkYkFiLnV1aWQsY2ksdGhpcy5faW5kZGJBYi5jaGFubmVsQ291bnRdO1xyXG4gICAgbGV0IGNoc0tyPUlEQktleVJhbmdlLmJvdW5kKGxJZHgsaElkeCk7XHJcblxyXG4gICAgbGV0IHJxPW9zLmdldEFsbChjaHNLcik7XHJcblxyXG4gICAgcnEub25zdWNjZXNzPSgpPT57XHJcbiAgICAgIGxldCBjYz1ycS5yZXN1bHQ7XHJcbiAgICAgIGxldCBjYzA7XHJcbiAgICAgIGxldCBjY0Nocz1jYy5sZW5ndGg7XHJcbiAgICAgIGlmKGNjQ2hzPT0wKXtcclxuICAgICAgICBjYihudWxsKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYoY2NDaHMhPT10aGlzLl9pbmRkYkFiLmNoYW5uZWxDb3VudCl7XHJcbiAgICAgICAgZXJyQ2IobmV3IEVycm9yKCdOdW1iZXIgb2YgY2hhbm5lbHMgb2YgaW5kZGIgZGF0YSAoJytjY0NocysnKSBkb2VzIG5vdCBtYXRjaCBudW1iZXIgb2YgY2hhbm5lbHMgKCcrdGhpcy5faW5kZGJBYi5jaGFubmVsQ291bnQrJyknKSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgaWYoY2MubGVuZ3RoPjApe1xyXG4gICAgICAgIGNjMD1jY1swXTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXJyQnVmPW5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KCk7XHJcbiAgICAgIGxldCBjY0xlbj1jYzAubGVuZ3RoO1xyXG4gICAgICBmb3IobGV0IGNoPTA7Y2g8Y2NDaHM7Y2grKyl7XHJcbiAgICAgICAgbGV0IGNoQXJyPW5ldyBGbG9hdDMyQXJyYXkoY2NMZW4pO1xyXG4gICAgICAgIGZvcihsZXQgc2k9MDtzaTxjY0xlbjtzaSsrKXtcclxuICAgICAgICAgIGNoQXJyW3NpXT1jY1tjaF1bc2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhcnJCdWYucHVzaChjaEFycik7XHJcbiAgICAgIH1cclxuICAgICAgY2IoYXJyQnVmKTtcclxuICAgIH1cclxuICAgIHJxLm9uZXJyb3I9KGVyckV2KT0+e1xyXG4gICAgICBlcnJDYihuZXcgRXJyb3IoZXJyRXYudG9TdHJpbmcoKSkpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbGxCdWZzKGNjQnVmczpGbG9hdDMyQXJyYXlbXSx0cmdTdGF0ZTp7ZnJhbWVQb3M6bnVtYmVyLGZyYW1lTGVuOm51bWJlcix0cmdCdWZzOkZsb2F0MzJBcnJheVtdLGZpbGxlZDpudW1iZXJ9LHNyY1N0YXRlOntzcmNGcmFtZVBvczpudW1iZXIsY2k6bnVtYmVyLGNjUG9zOm51bWJlcn0pe1xyXG4gICAgbGV0IGNjQnVmc0Nocz1jY0J1ZnMubGVuZ3RoO1xyXG4gICAgaWYoY2NCdWZzQ2hzPjApIHtcclxuICAgICAgbGV0IGNjQnVmMCA9IGNjQnVmc1swXTtcclxuICAgICAgbGV0IGNjQnVmc0xlbiA9IGNjQnVmMC5sZW5ndGg7XHJcblxyXG4gICAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmcyBmcmFtZVBvczogJytmcmFtZVBvcysnLCBzcmNGcmFtZVBvczogJytzcmNGcmFtZVBvcysnLCBjY0J1ZnNMZW46ICcrY2NCdWZzTGVuKTtcclxuICAgICAgaWYgKHRyZ1N0YXRlLmZyYW1lUG9zID49IHNyY1N0YXRlLnNyY0ZyYW1lUG9zICsgY2NCdWZzTGVuKSB7XHJcbiAgICAgICAgLy8gdGFyZ2V0IGZyYW1lIHBvc2l0aW9uIGlzIGFoZWFkLCBzZWVrIHRvIG5leHQgc291cmNlIGJ1ZmZlclxyXG4gICAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIHNlZWsgdG8gbmV4dCBpbmRkYiBidWZmZXInKTtcclxuICAgICAgICB0aGlzLl9jY0NhY2hlPW51bGw7XHJcbiAgICAgICAgc3JjU3RhdGUuY2krKztcclxuICAgICAgICBzcmNTdGF0ZS5jY1Bvcz0wO1xyXG4gICAgICAgIHNyY1N0YXRlLnNyY0ZyYW1lUG9zKz1jY0J1ZnNMZW47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gQXNzdW1pbmcgdGFyZ2V0IGZyYW1lIHBvcyBpcyBpbnNpZGUgY3VycmVudCBzb3VyY2UgYnVmZmVyXHJcbiAgICAgICAgc3JjU3RhdGUuY2NQb3M9dHJnU3RhdGUuZnJhbWVQb3Mtc3JjU3RhdGUuc3JjRnJhbWVQb3M7XHJcbiAgICAgICAgbGV0IGNjQXZhaWwgPSBjY0J1ZnNMZW4gLSBzcmNTdGF0ZS5jY1BvcztcclxuICAgICAgICBsZXQgdG9Db3B5ID0gY2NCdWZzTGVuO1xyXG5cclxuICAgICAgICBpZiAodG9Db3B5ID4gY2NBdmFpbCkge1xyXG4gICAgICAgICAgdG9Db3B5ID0gY2NBdmFpbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRvQ29weSA+IHRyZ1N0YXRlLmZyYW1lTGVuKSB7XHJcbiAgICAgICAgICB0b0NvcHkgPSB0cmdTdGF0ZS5mcmFtZUxlbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNjQnVmc0NoczsgY2grKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgc2kgPSAwOyBzaSA8IHRvQ29weTsgc2krKykge1xyXG4gICAgICAgICAgICB0cmdTdGF0ZS50cmdCdWZzW2NoXVt0cmdTdGF0ZS5maWxsZWQrc2ldID0gY2NCdWZzW2NoXVtzcmNTdGF0ZS5jY1BvcytzaV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyZ1N0YXRlLmZpbGxlZCArPSB0b0NvcHk7XHJcbiAgICAgICAgdHJnU3RhdGUuZnJhbWVMZW4gLT0gdG9Db3B5O1xyXG4gICAgICAgIHRyZ1N0YXRlLmZyYW1lUG9zICs9IHRvQ29weTtcclxuICAgICAgICBzcmNTdGF0ZS5jY1BvcyArPSB0b0NvcHk7XHJcbiAgICAgICAgaWYgKHNyY1N0YXRlLmNjUG9zID49IGNjQnVmc0xlbikge1xyXG4gICAgICAgICAgLy8gSW52YWxpZGF0ZSBjYWNoZVxyXG4gICAgICAgICAgdGhpcy5fY2NDYWNoZT1udWxsO1xyXG4gICAgICAgICAgc3JjU3RhdGUuY2krKztcclxuICAgICAgICAgIHRoaXMuX2N1cnJDaT1zcmNTdGF0ZS5jaTtcclxuICAgICAgICAgIHNyY1N0YXRlLmNjUG9zID0gMDtcclxuICAgICAgICAgIHNyY1N0YXRlLnNyY0ZyYW1lUG9zKz1jY0J1ZnNMZW47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsQnVmcyhvczpJREJPYmplY3RTdG9yZSx0cmdTdGF0ZTp7ZnJhbWVQb3M6bnVtYmVyLGZyYW1lTGVuOm51bWJlcix0cmdCdWZzOkZsb2F0MzJBcnJheVtdLGZpbGxlZDpudW1iZXJ9LHNyY1N0YXRlOntzcmNGcmFtZVBvczpudW1iZXIsY2k6bnVtYmVyLGNjUG9zOm51bWJlcixjY0ZpbGxlZDpudW1iZXJ9LGNiOihmaWxsZWQ6bnVtYmVyKT0+dm9pZCxjYkVuZDooZmlsbGVkOm51bWJlcik9PnZvaWQsY2JFcnI6KGVycjpFcnJvcik9PnZvaWQpe1xyXG4gICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnM6IGZyYW1lUG9zOicrdHJnU3RhdGUuZnJhbWVQb3MrJywgZnJhbWVMZW46ICcrdHJnU3RhdGUuZnJhbWVMZW4rJywgZmlsbGVkOiAnK3RyZ1N0YXRlLmZpbGxlZCsnLCBzcmNGcmFtZVBvczogJytzcmNTdGF0ZS5zcmNGcmFtZVBvcysnLGNpOiAnK3NyY1N0YXRlLmNpKycsIGNjUG9zOiAnK3NyY1N0YXRlLmNjUG9zKTtcclxuICAgIGlmKHRoaXMuX2NjQ2FjaGUpe1xyXG4gICAgICB0aGlzLl9maWxsQnVmcyh0aGlzLl9jY0NhY2hlLHRyZ1N0YXRlLHNyY1N0YXRlKTtcclxuICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgZnJhbWVMZW46ICcrdHJnU3RhdGUuZnJhbWVMZW4pO1xyXG4gICAgICBpZih0cmdTdGF0ZS5mcmFtZUxlbj09PTApe1xyXG4gICAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIChmcmFtZWxlbj09MCkgY2FsbDogY2JlbmQgJyt0cmdTdGF0ZS5maWxsZWQpO1xyXG4gICAgICAgIGNiRW5kKHRyZ1N0YXRlLmZpbGxlZCk7XHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICB0aGlzLmZpbGxCdWZzKG9zLCB0cmdTdGF0ZSwgc3JjU3RhdGUsIGNiLCBjYkVuZCwgY2JFcnIpO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIHRoaXMuY2h1bmsob3MsIHNyY1N0YXRlLmNpLCAoY2NCdWZzKSA9PiB7XHJcbiAgICAgICAgaWYgKGNjQnVmcykge1xyXG4gICAgICAgICAgdGhpcy5fY3VyckNpID0gc3JjU3RhdGUuY2k7XHJcbiAgICAgICAgICB0aGlzLl9jY0NhY2hlID0gY2NCdWZzO1xyXG5cclxuICAgICAgICAgIHRoaXMuX2ZpbGxCdWZzKGNjQnVmcywgdHJnU3RhdGUsIHNyY1N0YXRlKTtcclxuICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIGZyYW1lTGVuOiAnK3RyZ1N0YXRlLmZyYW1lTGVuKTtcclxuICAgICAgICAgIGlmICh0cmdTdGF0ZS5mcmFtZUxlbiA9PT0gMCkge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmcyAoZnJhbWVsZW49PTApIGNhbGw6IGNiZW5kICcrdHJnU3RhdGUuZmlsbGVkKTtcclxuICAgICAgICAgICAgY2JFbmQodHJnU3RhdGUuZmlsbGVkKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsbEJ1ZnMob3MsdHJnU3RhdGUsIHNyY1N0YXRlLCBjYiwgY2JFbmQsIGNiRXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgKGNodW5rIG5vdCBmb3VuZCkgY2FsbDogY2JlbmQgJyt0cmdTdGF0ZS5maWxsZWQpO1xyXG4gICAgICAgICAgY2JFbmQodHJnU3RhdGUuZmlsbGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICBjYkVycihlcnIpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBmcmFtZXNPYnMoZnJhbWVQb3M6bnVtYmVyLGZyYW1lTGVuOm51bWJlcixidWZzOkZsb2F0MzJBcnJheVtdKTpPYnNlcnZhYmxlPG51bWJlcj57XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8bnVtYmVyPigoc3Vic2NyaWJlcik9PntcclxuICAgICAgbGV0IHRyPXRoaXMuX2luZGRiQWIucGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldC50cmFuc2FjdGlvbigpO1xyXG4gICAgICBsZXQgb3M9dHIub2JqZWN0U3RvcmUodGhpcy5faW5kZGJBYi5wZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0LnN0b3JlTmFtZSk7XHJcbiAgICAgIC8vIFBvc2l0aW9uaW5nXHJcbiAgICAgIGxldCBuZXdDaT1NYXRoLmZsb29yKGZyYW1lUG9zL3RoaXMuX2luZGRiQWIuY2h1bmtGcmFtZUxlbik7XHJcbiAgICAgIGlmKG5ld0NpIT09dGhpcy5fY3VyckNpKXtcclxuICAgICAgICB0aGlzLl9jdXJyQ2k9bmV3Q2k7XHJcbiAgICAgICAgdGhpcy5fY2NDYWNoZT1udWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBzcmNGcmFtZVBvcz1uZXdDaSp0aGlzLl9pbmRkYkFiLmNodW5rRnJhbWVMZW47XHJcbiAgICAgIGxldCB0cmdTdGF0ZT17ZnJhbWVQb3M6ZnJhbWVQb3MsZnJhbWVMZW46ZnJhbWVMZW4sdHJnQnVmczpidWZzLGZpbGxlZDowfTtcclxuICAgICAgbGV0IHNyY1N0YXRlPXtzcmNGcmFtZVBvczpzcmNGcmFtZVBvcyxjaTpuZXdDaSxjY1BvczowLGNjRmlsbGVkOjB9O1xyXG4gICAgICB0aGlzLmZpbGxCdWZzKG9zLHRyZ1N0YXRlLHNyY1N0YXRlLCh2YWwpPT57fSwoZmlsbGVkOm51bWJlcik9PntcclxuICAgICAgICBzdWJzY3JpYmVyLm5leHQoZmlsbGVkKTtcclxuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0sZXJyID0+IHtcclxuICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycik7XHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VyckNpPTA7XHJcbiAgICB0aGlzLl9jY0NhY2hlPW51bGw7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5kZXhlZERiQXVkaW9JbnB1dFN0cmVhbSBpbXBsZW1lbnRzIEFzeW5jRmxvYXQzMkFycmF5SW5wdXRTdHJlYW17XHJcblxyXG4gIHByaXZhdGUgZnJhbWVQb3M6bnVtYmVyPTA7XHJcbiAgcHJpdmF0ZSBpbmRkYkFiU3RyOkluZGV4ZWREYlJhbmRvbUFjY2Vzc1N0cmVhbTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluZGRiQWI6SW5kZXhlZERiQXVkaW9CdWZmZXIpIHtcclxuICAgICAgdGhpcy5pbmRkYkFiU3RyPW5ldyBJbmRleGVkRGJSYW5kb21BY2Nlc3NTdHJlYW0oaW5kZGJBYik7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5kZGJBYlN0ci5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVhZE9icyhidWZmZXJzOiBBcnJheTxGbG9hdDMyQXJyYXk+KTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxudW1iZXI+KHN1YnNjcj0+IHtcclxuICAgICAgaWYgKGJ1ZmZlcnMgJiYgYnVmZmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IGZsID0gYnVmZmVyc1swXS5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5pbmRkYkFiU3RyLmZyYW1lc09icyh0aGlzLmZyYW1lUG9zLCBmbCwgYnVmZmVycykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZWFkKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZnJhbWVQb3MgKz0gcmVhZDtcclxuICAgICAgICAgICAgc3Vic2NyLm5leHQocmVhZCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgc3Vic2NyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgc3Vic2NyLmVycm9yKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgc3Vic2NyLm5leHQoMCk7XHJcbiAgICAgICAgc3Vic2NyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2tpcEZyYW1lcyhuOiBudW1iZXIpOnZvaWQge1xyXG4gICAgdGhpcy5mcmFtZVBvcys9bjtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
508
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZGJfYXVkaW9fYnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2luZGRiX2F1ZGlvX2J1ZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwQyxPQUFPLEVBQWMsZ0JBQWdCLEVBQTBCLE1BQU0scUJBQXFCLENBQUM7QUFFM0YsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsWUFBb0IsVUFBc0IsRUFBUyxVQUFpQjtRQUFoRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBTztJQUNwRSxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQXdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQXdCO1FBQ2xDLElBQUksRUFBRSxHQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxVQUFVLENBQU8sVUFBVSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2QyxJQUFJLFFB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Q0YsQ0FBQyxDQUFBO1lBQ0osQ0FBQztpQkFBSSxDQUFDO2dCQUNKLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBUztRQUNsQixJQUFJLENBQUMsUUFBUSxJQUFFLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7QXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSwgRmxvYXQzMkFycmF5SW5wdXRTdHJlYW19IGZyb20gXCIuLi9pby9zdHJlYW1cIjtcclxuaW1wb3J0IHtVVUlEfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcclxuaW1wb3J0IHtBdWRpb1NvdXJjZSwgQmFzaWNBdWRpb1NvdXJjZSwgUmFuZG9tQWNjZXNzQXVkaW9TdHJlYW19IGZyb20gXCIuL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldHtcclxuICBnZXQgaW5kZXhlZERiKCk6IElEQkRhdGFiYXNlIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmRleGVkRGI7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RvcmVOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RvcmVOYW1lO1xyXG4gIH1cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbmRleGVkRGI6SURCRGF0YWJhc2UscHJpdmF0ZSBfc3RvcmVOYW1lOnN0cmluZykge1xyXG4gIH1cclxuXHJcbiAgdHJhbnNhY3Rpb24obW9kZT86SURCVHJhbnNhY3Rpb25Nb2RlKTpJREJUcmFuc2FjdGlvbntcclxuICAgIHJldHVybiB0aGlzLl9pbmRleGVkRGIudHJhbnNhY3Rpb24odGhpcy5zdG9yZU5hbWUsIG1vZGUpO1xyXG4gIH1cclxuXHJcbiAgb2JqZWN0U3RvcmUobW9kZT86SURCVHJhbnNhY3Rpb25Nb2RlICl7XHJcbiAgICBsZXQgdHI9dGhpcy50cmFuc2FjdGlvbihtb2RlKTtcclxuICAgIHJldHVybiB0ci5vYmplY3RTdG9yZSh0aGlzLl9zdG9yZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQWxsKCk6T2JzZXJ2YWJsZTx2b2lkPntcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2b2lkPihzdWJzY3JpYmVyID0+IHtcclxuICAgICAgbGV0IG9zID0gdGhpcy5vYmplY3RTdG9yZSgncmVhZHdyaXRlJyk7XHJcbiAgICAgIGxldCBjbGVhclJlcT1vcy5jbGVhcigpO1xyXG4gICAgICBjbGVhclJlcS5vbnN1Y2Nlc3M9KCk9PntcclxuICAgICAgICBjb25zb2xlLmRlYnVnKFwiQ2xlYXJlZCBhdWRpbyBzdG9yYWdlIG9iamVjdCBzdG9yZS5cIik7XHJcbiAgICAgICAgb3MudHJhbnNhY3Rpb24uY29tbWl0KCk7XHJcbiAgICAgIH1cclxuICAgICAgY2xlYXJSZXEub25lcnJvcj0oKT0+e1xyXG4gICAgICAgIG9zLnRyYW5zYWN0aW9uLmFib3J0KCk7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkNvdWxkIG5vdCBjbGVhciBvYmplY3Qgc3RvcmU6IFwiK2NsZWFyUmVxLmVycm9yKTtcclxuICAgICAgfVxyXG4gICAgICBvcy50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoXCJUcmFuc2FjdGlvbiBjb21wbGV0ZTogQ2xlYXIgYXVkaW8gc3RvcmFnZSBvYmplY3Qgc3RvcmUuXCIpO1xyXG4gICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIG9zLnRyYW5zYWN0aW9uLm9uZXJyb3IgPSAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBJbmRleGVkRGJBdWRpb0J1ZmZlciBleHRlbmRzIEJhc2ljQXVkaW9Tb3VyY2UgaW1wbGVtZW50cyBBdWRpb1NvdXJjZXtcclxuICBnZXQgY2h1bmtGcmFtZUxlbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NodW5rRnJhbWVMZW47XHJcbiAgfVxyXG4gIGdldCBwZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0KCk6IFBlcnNpc3RlbnRBdWRpb1N0b3JhZ2VUYXJnZXQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BlcnNpc3RlbnRBdWRpb1N0b3JhZ2VUYXJnZXQ7XHJcbiAgfVxyXG4gIGdldCB1dWlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXVpZDtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIF9jaHVua0NvdW50PTA7XHJcbiAgcHJpdmF0ZSBpbmREYkNoa0lkeDogbnVtYmVyPTA7XHJcbiAgcHJpdmF0ZSBfc2VhbGVkPWZhbHNlO1xyXG4gIHByaXZhdGUgX3N0b3JlRXJyb3I6RXJyb3J8bnVsbD1udWxsO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldDpQZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0LHByaXZhdGUgX2NoYW5uZWxDb3VudDogbnVtYmVyLCBwcml2YXRlIF9zYW1wbGVSYXRlOiBudW1iZXIscHJpdmF0ZSBfY2h1bmtGcmFtZUxlbjpudW1iZXIscHJpdmF0ZSBfZnJhbWVMZW46bnVtYmVyLCBwcml2YXRlIF91dWlkOnN0cmluZykge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMucmVhZHkoKTtcclxuICB9XHJcblxyXG4gIGdldCBjaGFubmVsQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ291bnQ7XHJcbiAgfVxyXG5cclxuICBzZWFsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VhbGVkO1xyXG4gIH1cclxuXHJcbiAgc2VhbCgpOnZvaWR7XHJcbiAgICB0aGlzLl9zZWFsZWQ9dHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVsZXRlQ2h1bmsob3M6SURCT2JqZWN0U3RvcmUsY2k6bnVtYmVyLGNiOihrZXlzOklEQlZhbGlkS2V5W10pPT52b2lkLGVyckNiOihlcnI6RXJyb3IpPT52b2lkKXtcclxuXHJcbiAgICAvLyBCdWlsZCBib3VuZHMgZm9yIGNoYW5uZWxzXHJcbiAgICBsZXQgbElkeD1bdGhpcy5fdXVpZCxjaSwwXTtcclxuICAgIGxldCBoSWR4PVt0aGlzLl91dWlkLGNpLHRoaXMuX2NoYW5uZWxDb3VudF07XHJcbiAgICBsZXQgY2hzS3I9SURCS2V5UmFuZ2UuYm91bmQobElkeCxoSWR4KTtcclxuXHJcbiAgICBsZXQgZXhScT1vcy5nZXRBbGxLZXlzKGNoc0tyKTtcclxuXHJcbiAgICBleFJxLm9uc3VjY2Vzcz0oKT0+e1xyXG4gICAgICBsZXQgY2M9ZXhScS5yZXN1bHQ7XHJcbiAgICAgIGlmKGNjICYmIGNjLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgbGV0IHJxID0gb3MuZGVsZXRlKGNoc0tyKTtcclxuICAgICAgICBycS5vbmVycm9yPShlcnJFdik9PntcclxuICAgICAgICAgIGVyckNiKG5ldyBFcnJvcihlcnJFdi50b1N0cmluZygpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9zLnRyYW5zYWN0aW9uLm9uY29tcGxldGU9KCk9PntcclxuICAgICAgICAgIGNiKGNjKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3MudHJhbnNhY3Rpb24uY29tbWl0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGV4UnEub25lcnJvcj0oZXJyRXYpPT57XHJcbiAgICAgIGVyckNiKG5ldyBFcnJvcihlcnJFdi50b1N0cmluZygpKSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWxldGVBbGxCdWZzKG9zOklEQk9iamVjdFN0b3JlLGNpOm51bWJlcixjYkVuZDooKT0+dm9pZCxjYkVycjooZXJyOkVycm9yKT0+dm9pZCl7XHJcbiAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmczogZnJhbWVQb3M6JytmcmFtZVBvcysnLCBmcmFtZUxlbjogJytmcmFtZUxlbisnLCBmaWxsZWQ6ICcrZmlsbGVkKycsIHNyY0ZyYW1lUG9zOiAnK3NyY0ZyYW1lUG9zKycsY2k6ICcrY2krJywgY2NQb3M6ICcrY2NQb3MpO1xyXG4gICAgdGhpcy5kZWxldGVDaHVuayhvcyxjaSwoY2NLZXlzKT0+e1xyXG4gICAgICBpZihjY0tleXMgJiYgY2NLZXlzLmxlbmd0aD4wKXtcclxuICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmcyBmcmFtZUxlbjogJytmcmFtZUxlbik7XHJcbiAgICAgICAgY2krKztcclxuICAgICAgICB0aGlzLmRlbGV0ZUFsbEJ1ZnMob3MsY2ksY2JFbmQsIGNiRXJyKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgKGNodW5rIG5vdCBmb3VuZCkgY2FsbDogY2JlbmQgJytmaWxsZWQpO1xyXG4gICAgICAgIGNiRW5kKCk7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycik9PntcclxuICAgICAgY2JFcnIoZXJyKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldCBzYW1wbGVSYXRlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2FtcGxlUmF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBmcmFtZUxlbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZyYW1lTGVuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNodW5rQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaHVua0NvdW50O1xyXG4gIH1cclxuXHJcbiAgYXBwZW5kUmF3QXVkaW9EYXRhKGRhdGE6QXJyYXk8QXJyYXk8RmxvYXQzMkFycmF5Pj4pOk9ic2VydmFibGU8dm9pZD57XHJcblxyXG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2b2lkPihzdWJzY3JpYmVyID0+IHtcclxuXHJcbiAgICBpZiAodGhpcy5fcGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldCAmJiB0aGlzLl91dWlkKSB7XHJcbiAgICAgIGxldCB0ciA9IHRoaXMuX3BlcnNpc3RlbnRBdWRpb1N0b3JhZ2VUYXJnZXQuaW5kZXhlZERiLnRyYW5zYWN0aW9uKHRoaXMuX3BlcnNpc3RlbnRBdWRpb1N0b3JhZ2VUYXJnZXQuc3RvcmVOYW1lLCAncmVhZHdyaXRlJyk7XHJcbiAgICAgIGxldCByZWNGaWxlT2JqU3RvcmUgPSB0ci5vYmplY3RTdG9yZSh0aGlzLl9wZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0LnN0b3JlTmFtZSk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBjaDBEYXRhID0gZGF0YVswXTtcclxuICAgICAgICBsZXQgZGF0YUNoa0NudCA9IGNoMERhdGEubGVuZ3RoO1xyXG4gICAgICAgIGxldCBwb3MgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGNoQ2tJZHggPSAwOyBjaENrSWR4IDwgZGF0YUNoa0NudDsgY2hDa0lkeCsrKSB7XHJcbiAgICAgICAgICBsZXQgYnVmTGVuID0gMDtcclxuICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCB0aGlzLmNoYW5uZWxDb3VudDsgY2grKykge1xyXG4gICAgICAgICAgICBsZXQgY2hDaGsgPSBkYXRhW2NoXVtjaENrSWR4XTtcclxuICAgICAgICAgICAgYnVmTGVuID0gY2hDaGsubGVuZ3RoO1xyXG4gICAgICAgICAgICAvL2xldCBjYWNoZUlkID0gdXVpZCArICdfJyArIGNoICsgJ18nICsgY2hDa0lkeDtcclxuICAgICAgICAgICAgbGV0IGNoa0RiSWQgPSBbdGhpcy5fdXVpZCwgdGhpcy5pbmREYkNoa0lkeCArIGNoQ2tJZHgsIGNoXTtcclxuICAgICAgICAgICAgbGV0IGNyID0gcmVjRmlsZU9ialN0b3JlLmFkZChjaENoaywgY2hrRGJJZCk7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkFkZGVkOiBcIitjaCtcIiBcIisodGhpcy5pbmREYkNoa0lkeCtjaENrSWR4KSk7XHJcbiAgICAgICAgICAgIGNyLm9uc3VjY2VzcyA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJTdG9yZWQgYXVkaW8gZGF0YSB0byBpbmRleGVkIGRiXCIpO1xyXG4gICAgICAgICAgICAgIC8vIGlmKGNoQ2tJZHg+PSBkYXRhQ2hrQ250LTEgJiYgY2g+PXRoaXMuY2hhbm5lbENvdW50LTEpe1xyXG4gICAgICAgICAgICAgIC8vICAgdHIuY29tbWl0KCk7XHJcbiAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNyLm9uZXJyb3IgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYoIXRoaXMuX3N0b3JlRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIC8vIE9ubHkgbG9nIHRoZSBmaXJzdCBlcnJvclxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHN0b3JpbmcgYXVkaW8gZGF0YSBvZiBcIiArIGNoQ2hrLmJ5dGVMZW5ndGggKyBcIiBieXRlcyB0byBpbmRleGVkIGRiOiBcIiArIGNyLmVycm9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBvcyArPSBidWZMZW47XHJcbiAgICAgICAgICB0aGlzLl9mcmFtZUxlbis9YnVmTGVuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluZERiQ2hrSWR4ICs9IGRhdGFDaGtDbnQ7XHJcblxyXG4gICAgICAgIHRyLm9uZXJyb3IgPSAoZXYpID0+IHtcclxuICAgICAgICAgIGlmKCF0aGlzLl9zdG9yZUVycm9yKSB7XHJcbiAgICAgICAgICAgIC8vIE9ubHkgbG9nIHRoZSBmaXJzdCBlcnJvclxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHN0b3JlIGF1ZGlvIGRhdGEgdG8gaW5kZXhlZCBkYiwgdHJhbnNhY3Rpb24gZXJyb3I6IFwiK3RyLmVycm9yKTtcclxuICAgICAgICAgICAgdGhpcy5fc3RvcmVFcnJvciA9IHRyLmVycm9yO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3Vic2NyaWJlci5lcnJvcih0ci5lcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyLm9uYWJvcnQ9KGV2KT0+e1xyXG4gICAgICAgICAgLy8gSWYgQ2hyb21lIHJlYWNoZXMgcXVvdGEgaXQgYWJvcnRzIHRoZSB0cmFuc2FjdGlvblxyXG4gICAgICAgICAgaWYoIXRoaXMuX3N0b3JlRXJyb3IpIHtcclxuICAgICAgICAgICAgLy8gT25seSBsb2cgdGhlIGZpcnN0IGVycm9yXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gc3RvcmUgYXVkaW8gZGF0YSB0byBpbmRleGVkIGRiLCB0cmFuc2FjdGlvbiBhYm9ydGVkOiBcIit0ci5lcnJvcik7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3JlRXJyb3IgPSB0ci5lcnJvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IodHIuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0ci5vbmNvbXBsZXRlID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyLmNvbW1pdCgpO1xyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBzdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcignVHJhbnNmZXIgYXVkaW8gZGF0YSBlcnJvcjogJyArIGVycikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUNodW5rQXVkaW9CdWZmZXIocGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldDpQZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0ICxhdWRpb0J1ZmZlcjpBdWRpb0J1ZmZlcik6T2JzZXJ2YWJsZTxJbmRleGVkRGJBdWRpb0J1ZmZlcj57XHJcblxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEluZGV4ZWREYkF1ZGlvQnVmZmVyPihzdWJzY3JpYmVyID0+IHtcclxuICAgICAgbGV0IGNocyA9IGF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7XHJcbiAgICAgIGxldCBzciA9IGF1ZGlvQnVmZmVyLnNhbXBsZVJhdGU7XHJcbiAgICAgIGxldCBjaGtGcmFtZUxlbmd0aCA9IGF1ZGlvQnVmZmVyLmxlbmd0aDtcclxuXHJcbiAgICAgIGxldCBpYWIgPSBuZXcgSW5kZXhlZERiQXVkaW9CdWZmZXIocGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldCwgY2hzLCBzciwgY2hrRnJhbWVMZW5ndGgsIDAsIFVVSUQuZ2VuZXJhdGUoKSk7XHJcbiAgICAgIGlhYi5hcHBlbmRDaHVua0F1ZGlvQnVmZmVyKGF1ZGlvQnVmZmVyKS5zdWJzY3JpYmUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmV4dDogKCk9PntcclxuICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGlhYik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKT0+e1xyXG4gICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFwcGVuZENodW5rQXVkaW9CdWZmZXIoYXVkaW9CdWZmZXI6QXVkaW9CdWZmZXIpe1xyXG4gICAgaWYodGhpcy5fc2VhbGVkKXtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYXBwZW5kIGF1ZGlvIGJ1ZmZlciB0byBhbHJlYWR5IHNlYWxlZCBhdWRpbyBidWZmZXIuJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgY2hzPWF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7XHJcbiAgICBpZih0aGlzLl9jaGFubmVsQ291bnQhPT0gY2hzKXtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYXBwZW5kIGF1ZGlvIGJ1ZmZlciB3aXRoICcrY2hzKycgY2hhbm5lbHMgdG8gdGhpcyBhcnJheSBhdWRpbyBidWZmZXIgd2l0aCAnK3RoaXMuX2NoYW5uZWxDb3VudCsnIGNoYW5uZWxzLiBOdW1iZXIgb2YgY2hhbm5lbHMgbXVzdCBtYXRjaC4nKTtcclxuICAgIH1cclxuICAgIGxldCBzcj1hdWRpb0J1ZmZlci5zYW1wbGVSYXRlO1xyXG4gICAgaWYoc3IhPT10aGlzLl9zYW1wbGVSYXRlKXtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYXBwZW5kIGF1ZGlvIGJ1ZmZlciB3aXRoIHNhbXBsZXJhdGUgJytzcisnIHRvIHRoaXMgYXJyYXkgYXVkaW8gYnVmZmVyIHdpdGggc2FtcGxlcmF0ZSAnK3RoaXMuX3NhbXBsZVJhdGUrJy4gU2FtcGxlcmF0ZXMgbXVzdCBtYXRjaC4nKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYWJGbD1hdWRpb0J1ZmZlci5sZW5ndGg7XHJcbiAgICBpZihhYkZsPnRoaXMuX2NodW5rRnJhbWVMZW4pe1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBhcHBlbmQgYXVkaW8gYnVmZmVyIHdpdGggZnJhbWUgbGVuZ3RoICcrYWJGbCsnIHRvIHRoaXMgYXJyYXkgYXVkaW8gYnVmZmVyIHdpdGggY2h1bmsgZnJhbWUgbGVuZ3RoICcrdGhpcy5fY2h1bmtGcmFtZUxlbisnLiBDaHVuayBsZW5ndGggbXVzdCBiZSBlcXVhbCBvciBsZXNzIGlmIGxhc3QgY2h1bmsuJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dm9pZD4oc3Vic2NyaWJlciA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl9wZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0ICYmIHRoaXMuX3V1aWQpIHtcclxuICAgICAgICBsZXQgdHIgPSB0aGlzLl9wZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0LnRyYW5zYWN0aW9uKCdyZWFkd3JpdGUnKTtcclxuICAgICAgICBsZXQgcmVjRmlsZU9ialN0b3JlID0gdHIub2JqZWN0U3RvcmUodGhpcy5fcGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldC5zdG9yZU5hbWUpO1xyXG4gICAgICAgIHRyeSB7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgdGhpcy5jaGFubmVsQ291bnQ7IGNoKyspIHtcclxuICAgICAgICAgICAgICBsZXQgY2hDaGsgPSBhdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YShjaCk7XHJcbiAgICAgICAgICAgICAgbGV0IGNoa0RiSWQgPSBbdGhpcy5fdXVpZCwgdGhpcy5pbmREYkNoa0lkeCsrLCBjaF07XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGxldCBjciA9IHJlY0ZpbGVPYmpTdG9yZS5hZGQoY2hDaGssIGNoa0RiSWQpO1xyXG4gICAgICAgICAgICAgICAgY3Iub25zdWNjZXNzID0gKGV2KSA9PiB7fVxyXG4gICAgICAgICAgICAgICAgY3Iub25lcnJvciA9IChldikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAvLyBpUGFkIG1heSB0aHJvdyBRdW90YUV4Y2VlZGVkRXJyb3IgaGVyZVxyXG4gICAgICAgICAgICAgICAgICAvLyBpUGFkIGFza3MgZm9yIG1vcmUgc3RvcmFnZSBhbmQgaWYgZGVuaWVkLCB0aGUgZXJyb3IgaXMgdGhyb3duIGhlcmVcclxuICAgICAgICAgICAgICAgICAgaWYoIXRoaXMuX3N0b3JlRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGxvZyB0aGUgZmlyc3QgZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igc3RvcmluZyBhdWRpbyBkYXRhIG9mIFwiICsgY2hDaGsuYnl0ZUxlbmd0aCArIFwiIGJ5dGVzIHRvIGluZGV4ZWQgZGI6IFwiICsgY3IuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vc3Vic2NyaWJlci5lcnJvcihjci5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfWNhdGNoKGVycjE6YW55KXtcclxuICAgICAgICAgICAgICAgIGlmKCF0aGlzLl9zdG9yZUVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBhZGRpbmcgYXVkaW8gZGF0YSB0byBpbmRleGVkIGRiIHN0b3JlOiBcIiArIGVycjEpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLl9zdG9yZUVycm9yPShlcnIxIGluc3RhbmNlb2YgRXJyb3IpP2VycjE6bmV3IEVycm9yKGVycjEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnIxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fZnJhbWVMZW4rPWFiRmw7XHJcblxyXG4gICAgICAgICAgdHIub25lcnJvciA9IChldikgPT4ge1xyXG4gICAgICAgICAgICBpZighdGhpcy5fc3RvcmVFcnJvcikge1xyXG4gICAgICAgICAgICAgIC8vIE9ubHkgbG9nIHRoZSBmaXJzdCBlcnJvclxyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gc3RvcmUgYXVkaW8gZGF0YSB0byBpbmRleGVkIGRiLCB0cmFuc2FjdGlvbiBlcnJvcjogXCIrdHIuZXJyb3IpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3N0b3JlRXJyb3IgPSB0ci5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKHRyLmVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRyLm9uYWJvcnQ9KGV2KT0+e1xyXG4gICAgICAgICAgICAvLyBJZiBDaHJvbWUgcmVhY2hlcyBxdW90YSBpdCBhYm9ydHMgdGhlIHRyYW5zYWN0aW9uXHJcbiAgICAgICAgICAgIGlmKCF0aGlzLl9zdG9yZUVycm9yKSB7XHJcbiAgICAgICAgICAgICAgLy8gT25seSBsb2cgdGhlIGZpcnN0IGVycm9yXHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBzdG9yZSBhdWRpbyBkYXRhIHRvIGluZGV4ZWQgZGIsIHRyYW5zYWN0aW9uIGFib3J0ZWQ6IFwiK3RyLmVycm9yKTtcclxuICAgICAgICAgICAgICB0aGlzLl9zdG9yZUVycm9yID0gdHIuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcih0ci5lcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0ci5vbmNvbXBsZXRlID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlRyYW5zYWN0aW9uIGNvbXBsZXRlXCIpO1xyXG4gICAgICAgICAgICBpZihhYkZsPHRoaXMuX2NodW5rRnJhbWVMZW4pe1xyXG4gICAgICAgICAgICAgIC8vIGxhc3QgY2h1bmtcclxuICAgICAgICAgICAgICB0aGlzLnNlYWwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoKTtcclxuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdHIuY29tbWl0KCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdDYXRjaGVkIGVycm9yOiAnK2Vycik7XHJcbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcignVHJhbnNmZXIgYXVkaW8gZGF0YSBlcnJvcjogJyArIGVycikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWxlYXNlQXVkaW9EYXRhKCk6T2JzZXJ2YWJsZTx2b2lkPntcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2b2lkPigoc3Vic2NyaWJlcik9PntcclxuICAgICAgbGV0IG9zPXRoaXMuX3BlcnNpc3RlbnRBdWRpb1N0b3JhZ2VUYXJnZXQub2JqZWN0U3RvcmUoJ3JlYWR3cml0ZScpO1xyXG4gICAgICB0aGlzLmRlbGV0ZUFsbEJ1ZnMob3MsMCwoKT0+e1xyXG4gICAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xyXG4gICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcclxuICAgICAgfSwoZXJyKT0+e1xyXG4gICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKTtcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9TdHJpbmcoKTpzdHJpbmd7XHJcbiAgICByZXR1cm4gXCJJbmRleGVkIGRiIGF1ZGlvIGJ1ZmZlci4gQ2hhbm5lbHM6IFwiK3RoaXMuY2hhbm5lbENvdW50K1wiLCBzYW1wbGUgcmF0ZTogXCIrdGhpcy5zYW1wbGVSYXRlK1wiLCBjaHVuayBmcmFtZSBsZW5ndGg6IFwiK3RoaXMuX2NodW5rRnJhbWVMZW4rXCIsIG51bWJlciBvZiBjaHVua3M6IFwiK3RoaXMuY2h1bmtDb3VudCtcIiwgZnJhbWUgbGVuZ3RoOiBcIit0aGlzLmZyYW1lTGVuK1wiLCBzZWFsZWQ6IFwiK3RoaXMuc2VhbGVkKCk7XHJcbiAgfVxyXG5cclxuICBhc3luY0F1ZGlvSW5wdXRTdHJlYW0oKTogQXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSB8IG51bGwge1xyXG4gICAgcmV0dXJuIG5ldyBJbmRleGVkRGJBdWRpb0lucHV0U3RyZWFtKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgYXVkaW9JbnB1dFN0cmVhbSgpOiBGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSB8IG51bGwge1xyXG4gICAgLy8gU3luY2hyb25vdXMgc3RyZWFtIG5vdCBzdXBwb3J0ZWRcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGR1cmF0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2h1bmtGcmFtZUxlbi90aGlzLl9zYW1wbGVSYXRlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG51bWJlck9mQ2hhbm5lbHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ291bnQ7XHJcbiAgfVxyXG5cclxuICBzYW1wbGVDb3VudHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ291bnQqdGhpcy5fZnJhbWVMZW47XHJcbiAgfVxyXG5cclxuICByYW5kb21BY2Nlc3NBdWRpb1N0cmVhbSgpOiBSYW5kb21BY2Nlc3NBdWRpb1N0cmVhbSB7XHJcbiAgICByZXR1cm4gbmV3IEluZGV4ZWREYlJhbmRvbUFjY2Vzc1N0cmVhbSh0aGlzKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEluZGV4ZWREYlJhbmRvbUFjY2Vzc1N0cmVhbSBpbXBsZW1lbnRzIFJhbmRvbUFjY2Vzc0F1ZGlvU3RyZWFte1xyXG5cclxuICBwcml2YXRlIF9jdXJyQ2k9MDtcclxuICBwcml2YXRlIF9jY0NhY2hlOkZsb2F0MzJBcnJheVtdfG51bGw9bnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5kZGJBYjpJbmRleGVkRGJBdWRpb0J1ZmZlcikge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaHVuayhvczpJREJPYmplY3RTdG9yZSxjaTpudW1iZXIsY2I6KGJ1ZnM6QXJyYXk8RmxvYXQzMkFycmF5PnxudWxsKT0+dm9pZCxlcnJDYjooZXJyOkVycm9yKT0+dm9pZCl7XHJcblxyXG4gICAgLy8gQnVpbGQgYm91bmRzIGZvciBjaGFubmVsc1xyXG4gICAgbGV0IGxJZHg9W3RoaXMuX2luZGRiQWIudXVpZCxjaSwwXTtcclxuICAgIGxldCBoSWR4PVt0aGlzLl9pbmRkYkFiLnV1aWQsY2ksdGhpcy5faW5kZGJBYi5jaGFubmVsQ291bnRdO1xyXG4gICAgbGV0IGNoc0tyPUlEQktleVJhbmdlLmJvdW5kKGxJZHgsaElkeCk7XHJcblxyXG4gICAgbGV0IHJxPW9zLmdldEFsbChjaHNLcik7XHJcblxyXG4gICAgcnEub25zdWNjZXNzPSgpPT57XHJcbiAgICAgIGxldCBjYz1ycS5yZXN1bHQ7XHJcbiAgICAgIGxldCBjYzA7XHJcbiAgICAgIGxldCBjY0Nocz1jYy5sZW5ndGg7XHJcbiAgICAgIGlmKGNjQ2hzPT0wKXtcclxuICAgICAgICBjYihudWxsKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYoY2NDaHMhPT10aGlzLl9pbmRkYkFiLmNoYW5uZWxDb3VudCl7XHJcbiAgICAgICAgZXJyQ2IobmV3IEVycm9yKCdOdW1iZXIgb2YgY2hhbm5lbHMgb2YgaW5kZGIgZGF0YSAoJytjY0NocysnKSBkb2VzIG5vdCBtYXRjaCBudW1iZXIgb2YgY2hhbm5lbHMgKCcrdGhpcy5faW5kZGJBYi5jaGFubmVsQ291bnQrJyknKSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgaWYoY2MubGVuZ3RoPjApe1xyXG4gICAgICAgIGNjMD1jY1swXTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXJyQnVmPW5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KCk7XHJcbiAgICAgIGxldCBjY0xlbj1jYzAubGVuZ3RoO1xyXG4gICAgICBmb3IobGV0IGNoPTA7Y2g8Y2NDaHM7Y2grKyl7XHJcbiAgICAgICAgbGV0IGNoQXJyPW5ldyBGbG9hdDMyQXJyYXkoY2NMZW4pO1xyXG4gICAgICAgIGZvcihsZXQgc2k9MDtzaTxjY0xlbjtzaSsrKXtcclxuICAgICAgICAgIGNoQXJyW3NpXT1jY1tjaF1bc2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhcnJCdWYucHVzaChjaEFycik7XHJcbiAgICAgIH1cclxuICAgICAgY2IoYXJyQnVmKTtcclxuICAgIH1cclxuICAgIHJxLm9uZXJyb3I9KGVyckV2KT0+e1xyXG4gICAgICBlcnJDYihuZXcgRXJyb3IoZXJyRXYudG9TdHJpbmcoKSkpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbGxCdWZzKGNjQnVmczpGbG9hdDMyQXJyYXlbXSx0cmdTdGF0ZTp7ZnJhbWVQb3M6bnVtYmVyLGZyYW1lTGVuOm51bWJlcix0cmdCdWZzOkZsb2F0MzJBcnJheVtdLGZpbGxlZDpudW1iZXJ9LHNyY1N0YXRlOntzcmNGcmFtZVBvczpudW1iZXIsY2k6bnVtYmVyLGNjUG9zOm51bWJlcn0pe1xyXG4gICAgbGV0IGNjQnVmc0Nocz1jY0J1ZnMubGVuZ3RoO1xyXG4gICAgaWYoY2NCdWZzQ2hzPjApIHtcclxuICAgICAgbGV0IGNjQnVmMCA9IGNjQnVmc1swXTtcclxuICAgICAgbGV0IGNjQnVmc0xlbiA9IGNjQnVmMC5sZW5ndGg7XHJcblxyXG4gICAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmcyBmcmFtZVBvczogJytmcmFtZVBvcysnLCBzcmNGcmFtZVBvczogJytzcmNGcmFtZVBvcysnLCBjY0J1ZnNMZW46ICcrY2NCdWZzTGVuKTtcclxuICAgICAgaWYgKHRyZ1N0YXRlLmZyYW1lUG9zID49IHNyY1N0YXRlLnNyY0ZyYW1lUG9zICsgY2NCdWZzTGVuKSB7XHJcbiAgICAgICAgLy8gdGFyZ2V0IGZyYW1lIHBvc2l0aW9uIGlzIGFoZWFkLCBzZWVrIHRvIG5leHQgc291cmNlIGJ1ZmZlclxyXG4gICAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIHNlZWsgdG8gbmV4dCBpbmRkYiBidWZmZXInKTtcclxuICAgICAgICB0aGlzLl9jY0NhY2hlPW51bGw7XHJcbiAgICAgICAgc3JjU3RhdGUuY2krKztcclxuICAgICAgICBzcmNTdGF0ZS5jY1Bvcz0wO1xyXG4gICAgICAgIHNyY1N0YXRlLnNyY0ZyYW1lUG9zKz1jY0J1ZnNMZW47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gQXNzdW1pbmcgdGFyZ2V0IGZyYW1lIHBvcyBpcyBpbnNpZGUgY3VycmVudCBzb3VyY2UgYnVmZmVyXHJcbiAgICAgICAgc3JjU3RhdGUuY2NQb3M9dHJnU3RhdGUuZnJhbWVQb3Mtc3JjU3RhdGUuc3JjRnJhbWVQb3M7XHJcbiAgICAgICAgbGV0IGNjQXZhaWwgPSBjY0J1ZnNMZW4gLSBzcmNTdGF0ZS5jY1BvcztcclxuICAgICAgICBsZXQgdG9Db3B5ID0gY2NCdWZzTGVuO1xyXG5cclxuICAgICAgICBpZiAodG9Db3B5ID4gY2NBdmFpbCkge1xyXG4gICAgICAgICAgdG9Db3B5ID0gY2NBdmFpbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRvQ29weSA+IHRyZ1N0YXRlLmZyYW1lTGVuKSB7XHJcbiAgICAgICAgICB0b0NvcHkgPSB0cmdTdGF0ZS5mcmFtZUxlbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNjQnVmc0NoczsgY2grKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgc2kgPSAwOyBzaSA8IHRvQ29weTsgc2krKykge1xyXG4gICAgICAgICAgICB0cmdTdGF0ZS50cmdCdWZzW2NoXVt0cmdTdGF0ZS5maWxsZWQrc2ldID0gY2NCdWZzW2NoXVtzcmNTdGF0ZS5jY1BvcytzaV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyZ1N0YXRlLmZpbGxlZCArPSB0b0NvcHk7XHJcbiAgICAgICAgdHJnU3RhdGUuZnJhbWVMZW4gLT0gdG9Db3B5O1xyXG4gICAgICAgIHRyZ1N0YXRlLmZyYW1lUG9zICs9IHRvQ29weTtcclxuICAgICAgICBzcmNTdGF0ZS5jY1BvcyArPSB0b0NvcHk7XHJcbiAgICAgICAgaWYgKHNyY1N0YXRlLmNjUG9zID49IGNjQnVmc0xlbikge1xyXG4gICAgICAgICAgLy8gSW52YWxpZGF0ZSBjYWNoZVxyXG4gICAgICAgICAgdGhpcy5fY2NDYWNoZT1udWxsO1xyXG4gICAgICAgICAgc3JjU3RhdGUuY2krKztcclxuICAgICAgICAgIHRoaXMuX2N1cnJDaT1zcmNTdGF0ZS5jaTtcclxuICAgICAgICAgIHNyY1N0YXRlLmNjUG9zID0gMDtcclxuICAgICAgICAgIHNyY1N0YXRlLnNyY0ZyYW1lUG9zKz1jY0J1ZnNMZW47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsQnVmcyhvczpJREJPYmplY3RTdG9yZSx0cmdTdGF0ZTp7ZnJhbWVQb3M6bnVtYmVyLGZyYW1lTGVuOm51bWJlcix0cmdCdWZzOkZsb2F0MzJBcnJheVtdLGZpbGxlZDpudW1iZXJ9LHNyY1N0YXRlOntzcmNGcmFtZVBvczpudW1iZXIsY2k6bnVtYmVyLGNjUG9zOm51bWJlcixjY0ZpbGxlZDpudW1iZXJ9LGNiOihmaWxsZWQ6bnVtYmVyKT0+dm9pZCxjYkVuZDooZmlsbGVkOm51bWJlcik9PnZvaWQsY2JFcnI6KGVycjpFcnJvcik9PnZvaWQpe1xyXG4gICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnM6IGZyYW1lUG9zOicrdHJnU3RhdGUuZnJhbWVQb3MrJywgZnJhbWVMZW46ICcrdHJnU3RhdGUuZnJhbWVMZW4rJywgZmlsbGVkOiAnK3RyZ1N0YXRlLmZpbGxlZCsnLCBzcmNGcmFtZVBvczogJytzcmNTdGF0ZS5zcmNGcmFtZVBvcysnLGNpOiAnK3NyY1N0YXRlLmNpKycsIGNjUG9zOiAnK3NyY1N0YXRlLmNjUG9zKTtcclxuICAgIGlmKHRoaXMuX2NjQ2FjaGUpe1xyXG4gICAgICB0aGlzLl9maWxsQnVmcyh0aGlzLl9jY0NhY2hlLHRyZ1N0YXRlLHNyY1N0YXRlKTtcclxuICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgZnJhbWVMZW46ICcrdHJnU3RhdGUuZnJhbWVMZW4pO1xyXG4gICAgICBpZih0cmdTdGF0ZS5mcmFtZUxlbj09PTApe1xyXG4gICAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIChmcmFtZWxlbj09MCkgY2FsbDogY2JlbmQgJyt0cmdTdGF0ZS5maWxsZWQpO1xyXG4gICAgICAgIGNiRW5kKHRyZ1N0YXRlLmZpbGxlZCk7XHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICB0aGlzLmZpbGxCdWZzKG9zLCB0cmdTdGF0ZSwgc3JjU3RhdGUsIGNiLCBjYkVuZCwgY2JFcnIpO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIHRoaXMuY2h1bmsob3MsIHNyY1N0YXRlLmNpLCAoY2NCdWZzKSA9PiB7XHJcbiAgICAgICAgaWYgKGNjQnVmcykge1xyXG4gICAgICAgICAgdGhpcy5fY3VyckNpID0gc3JjU3RhdGUuY2k7XHJcbiAgICAgICAgICB0aGlzLl9jY0NhY2hlID0gY2NCdWZzO1xyXG5cclxuICAgICAgICAgIHRoaXMuX2ZpbGxCdWZzKGNjQnVmcywgdHJnU3RhdGUsIHNyY1N0YXRlKTtcclxuICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIGZyYW1lTGVuOiAnK3RyZ1N0YXRlLmZyYW1lTGVuKTtcclxuICAgICAgICAgIGlmICh0cmdTdGF0ZS5mcmFtZUxlbiA9PT0gMCkge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmcyAoZnJhbWVsZW49PTApIGNhbGw6IGNiZW5kICcrdHJnU3RhdGUuZmlsbGVkKTtcclxuICAgICAgICAgICAgY2JFbmQodHJnU3RhdGUuZmlsbGVkKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsbEJ1ZnMob3MsdHJnU3RhdGUsIHNyY1N0YXRlLCBjYiwgY2JFbmQsIGNiRXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgKGNodW5rIG5vdCBmb3VuZCkgY2FsbDogY2JlbmQgJyt0cmdTdGF0ZS5maWxsZWQpO1xyXG4gICAgICAgICAgY2JFbmQodHJnU3RhdGUuZmlsbGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICBjYkVycihlcnIpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBmcmFtZXNPYnMoZnJhbWVQb3M6bnVtYmVyLGZyYW1lTGVuOm51bWJlcixidWZzOkZsb2F0MzJBcnJheVtdKTpPYnNlcnZhYmxlPG51bWJlcj57XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8bnVtYmVyPigoc3Vic2NyaWJlcik9PntcclxuICAgICAgbGV0IHRyPXRoaXMuX2luZGRiQWIucGVyc2lzdGVudEF1ZGlvU3RvcmFnZVRhcmdldC50cmFuc2FjdGlvbigpO1xyXG4gICAgICBsZXQgb3M9dHIub2JqZWN0U3RvcmUodGhpcy5faW5kZGJBYi5wZXJzaXN0ZW50QXVkaW9TdG9yYWdlVGFyZ2V0LnN0b3JlTmFtZSk7XHJcbiAgICAgIC8vIFBvc2l0aW9uaW5nXHJcbiAgICAgIGxldCBuZXdDaT1NYXRoLmZsb29yKGZyYW1lUG9zL3RoaXMuX2luZGRiQWIuY2h1bmtGcmFtZUxlbik7XHJcbiAgICAgIGlmKG5ld0NpIT09dGhpcy5fY3VyckNpKXtcclxuICAgICAgICB0aGlzLl9jdXJyQ2k9bmV3Q2k7XHJcbiAgICAgICAgdGhpcy5fY2NDYWNoZT1udWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBzcmNGcmFtZVBvcz1uZXdDaSp0aGlzLl9pbmRkYkFiLmNodW5rRnJhbWVMZW47XHJcbiAgICAgIGxldCB0cmdTdGF0ZT17ZnJhbWVQb3M6ZnJhbWVQb3MsZnJhbWVMZW46ZnJhbWVMZW4sdHJnQnVmczpidWZzLGZpbGxlZDowfTtcclxuICAgICAgbGV0IHNyY1N0YXRlPXtzcmNGcmFtZVBvczpzcmNGcmFtZVBvcyxjaTpuZXdDaSxjY1BvczowLGNjRmlsbGVkOjB9O1xyXG4gICAgICB0aGlzLmZpbGxCdWZzKG9zLHRyZ1N0YXRlLHNyY1N0YXRlLCh2YWwpPT57fSwoZmlsbGVkOm51bWJlcik9PntcclxuICAgICAgICBzdWJzY3JpYmVyLm5leHQoZmlsbGVkKTtcclxuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0sZXJyID0+IHtcclxuICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycik7XHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VyckNpPTA7XHJcbiAgICB0aGlzLl9jY0NhY2hlPW51bGw7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5kZXhlZERiQXVkaW9JbnB1dFN0cmVhbSBpbXBsZW1lbnRzIEFzeW5jRmxvYXQzMkFycmF5SW5wdXRTdHJlYW17XHJcblxyXG4gIHByaXZhdGUgZnJhbWVQb3M6bnVtYmVyPTA7XHJcbiAgcHJpdmF0ZSBpbmRkYkFiU3RyOkluZGV4ZWREYlJhbmRvbUFjY2Vzc1N0cmVhbTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluZGRiQWI6SW5kZXhlZERiQXVkaW9CdWZmZXIpIHtcclxuICAgICAgdGhpcy5pbmRkYkFiU3RyPW5ldyBJbmRleGVkRGJSYW5kb21BY2Nlc3NTdHJlYW0oaW5kZGJBYik7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5kZGJBYlN0ci5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVhZE9icyhidWZmZXJzOiBBcnJheTxGbG9hdDMyQXJyYXk+KTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxudW1iZXI+KHN1YnNjcj0+IHtcclxuICAgICAgaWYgKGJ1ZmZlcnMgJiYgYnVmZmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IGZsID0gYnVmZmVyc1swXS5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5pbmRkYkFiU3RyLmZyYW1lc09icyh0aGlzLmZyYW1lUG9zLCBmbCwgYnVmZmVycykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZWFkKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZnJhbWVQb3MgKz0gcmVhZDtcclxuICAgICAgICAgICAgc3Vic2NyLm5leHQocmVhZCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgc3Vic2NyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgc3Vic2NyLmVycm9yKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgc3Vic2NyLm5leHQoMCk7XHJcbiAgICAgICAgc3Vic2NyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2tpcEZyYW1lcyhuOiBudW1iZXIpOnZvaWQge1xyXG4gICAgdGhpcy5mcmFtZVBvcys9bjtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -56,4 +56,4 @@ export class SequenceAudioFloat32OutStreamMultiplier {
|
|
|
56
56
|
return toWrite;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2lvL3N0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsNEJBQTRCLEVBQXdCLE1BQU0saUJBQWlCLENBQUM7QUFVcEYsTUFBTSxPQUFPLG9DQUFxQyxTQUFRLDRCQUE0QjtJQUlwRixZQUFZLFNBQXVDLEVBQVUsb0JBQTJCO1FBQ3RGLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUQwQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQU87UUFGaEYsZUFBVSxHQUFhLElBQUksQ0FBQztRQUlsQyxJQUFJLENBQUMsNkJBQTZCLEdBQUMsU0FBUyxDQUFDO0lBQy9DLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0IsRUFBQyxVQUFpQjtRQUMxQyxvSEFBb0g7UUFDcEgsSUFBSSxDQUFDLFFBQVEsR0FBQyxRQUFRLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBQyxVQUFVLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNoRSxvRkFBb0Y7UUFDcEYsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLENBQUMsNkJBQTZCLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUNBQXVDO0lBSWxEO1FBQ0UsSUFBSSxDQUFDLCtCQUErQixHQUFDLElBQUksS0FBSyxFQUFpQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxJQUFJLDhCQUE4QjtRQUNoQyxPQUFPLElBQUksQ0FBQywrQkFBK0IsQ0FBQztJQUM5QyxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCLEVBQUMsVUFBaUI7UUFDMUMsS0FBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsK0JBQStCLEVBQUMsQ0FBQztZQUNoRCxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUNELFVBQVU7UUFDUixLQUFJLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQywrQkFBK0IsRUFBQyxDQUFDO1lBQ2xELEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxLQUFJLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQywrQkFBK0IsRUFBQyxDQUFDO1lBQ2xELEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILEtBQUksSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLCtCQUErQixFQUFDLENBQUM7WUFDbEQsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsT0FBNEI7UUFDaEMsSUFBSSxPQUFPLEdBQVEsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNoQyxLQUFLLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQ3BELEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RmxvYXQzMkFycmF5Q2h1bmtlck91dFN0cmVhbSwgRmxvYXQzMkFycmF5T3V0U3RyZWFtfSBmcm9tIFwiLi4vLi4vaW8vc3RyZWFtXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGlvRmxvYXQzMk91dFN0cmVhbSBleHRlbmRzIEZsb2F0MzJBcnJheU91dFN0cmVhbXtcclxuICAgIHNldEZvcm1hdChjaGFubmVsczogbnVtYmVyLHNhbXBsZVJhdGU6bnVtYmVyKTp2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlcXVlbmNlQXVkaW9GbG9hdDMyT3V0U3RyZWFtIGV4dGVuZHMgQXVkaW9GbG9hdDMyT3V0U3RyZWFte1xyXG4gICAgbmV4dFN0cmVhbSgpOnZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTZXF1ZW5jZUF1ZGlvRmxvYXQzMkNodW5rZXJPdXRTdHJlYW0gZXh0ZW5kcyBGbG9hdDMyQXJyYXlDaHVua2VyT3V0U3RyZWFtIGltcGxlbWVudHMgU2VxdWVuY2VBdWRpb0Zsb2F0MzJPdXRTdHJlYW17XHJcblxyXG4gIHByaXZhdGUgc2FtcGxlUmF0ZTpudW1iZXJ8bnVsbD1udWxsO1xyXG4gIHByaXZhdGUgc2VxdWVuY2VBdWRpb0Zsb2F0MzJPdXRTdHJlYW06U2VxdWVuY2VBdWRpb0Zsb2F0MzJPdXRTdHJlYW07XHJcbiAgY29uc3RydWN0b3Iob3V0U3RyZWFtOlNlcXVlbmNlQXVkaW9GbG9hdDMyT3V0U3RyZWFtLCBwcml2YXRlIGNodW5rRHVyYXRpb25TZWNvbmRzOm51bWJlcil7XHJcbiAgICBzdXBlcihvdXRTdHJlYW0pO1xyXG4gICAgdGhpcy5zZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbT1vdXRTdHJlYW07XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtYXQoY2hhbm5lbHM6IG51bWJlcixzYW1wbGVSYXRlOm51bWJlcik6dm9pZHtcclxuICAgIC8vY29uc29sZS5kZWJ1ZyhcIlNlcXVlbmNlQXVkaW9GbG9hdDMyQ2h1bmtlck91dFN0cmVhbTpzZXRGb3JtYXQoY2hhbm5lbHM6IFwiK2NoYW5uZWxzK1wiLHNhbXBsZVJhdGU6IFwiK3NhbXBsZVJhdGUrXCIpXCIpXHJcbiAgICB0aGlzLmNoYW5uZWxzPWNoYW5uZWxzO1xyXG4gICAgdGhpcy5zYW1wbGVSYXRlPXNhbXBsZVJhdGU7XHJcbiAgICB0aGlzLmNodW5rU2l6ZT1NYXRoLnJvdW5kKHNhbXBsZVJhdGUqdGhpcy5jaHVua0R1cmF0aW9uU2Vjb25kcyk7XHJcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJTZXF1ZW5jZUF1ZGlvRmxvYXQzMkNodW5rZXJPdXRTdHJlYW06IGNodW5rU2l6ZTogXCIrdGhpcy5jaHVua1NpemUpO1xyXG4gICAgdGhpcy5zZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbS5zZXRGb3JtYXQoY2hhbm5lbHMsc2FtcGxlUmF0ZSk7XHJcbiAgfVxyXG4gIG5leHRTdHJlYW0oKTp2b2lke1xyXG4gICAgdGhpcy5zZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbS5uZXh0U3RyZWFtKCk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogU3RyZWFtcyBhIFNlcXVlbmNlQXVkaW9GbG9hdDMyT3V0U3RyZWFtIHRvIG11bHRpcGxlIHN0cmVhbXNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbU11bHRpcGxpZXIgaW1wbGVtZW50cyBTZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbXtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VxdWVuY2VBdWRpb0Zsb2F0MzJPdXRTdHJlYW1zITpBcnJheTxTZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fc2VxdWVuY2VBdWRpb0Zsb2F0MzJPdXRTdHJlYW1zPW5ldyBBcnJheTxTZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbT4oKTtcclxuICB9XHJcblxyXG4gIGdldCBzZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbXMoKTogQXJyYXk8U2VxdWVuY2VBdWRpb0Zsb2F0MzJPdXRTdHJlYW0+IHtcclxuICAgIHJldHVybiB0aGlzLl9zZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbXM7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtYXQoY2hhbm5lbHM6IG51bWJlcixzYW1wbGVSYXRlOm51bWJlcik6dm9pZHtcclxuICAgIGZvcihsZXQgb3Mgb2YgdGhpcy5fc2VxdWVuY2VBdWRpb0Zsb2F0MzJPdXRTdHJlYW1zKXtcclxuICAgICAgICBvcy5zZXRGb3JtYXQoY2hhbm5lbHMsc2FtcGxlUmF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5leHRTdHJlYW0oKTp2b2lke1xyXG4gICAgZm9yKGxldCBvcyBvZiB0aGlzLl9zZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbXMpe1xyXG4gICAgICBvcy5uZXh0U3RyZWFtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIGZvcihsZXQgb3Mgb2YgdGhpcy5fc2VxdWVuY2VBdWRpb0Zsb2F0MzJPdXRTdHJlYW1zKXtcclxuICAgICAgb3MuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZsdXNoKCk6IHZvaWQge1xyXG4gICAgZm9yKGxldCBvcyBvZiB0aGlzLl9zZXF1ZW5jZUF1ZGlvRmxvYXQzMk91dFN0cmVhbXMpe1xyXG4gICAgICBvcy5mbHVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGUoYnVmZmVyczogQXJyYXk8RmxvYXQzMkFycmF5Pik6IG51bWJlciB7XHJcbiAgICBsZXQgdG9Xcml0ZTpudW1iZXI9YnVmZmVycy5sZW5ndGg7XHJcbiAgICAgIGZvciAobGV0IG9zIG9mIHRoaXMuX3NlcXVlbmNlQXVkaW9GbG9hdDMyT3V0U3RyZWFtcykge1xyXG4gICAgICAgIG9zLndyaXRlKGJ1ZmZlcnMpO1xyXG4gICAgICB9XHJcbiAgICByZXR1cm4gdG9Xcml0ZTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -290,4 +290,4 @@ export class NetAudioInputStream {
|
|
|
290
290
|
this.framePos += n;
|
|
291
291
|
}
|
|
292
292
|
}
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0X2F1ZGlvX2J1ZmZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby9uZXRfYXVkaW9fYnVmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFjLGdCQUFnQixFQUEwQixNQUFNLHFCQUFxQixDQUFDO0FBQzNGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBSXZELE1BQU0sT0FBTyxjQUFlLFNBQVEsZ0JBQWdCO0lBRWxELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFLRCxZQUNvQixlQUFxQyxFQUNyQyxRQUFlLEVBQ2YsYUFBcUIsRUFDckIsV0FBbUIsRUFDbkIsY0FBcUIsRUFDckIsU0FBZ0IsRUFDaEIsUUFBa0IsSUFBSSxFQUN0Qix5QkFBdUIsY0FBYztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQVJVLG9CQUFlLEdBQWYsZUFBZSxDQUFzQjtRQUNyQyxhQUFRLEdBQVIsUUFBUSxDQUFPO1FBQ2Ysa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsbUJBQWMsR0FBZCxjQUFjLENBQU87UUFDckIsY0FBUyxHQUFU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QyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUE0QjtRQUNsQyxPQUFPLElBQUksVUFBVSxDQUFTLE1BQU0sQ0FBQSxFQUFFO1lBQ3BDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQzVELElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNiLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO3dCQUN0QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNwQixDQUFDO29CQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7d0JBQ2IsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNwQixDQUFDO29CQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3BCLENBQUM7aUJBQ0YsQ0FBQyxDQUFBO2FBQ0g7aUJBQUk7Z0JBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDZixNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbkI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBUztRQUNsQixJQUFJLENBQUMsUUFBUSxJQUFFLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7QXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSwgRmxvYXQzMkFycmF5SW5wdXRTdHJlYW19IGZyb20gXCIuLi9pby9zdHJlYW1cIjtcclxuaW1wb3J0IHtBdWRpb1NvdXJjZSwgQmFzaWNBdWRpb1NvdXJjZSwgUmFuZG9tQWNjZXNzQXVkaW9TdHJlYW19IGZyb20gXCIuL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2V9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0Jhc2ljUmVjb3JkaW5nU2VydmljZX0gZnJvbSBcIi4uL3NwZWVjaHJlY29yZGVyL3JlY29yZGluZ3MvYmFzaWNfcmVjb3JkaW5nLnNlcnZpY2VcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgTmV0QXVkaW9CdWZmZXIgZXh0ZW5kcyBCYXNpY0F1ZGlvU291cmNlIGltcGxlbWVudHMgQXVkaW9Tb3VyY2V7XHJcblxyXG4gIGdldCBvcmdGZXRjaENodW5rRnJhbWVMZW4oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9vcmdGZXRjaENodW5rRnJhbWVMZW47XHJcbiAgfVxyXG4gIGdldCByZWNGaWxlU2VydmljZSgpOiBCYXNpY1JlY29yZGluZ1NlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY0ZpbGVTZXJ2aWNlO1xyXG4gIH1cclxuICBnZXQgYmFzZVVybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Jhc2VVcmw7XHJcbiAgfVxyXG4gIGdldCBjaHVua0ZyYW1lTGVuKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2h1bmtGcmFtZUxlbjtcclxuICB9XHJcblxyXG4gIGdldCB1dWlkKCk6IHN0cmluZ3xudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl91dWlkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2h1bmtDb3VudD0wO1xyXG4gIHByaXZhdGUgX3NlYWxlZD1mYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVjRmlsZVNlcnZpY2U6QmFzaWNSZWNvcmRpbmdTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX2Jhc2VVcmw6c3RyaW5nLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5uZWxDb3VudDogbnVtYmVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX3NhbXBsZVJhdGU6IG51bWJlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIF9jaHVua0ZyYW1lTGVuOm51bWJlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIF9mcmFtZUxlbjpudW1iZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdXVpZDpzdHJpbmd8bnVsbD1udWxsLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX29yZ0ZldGNoQ2h1bmtGcmFtZUxlbj1fY2h1bmtGcmFtZUxlbikge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXQgY2hhbm5lbENvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvdW50O1xyXG4gIH1cclxuXHJcbiAgc2VhbGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlYWxlZDtcclxuICB9XHJcblxyXG4gIHNlYWwoKTp2b2lke1xyXG4gICAgdGhpcy5fc2VhbGVkPXRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgc2FtcGxlUmF0ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NhbXBsZVJhdGU7XHJcbiAgfVxyXG5cclxuICBnZXQgZnJhbWVMZW4oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9mcmFtZUxlbjtcclxuICB9XHJcblxyXG4gIGdldCBjaHVua0NvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2h1bmtDb3VudDtcclxuICB9XHJcblxyXG4gIHJlbGVhc2VBdWRpb0RhdGEoKTpPYnNlcnZhYmxlPHZvaWQ+e1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHZvaWQ+KChzdWJzY3JpYmVyKT0+e1xyXG4gICAgICAgIC8vIG5vdGhpbmcgdG8gcmVtb3ZlXHJcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KCk7XHJcbiAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZygpOnN0cmluZ3tcclxuICAgIHJldHVybiBcIkluZGV4ZWQgZGIgYXVkaW8gYnVmZmVyLiBDaGFubmVsczogXCIrdGhpcy5jaGFubmVsQ291bnQrXCIsIHNhbXBsZSByYXRlOiBcIit0aGlzLnNhbXBsZVJhdGUrXCIsIGNodW5rIGZyYW1lIGxlbmd0aDogXCIrdGhpcy5fY2h1bmtGcmFtZUxlbitcIiwgbnVtYmVyIG9mIGNodW5rczogXCIrdGhpcy5jaHVua0NvdW50K1wiLCBmcmFtZSBsZW5ndGg6IFwiK3RoaXMuZnJhbWVMZW4rXCIsIHNlYWxlZDogXCIrdGhpcy5zZWFsZWQoKTtcclxuICB9XHJcblxyXG4gICAgc3RhdGljIGZyb21DaHVua0F1ZGlvQnVmZmVyKHJlY29yZGluZ3NTZXJ2aWNlOkJhc2ljUmVjb3JkaW5nU2VydmljZSxiYXNlVXJsOnN0cmluZyxhYjogQXVkaW9CdWZmZXIsZnJhbWVMZW46bnVtYmVyLG9yZ0ZldGNoQ2h1bmtGcmFtZUxlbjpudW1iZXI9YWIubGVuZ3RoKTpOZXRBdWRpb0J1ZmZlciB7XHJcbiAgICAgIGxldCBuYWI9bmV3IE5ldEF1ZGlvQnVmZmVyKHJlY29yZGluZ3NTZXJ2aWNlLGJhc2VVcmwsYWIubnVtYmVyT2ZDaGFubmVscyxhYi5zYW1wbGVSYXRlLGFiLmxlbmd0aCxmcmFtZUxlbixudWxsLG9yZ0ZldGNoQ2h1bmtGcmFtZUxlbik7XHJcbiAgICAgIG5hYi5yZWFkeSgpO1xyXG4gICAgICByZXR1cm4gbmFiO1xyXG4gIH1cclxuXHJcbiAgYXN5bmNBdWRpb0lucHV0U3RyZWFtKCk6IEFzeW5jRmxvYXQzMkFycmF5SW5wdXRTdHJlYW0gfCBudWxsIHtcclxuICAgIHJldHVybiBuZXcgTmV0QXVkaW9JbnB1dFN0cmVhbSh0aGlzKTtcclxuICB9XHJcblxyXG4gIGF1ZGlvSW5wdXRTdHJlYW0oKTogRmxvYXQzMkFycmF5SW5wdXRTdHJlYW0gfCBudWxsIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGR1cmF0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZnJhbWVMZW4vdGhpcy5fc2FtcGxlUmF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBudW1iZXJPZkNoYW5uZWxzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvdW50O1xyXG4gIH1cclxuXHJcbiAgc2FtcGxlQ291bnRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvdW50KnRoaXMuX2ZyYW1lTGVuO1xyXG4gIH1cclxuXHJcbiAgcmFuZG9tQWNjZXNzQXVkaW9TdHJlYW0oKTogUmFuZG9tQWNjZXNzQXVkaW9TdHJlYW0ge1xyXG4gICAgcmV0dXJuIG5ldyBOZXRSYW5kb21BY2Nlc3NBdWRpb1N0cmVhbSh0aGlzKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIGV4cG9ydCBjbGFzcyBOZXRBdWRpb0NodW5re1xyXG4vL1xyXG4vLyAgIGdldCBvcmdTYW1wbGVSYXRlKCk6IG51bWJlciB7XHJcbi8vICAgICByZXR1cm4gdGhpcy5fb3JnU2FtcGxlUmF0ZTtcclxuLy8gICB9XHJcbi8vXHJcbi8vICAgZ2V0IG9yZ0ZyYW1lTGVuKCk6IG51bWJlciB7XHJcbi8vICAgICByZXR1cm4gdGhpcy5fb3JnRnJhbWVMZW47XHJcbi8vICAgfVxyXG4vLyAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RlY29kZWRCdWZmZXJzOkZsb2F0MzJBcnJheVtdLHByaXZhdGUgX29yZ1NhbXBsZVJhdGU6bnVtYmVyLHByaXZhdGUgX29yZ0ZyYW1lTGVuOm51bWJlcikge1xyXG4vLyAgIH1cclxuLy8gfVxyXG5cclxuZXhwb3J0IGNsYXNzIE5ldFJhbmRvbUFjY2Vzc0F1ZGlvU3RyZWFtIGltcGxlbWVudHMgUmFuZG9tQWNjZXNzQXVkaW9TdHJlYW17XHJcblxyXG4gIHByaXZhdGUgX2N1cnJDaT0wO1xyXG4gIHByaXZhdGUgX2NjQ2FjaGU6RmxvYXQzMkFycmF5W118bnVsbD1udWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9uZXRBYjpOZXRBdWRpb0J1ZmZlcikge31cclxuXHJcbiAgcHJpdmF0ZSBjaHVuayhiYXNlVXJsOnN0cmluZyxjaTpudW1iZXIsY2I6KGJ1ZnM6QXJyYXk8RmxvYXQzMkFycmF5PnxudWxsLG9yZ0ZyYW1lTGVuZ3RoOm51bWJlcnxudWxsKT0+dm9pZCxlcnJDYjooZXJyOkVycm9yKT0+dm9pZCl7XHJcblxyXG4gICAgbGV0IHN0YXJ0RnJhbWU9Y2kqdGhpcy5fbmV0QWIub3JnRmV0Y2hDaHVua0ZyYW1lTGVuO1xyXG5cclxuICAgIHRoaXMuX25ldEFiLnJlY0ZpbGVTZXJ2aWNlLmNodW5rQXVkaW9SZXF1ZXN0KGJhc2VVcmwsc3RhcnRGcmFtZSx0aGlzLl9uZXRBYi5vcmdGZXRjaENodW5rRnJhbWVMZW4pLnN1YnNjcmliZShcclxuICAgICAge1xyXG5cclxuICAgICAgICBuZXh0OiAoY2hEbCk9PntcclxuICAgICAgICAgIGlmKGNoRGwpe1xyXG4gICAgICAgICAgICBjb25zdCBhYj1jaERsLmRlY29kZWRBdWRpb0J1ZmZlcjtcclxuICAgICAgICAgICAgY29uc3QgY2NDaHM9YWIubnVtYmVyT2ZDaGFubmVscztcclxuICAgICAgICAgICAgbGV0IGFyckJ1Zj1uZXcgQXJyYXk8RmxvYXQzMkFycmF5PigpO1xyXG4gICAgICAgICAgICBmb3IobGV0IGNoPTA7Y2g8Y2NDaHM7Y2grKyl7XHJcbiAgICAgICAgICAgICAgYXJyQnVmLnB1c2goYWIuZ2V0Q2hhbm5lbERhdGEoY2gpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYihhcnJCdWYsY2hEbC5vcmdGcmFtZUxlbmd0aCk7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgY2IobnVsbCxudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKT0+e30sXHJcbiAgICAgICAgZXJyb3I6KGVyckV2KT0+e1xyXG4gICAgICAgICAgLy9OZXRSYW5kb21BY2Nlc3NBdWRpb1N0cmVhbS5fcnVubmluZ1JlcXVlc3RzLS07XHJcbiAgICAgICAgICBpZihlcnJFdiBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKXtcclxuICAgICAgICAgICBpZihlcnJFdi5zdGF0dXM9PT00MDQpe1xyXG4gICAgICAgICAgICAgY2IobnVsbCxudWxsKTtcclxuICAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiTmV0IGF1ZGlvIGJ1ZmZlciBjaHVuayBhdWRpbyByZXF1ZXN0IEh0dHAgZXJyb3IgZXZlbnQ6IFwiK2VyckV2LnN0YXR1cytcIiwgXCIrZXJyRXYubmFtZStcIiwgXCIrZXJyRXYubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICBlcnJDYihuZXcgRXJyb3IoZXJyRXYudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIk5ldCBhdWRpbyBidWZmZXIgY2h1bmsgYXVkaW8gcmVxdWVzdCBlcnJvciBldmVudDogXCIrZXJyRXYubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGVyckNiKG5ldyBFcnJvcihlcnJFdi50b1N0cmluZygpKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsbEJ1ZnMoY2NCdWZzOkZsb2F0MzJBcnJheVtdLG9yZ0ZyYW1lTGVuOm51bWJlcnxudWxsLHRyZ1N0YXRlOntmcmFtZVBvczpudW1iZXIsZnJhbWVMZW46bnVtYmVyLHRyZ0J1ZnM6RmxvYXQzMkFycmF5W10sZmlsbGVkOm51bWJlcn0sc3JjU3RhdGU6e29yZ1NyY0ZyYW1lUG9zOm51bWJlcixzcmNGcmFtZVBvczpudW1iZXIsY2k6bnVtYmVyLGNjUG9zOm51bWJlcn0pe1xyXG4gICAgbGV0IGNjQnVmc0Nocz1jY0J1ZnMubGVuZ3RoO1xyXG4gICAgaWYoY2NCdWZzQ2hzPjApIHtcclxuICAgICAgbGV0IGNjQnVmMCA9IGNjQnVmc1swXTtcclxuICAgICAgbGV0IGNjQnVmc0xlbiA9IGNjQnVmMC5sZW5ndGg7XHJcblxyXG4gICAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmcyBmcmFtZVBvczogJytmcmFtZVBvcysnLCBzcmNGcmFtZVBvczogJytzcmNGcmFtZVBvcysnLCBjY0J1ZnNMZW46ICcrY2NCdWZzTGVuKTtcclxuICAgICAgaWYgKHRyZ1N0YXRlLmZyYW1lUG9zID49IHNyY1N0YXRlLnNyY0ZyYW1lUG9zICsgY2NCdWZzTGVuKSB7XHJcbiAgICAgICAgLy8gdGFyZ2V0IGZyYW1lIHBvc2l0aW9uIGlzIGFoZWFkLCBzZWVrIHRvIG5leHQgc291cmNlIGJ1ZmZlclxyXG4gICAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIHNlZWsgdG8gbmV4dCBpbmRkYiBidWZmZXInKTtcclxuICAgICAgICB0aGlzLl9jY0NhY2hlPW51bGw7XHJcbiAgICAgICAgc3JjU3RhdGUuY2krKztcclxuICAgICAgICBzcmNTdGF0ZS5jY1Bvcz0wO1xyXG4gICAgICAgIGlmKG9yZ0ZyYW1lTGVuPT09bnVsbCl7XHJcbiAgICAgICAgICBzcmNTdGF0ZS5vcmdTcmNGcmFtZVBvcys9Y2NCdWZzTGVuO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgc3JjU3RhdGUub3JnU3JjRnJhbWVQb3MrPW9yZ0ZyYW1lTGVuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzcmNTdGF0ZS5zcmNGcmFtZVBvcys9Y2NCdWZzTGVuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEFzc3VtaW5nIHRhcmdldCBmcmFtZSBwb3MgaXMgaW5zaWRlIGN1cnJlbnQgc291cmNlIGJ1ZmZlclxyXG4gICAgICAgIHNyY1N0YXRlLmNjUG9zPXRyZ1N0YXRlLmZyYW1lUG9zLXNyY1N0YXRlLnNyY0ZyYW1lUG9zO1xyXG4gICAgICAgIGxldCBjY0F2YWlsID0gY2NCdWZzTGVuIC0gc3JjU3RhdGUuY2NQb3M7XHJcbiAgICAgICAgbGV0IHRvQ29weSA9IGNjQnVmc0xlbjtcclxuXHJcbiAgICAgICAgaWYgKHRvQ29weSA+IGNjQXZhaWwpIHtcclxuICAgICAgICAgIHRvQ29weSA9IGNjQXZhaWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0b0NvcHkgPiB0cmdTdGF0ZS5mcmFtZUxlbikge1xyXG4gICAgICAgICAgdG9Db3B5ID0gdHJnU3RhdGUuZnJhbWVMZW47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjY0J1ZnNDaHM7IGNoKyspIHtcclxuICAgICAgICAgIGZvciAobGV0IHNpID0gMDsgc2kgPCB0b0NvcHk7IHNpKyspIHtcclxuICAgICAgICAgICAgdHJnU3RhdGUudHJnQnVmc1tjaF1bdHJnU3RhdGUuZmlsbGVkK3NpXSA9IGNjQnVmc1tjaF1bc3JjU3RhdGUuY2NQb3Mrc2ldO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0cmdTdGF0ZS5maWxsZWQgKz0gdG9Db3B5O1xyXG4gICAgICAgIHRyZ1N0YXRlLmZyYW1lTGVuIC09IHRvQ29weTtcclxuICAgICAgICB0cmdTdGF0ZS5mcmFtZVBvcyArPSB0b0NvcHk7XHJcbiAgICAgICAgc3JjU3RhdGUuY2NQb3MgKz0gdG9Db3B5O1xyXG4gICAgICAgIGlmIChzcmNTdGF0ZS5jY1BvcyA+PSBjY0J1ZnNMZW4pIHtcclxuICAgICAgICAgIC8vIEludmFsaWRhdGUgY2FjaGVcclxuICAgICAgICAgIHRoaXMuX2NjQ2FjaGU9bnVsbDtcclxuICAgICAgICAgIHNyY1N0YXRlLmNpKys7XHJcbiAgICAgICAgICB0aGlzLl9jdXJyQ2k9c3JjU3RhdGUuY2k7XHJcbiAgICAgICAgICBzcmNTdGF0ZS5jY1BvcyA9IDA7XHJcbiAgICAgICAgICBpZihvcmdGcmFtZUxlbj09PW51bGwpe1xyXG4gICAgICAgICAgICBzcmNTdGF0ZS5vcmdTcmNGcmFtZVBvcys9Y2NCdWZzTGVuO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHNyY1N0YXRlLm9yZ1NyY0ZyYW1lUG9zKz1vcmdGcmFtZUxlbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHNyY1N0YXRlLnNyY0ZyYW1lUG9zKz1jY0J1ZnNMZW47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsQnVmcyhiYXNlVXJsOnN0cmluZyxvcmdGcmFtZUxlbjpudW1iZXJ8bnVsbCx0cmdTdGF0ZTp7ZnJhbWVQb3M6bnVtYmVyLGZyYW1lTGVuOm51bWJlcix0cmdCdWZzOkZsb2F0MzJBcnJheVtdLGZpbGxlZDpudW1iZXJ9LHNyY1N0YXRlOntvcmdTcmNGcmFtZVBvczpudW1iZXIsc3JjRnJhbWVQb3M6bnVtYmVyLGNpOm51bWJlcixjY1BvczpudW1iZXIsY2NGaWxsZWQ6bnVtYmVyfSxjYjooZmlsbGVkOm51bWJlcik9PnZvaWQsY2JFbmQ6KGZpbGxlZDpudW1iZXIpPT52b2lkLGNiRXJyOihlcnI6RXJyb3IpPT52b2lkKXtcclxuICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzOiBmcmFtZVBvczonK2ZyYW1lUG9zKycsIGZyYW1lTGVuOiAnK2ZyYW1lTGVuKycsIGZpbGxlZDogJytmaWxsZWQrJywgc3JjRnJhbWVQb3M6ICcrc3JjRnJhbWVQb3MrJyxjaTogJytjaSsnLCBjY1BvczogJytjY1Bvcyk7XHJcbiAgICBpZih0aGlzLl9jY0NhY2hlKXtcclxuICAgICAgdGhpcy5fZmlsbEJ1ZnModGhpcy5fY2NDYWNoZSxvcmdGcmFtZUxlbix0cmdTdGF0ZSxzcmNTdGF0ZSk7XHJcbiAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIGZyYW1lTGVuOiAnK2ZyYW1lTGVuKTtcclxuICAgICAgaWYodHJnU3RhdGUuZnJhbWVMZW49PT0wKXtcclxuICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmcyAoZnJhbWVsZW49PTApIGNhbGw6IGNiZW5kICcrZmlsbGVkKTtcclxuICAgICAgICBjYkVuZCh0cmdTdGF0ZS5maWxsZWQpO1xyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWxsQnVmcyhiYXNlVXJsLCBvcmdGcmFtZUxlbix0cmdTdGF0ZSwgc3JjU3RhdGUsIGNiLCBjYkVuZCwgY2JFcnIpO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIHRoaXMuY2h1bmsoYmFzZVVybCwgc3JjU3RhdGUuY2ksIChjY0J1ZnMsb3JnRnJhbWVMZW5ndGgpID0+IHtcclxuICAgICAgICBpZiAoY2NCdWZzKSB7XHJcbiAgICAgICAgICB0aGlzLl9jdXJyQ2kgPSBzcmNTdGF0ZS5jaTtcclxuICAgICAgICAgIHRoaXMuX2NjQ2FjaGUgPSBjY0J1ZnM7XHJcblxyXG4gICAgICAgICAgdGhpcy5fZmlsbEJ1ZnMoY2NCdWZzLCBvcmdGcmFtZUxlbmd0aCx0cmdTdGF0ZSwgc3JjU3RhdGUpO1xyXG4gICAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgZnJhbWVMZW46ICcrZnJhbWVMZW4pO1xyXG4gICAgICAgICAgaWYgKHRyZ1N0YXRlLmZyYW1lTGVuID09PSAwKSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIChmcmFtZWxlbj09MCkgY2FsbDogY2JlbmQgJytmaWxsZWQpO1xyXG4gICAgICAgICAgICBjYkVuZCh0cmdTdGF0ZS5maWxsZWQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5maWxsQnVmcyhiYXNlVXJsLG9yZ0ZyYW1lTGVuLHRyZ1N0YXRlLCBzcmNTdGF0ZSwgY2IsIGNiRW5kLCBjYkVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIChjaHVuayBub3QgZm91bmQpIGNhbGw6IGNiZW5kICcrZmlsbGVkKTtcclxuICAgICAgICAgIGNiRW5kKHRyZ1N0YXRlLmZpbGxlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgY2JFcnIoZXJyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZnJhbWVzT2JzKGZyYW1lUG9zOm51bWJlcixmcmFtZUxlbjpudW1iZXIsYnVmczpGbG9hdDMyQXJyYXlbXSk6T2JzZXJ2YWJsZTxudW1iZXI+e1xyXG5cclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxudW1iZXI+KChzdWJzY3JpYmVyKT0+e1xyXG4gICAgICAvLyBQb3NpdGlvbmluZ1xyXG4gICAgICBsZXQgbmV3Q2k9TWF0aC5mbG9vcihmcmFtZVBvcy90aGlzLl9uZXRBYi5jaHVua0ZyYW1lTGVuKTtcclxuICAgICAgaWYobmV3Q2khPT10aGlzLl9jdXJyQ2kpe1xyXG4gICAgICAgIHRoaXMuX2N1cnJDaT1uZXdDaTtcclxuICAgICAgICB0aGlzLl9jY0NhY2hlPW51bGw7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHNyY0ZyYW1lUG9zPW5ld0NpKnRoaXMuX25ldEFiLmNodW5rRnJhbWVMZW47XHJcbiAgICAgIGxldCB0cmdTdGF0ZT17ZnJhbWVQb3M6ZnJhbWVQb3MsZnJhbWVMZW46ZnJhbWVMZW4sdHJnQnVmczpidWZzLGZpbGxlZDowfTtcclxuICAgICAgbGV0IHNyY1N0YXRlPXtvcmdTcmNGcmFtZVBvczowLHNyY0ZyYW1lUG9zOnNyY0ZyYW1lUG9zLGNpOm5ld0NpLGNjUG9zOjAsY2NGaWxsZWQ6MH07XHJcbiAgICAgIHRoaXMuZmlsbEJ1ZnModGhpcy5fbmV0QWIuYmFzZVVybCx0aGlzLl9uZXRBYi5vcmdGZXRjaENodW5rRnJhbWVMZW4sdHJnU3RhdGUsc3JjU3RhdGUsKHZhbCk9Pnt9LChmaWxsZWQ6bnVtYmVyKT0+e1xyXG4gICAgICAgIHN1YnNjcmliZXIubmV4dChmaWxsZWQpO1xyXG4gICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcclxuICAgICAgfSxlcnIgPT4ge1xyXG4gICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKTtcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdXJyQ2k9MDtcclxuICAgIHRoaXMuX2NjQ2FjaGU9bnVsbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBOZXRBdWRpb0lucHV0U3RyZWFtIGltcGxlbWVudHMgQXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbXtcclxuXHJcbiAgcHJpdmF0ZSBmcmFtZVBvczpudW1iZXI9MDtcclxuICBwcml2YXRlIG5ldEFiU3RyOk5ldFJhbmRvbUFjY2Vzc0F1ZGlvU3RyZWFtO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmV0QWI6TmV0QXVkaW9CdWZmZXIpIHtcclxuICAgICAgdGhpcy5uZXRBYlN0cj1uZXcgTmV0UmFuZG9tQWNjZXNzQXVkaW9TdHJlYW0obmV0QWIpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5ldEFiU3RyLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICByZWFkT2JzKGJ1ZmZlcnM6IEFycmF5PEZsb2F0MzJBcnJheT4pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPG51bWJlcj4oc3Vic2NyPT4ge1xyXG4gICAgICBpZiAoYnVmZmVycyAmJiBidWZmZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgZmwgPSBidWZmZXJzWzBdLmxlbmd0aDtcclxuICAgICAgICB0aGlzLm5ldEFiU3RyLmZyYW1lc09icyh0aGlzLmZyYW1lUG9zLCBmbCwgYnVmZmVycykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZWFkKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZnJhbWVQb3MgKz0gcmVhZDtcclxuICAgICAgICAgICAgc3Vic2NyLm5leHQocmVhZCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgc3Vic2NyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgc3Vic2NyLmVycm9yKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgc3Vic2NyLm5leHQoMCk7XHJcbiAgICAgICAgc3Vic2NyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2tpcEZyYW1lcyhuOiBudW1iZXIpOnZvaWQge1xyXG4gICAgdGhpcy5mcmFtZVBvcys9bjtcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
|
|
293
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0X2F1ZGlvX2J1ZmZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby9uZXRfYXVkaW9fYnVmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFjLGdCQUFnQixFQUEwQixNQUFNLHFCQUFxQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXpELE1BQU0sT0FBTyxjQUFlLFNBQVEsZ0JBQWdCO0lBRWxELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFLRCxZQUNvQixlQUFxQyxFQUNyQyxRQUFlLEVBQ2YsYUFBcUIsRUFDckIsV0FBbUIsRUFDbkIsY0FBcUIsRUFDckIsU0FBZ0IsRUFDaEIsUUFBa0IsSUFBSSxFQUN0Qix5QkFBdUIsY0FBYztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQVJVLG9CQUFlLEdBQWYsZUFBZSxDQUFzQjtRQUNyQyxhQUFRLEdBQVIsUUFBUSxDQUFPO1FBQ2Ysa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsbUJBQWMsR0FBZCxjQUFjLENBQU87UUFDckIsY0FBUyxHQUFU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QkFBSSxDQUFDO2dCQUNKLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBUztRQUNsQixJQUFJLENBQUMsUUFBUSxJQUFFLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7QXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSwgRmxvYXQzMkFycmF5SW5wdXRTdHJlYW19IGZyb20gXCIuLi9pby9zdHJlYW1cIjtcclxuaW1wb3J0IHtBdWRpb1NvdXJjZSwgQmFzaWNBdWRpb1NvdXJjZSwgUmFuZG9tQWNjZXNzQXVkaW9TdHJlYW19IGZyb20gXCIuL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7QmFzaWNSZWNvcmRpbmdTZXJ2aWNlfSBmcm9tIFwiLi4vc3BlZWNocmVjb3JkZXIvcmVjb3JkaW5ncy9iYXNpY19yZWNvcmRpbmcuc2VydmljZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBOZXRBdWRpb0J1ZmZlciBleHRlbmRzIEJhc2ljQXVkaW9Tb3VyY2UgaW1wbGVtZW50cyBBdWRpb1NvdXJjZXtcclxuXHJcbiAgZ2V0IG9yZ0ZldGNoQ2h1bmtGcmFtZUxlbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX29yZ0ZldGNoQ2h1bmtGcmFtZUxlbjtcclxuICB9XHJcbiAgZ2V0IHJlY0ZpbGVTZXJ2aWNlKCk6IEJhc2ljUmVjb3JkaW5nU2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVjRmlsZVNlcnZpY2U7XHJcbiAgfVxyXG4gIGdldCBiYXNlVXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYmFzZVVybDtcclxuICB9XHJcbiAgZ2V0IGNodW5rRnJhbWVMZW4oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaHVua0ZyYW1lTGVuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHV1aWQoKTogc3RyaW5nfG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3V1aWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaHVua0NvdW50PTA7XHJcbiAgcHJpdmF0ZSBfc2VhbGVkPWZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgICAgICAgICAgICBwcml2YXRlIF9yZWNGaWxlU2VydmljZTpCYXNpY1JlY29yZGluZ1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfYmFzZVVybDpzdHJpbmcsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfY2hhbm5lbENvdW50OiBudW1iZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfc2FtcGxlUmF0ZTogbnVtYmVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NodW5rRnJhbWVMZW46bnVtYmVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX2ZyYW1lTGVuOm51bWJlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIF91dWlkOnN0cmluZ3xudWxsPW51bGwsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfb3JnRmV0Y2hDaHVua0ZyYW1lTGVuPV9jaHVua0ZyYW1lTGVuKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICB9XHJcblxyXG4gIGdldCBjaGFubmVsQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ291bnQ7XHJcbiAgfVxyXG5cclxuICBzZWFsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VhbGVkO1xyXG4gIH1cclxuXHJcbiAgc2VhbCgpOnZvaWR7XHJcbiAgICB0aGlzLl9zZWFsZWQ9dHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldCBzYW1wbGVSYXRlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2FtcGxlUmF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBmcmFtZUxlbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZyYW1lTGVuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNodW5rQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaHVua0NvdW50O1xyXG4gIH1cclxuXHJcbiAgcmVsZWFzZUF1ZGlvRGF0YSgpOk9ic2VydmFibGU8dm9pZD57XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dm9pZD4oKHN1YnNjcmliZXIpPT57XHJcbiAgICAgICAgLy8gbm90aGluZyB0byByZW1vdmVcclxuICAgICAgICBzdWJzY3JpYmVyLm5leHQoKTtcclxuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvU3RyaW5nKCk6c3RyaW5ne1xyXG4gICAgcmV0dXJuIFwiSW5kZXhlZCBkYiBhdWRpbyBidWZmZXIuIENoYW5uZWxzOiBcIit0aGlzLmNoYW5uZWxDb3VudCtcIiwgc2FtcGxlIHJhdGU6IFwiK3RoaXMuc2FtcGxlUmF0ZStcIiwgY2h1bmsgZnJhbWUgbGVuZ3RoOiBcIit0aGlzLl9jaHVua0ZyYW1lTGVuK1wiLCBudW1iZXIgb2YgY2h1bmtzOiBcIit0aGlzLmNodW5rQ291bnQrXCIsIGZyYW1lIGxlbmd0aDogXCIrdGhpcy5mcmFtZUxlbitcIiwgc2VhbGVkOiBcIit0aGlzLnNlYWxlZCgpO1xyXG4gIH1cclxuXHJcbiAgICBzdGF0aWMgZnJvbUNodW5rQXVkaW9CdWZmZXIocmVjb3JkaW5nc1NlcnZpY2U6QmFzaWNSZWNvcmRpbmdTZXJ2aWNlLGJhc2VVcmw6c3RyaW5nLGFiOiBBdWRpb0J1ZmZlcixmcmFtZUxlbjpudW1iZXIsb3JnRmV0Y2hDaHVua0ZyYW1lTGVuOm51bWJlcj1hYi5sZW5ndGgpOk5ldEF1ZGlvQnVmZmVyIHtcclxuICAgICAgbGV0IG5hYj1uZXcgTmV0QXVkaW9CdWZmZXIocmVjb3JkaW5nc1NlcnZpY2UsYmFzZVVybCxhYi5udW1iZXJPZkNoYW5uZWxzLGFiLnNhbXBsZVJhdGUsYWIubGVuZ3RoLGZyYW1lTGVuLG51bGwsb3JnRmV0Y2hDaHVua0ZyYW1lTGVuKTtcclxuICAgICAgbmFiLnJlYWR5KCk7XHJcbiAgICAgIHJldHVybiBuYWI7XHJcbiAgfVxyXG5cclxuICBhc3luY0F1ZGlvSW5wdXRTdHJlYW0oKTogQXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSB8IG51bGwge1xyXG4gICAgcmV0dXJuIG5ldyBOZXRBdWRpb0lucHV0U3RyZWFtKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgYXVkaW9JbnB1dFN0cmVhbSgpOiBGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSB8IG51bGwge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXQgZHVyYXRpb24oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9mcmFtZUxlbi90aGlzLl9zYW1wbGVSYXRlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG51bWJlck9mQ2hhbm5lbHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ291bnQ7XHJcbiAgfVxyXG5cclxuICBzYW1wbGVDb3VudHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ291bnQqdGhpcy5fZnJhbWVMZW47XHJcbiAgfVxyXG5cclxuICByYW5kb21BY2Nlc3NBdWRpb1N0cmVhbSgpOiBSYW5kb21BY2Nlc3NBdWRpb1N0cmVhbSB7XHJcbiAgICByZXR1cm4gbmV3IE5ldFJhbmRvbUFjY2Vzc0F1ZGlvU3RyZWFtKHRoaXMpO1xyXG4gIH1cclxufVxyXG5cclxuLy8gZXhwb3J0IGNsYXNzIE5ldEF1ZGlvQ2h1bmt7XHJcbi8vXHJcbi8vICAgZ2V0IG9yZ1NhbXBsZVJhdGUoKTogbnVtYmVyIHtcclxuLy8gICAgIHJldHVybiB0aGlzLl9vcmdTYW1wbGVSYXRlO1xyXG4vLyAgIH1cclxuLy9cclxuLy8gICBnZXQgb3JnRnJhbWVMZW4oKTogbnVtYmVyIHtcclxuLy8gICAgIHJldHVybiB0aGlzLl9vcmdGcmFtZUxlbjtcclxuLy8gICB9XHJcbi8vICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGVjb2RlZEJ1ZmZlcnM6RmxvYXQzMkFycmF5W10scHJpdmF0ZSBfb3JnU2FtcGxlUmF0ZTpudW1iZXIscHJpdmF0ZSBfb3JnRnJhbWVMZW46bnVtYmVyKSB7XHJcbi8vICAgfVxyXG4vLyB9XHJcblxyXG5leHBvcnQgY2xhc3MgTmV0UmFuZG9tQWNjZXNzQXVkaW9TdHJlYW0gaW1wbGVtZW50cyBSYW5kb21BY2Nlc3NBdWRpb1N0cmVhbXtcclxuXHJcbiAgcHJpdmF0ZSBfY3VyckNpPTA7XHJcbiAgcHJpdmF0ZSBfY2NDYWNoZTpGbG9hdDMyQXJyYXlbXXxudWxsPW51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX25ldEFiOk5ldEF1ZGlvQnVmZmVyKSB7fVxyXG5cclxuICBwcml2YXRlIGNodW5rKGJhc2VVcmw6c3RyaW5nLGNpOm51bWJlcixjYjooYnVmczpBcnJheTxGbG9hdDMyQXJyYXk+fG51bGwsb3JnRnJhbWVMZW5ndGg6bnVtYmVyfG51bGwpPT52b2lkLGVyckNiOihlcnI6RXJyb3IpPT52b2lkKXtcclxuXHJcbiAgICBsZXQgc3RhcnRGcmFtZT1jaSp0aGlzLl9uZXRBYi5vcmdGZXRjaENodW5rRnJhbWVMZW47XHJcblxyXG4gICAgdGhpcy5fbmV0QWIucmVjRmlsZVNlcnZpY2UuY2h1bmtBdWRpb1JlcXVlc3QoYmFzZVVybCxzdGFydEZyYW1lLHRoaXMuX25ldEFiLm9yZ0ZldGNoQ2h1bmtGcmFtZUxlbikuc3Vic2NyaWJlKFxyXG4gICAgICB7XHJcblxyXG4gICAgICAgIG5leHQ6IChjaERsKT0+e1xyXG4gICAgICAgICAgaWYoY2hEbCl7XHJcbiAgICAgICAgICAgIGNvbnN0IGFiPWNoRGwuZGVjb2RlZEF1ZGlvQnVmZmVyO1xyXG4gICAgICAgICAgICBjb25zdCBjY0Nocz1hYi5udW1iZXJPZkNoYW5uZWxzO1xyXG4gICAgICAgICAgICBsZXQgYXJyQnVmPW5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KCk7XHJcbiAgICAgICAgICAgIGZvcihsZXQgY2g9MDtjaDxjY0NocztjaCsrKXtcclxuICAgICAgICAgICAgICBhcnJCdWYucHVzaChhYi5nZXRDaGFubmVsRGF0YShjaCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNiKGFyckJ1ZixjaERsLm9yZ0ZyYW1lTGVuZ3RoKTtcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBjYihudWxsLG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpPT57fSxcclxuICAgICAgICBlcnJvcjooZXJyRXYpPT57XHJcbiAgICAgICAgICAvL05ldFJhbmRvbUFjY2Vzc0F1ZGlvU3RyZWFtLl9ydW5uaW5nUmVxdWVzdHMtLTtcclxuICAgICAgICAgIGlmKGVyckV2IGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2Upe1xyXG4gICAgICAgICAgIGlmKGVyckV2LnN0YXR1cz09PTQwNCl7XHJcbiAgICAgICAgICAgICBjYihudWxsLG51bGwpO1xyXG4gICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJOZXQgYXVkaW8gYnVmZmVyIGNodW5rIGF1ZGlvIHJlcXVlc3QgSHR0cCBlcnJvciBldmVudDogXCIrZXJyRXYuc3RhdHVzK1wiLCBcIitlcnJFdi5uYW1lK1wiLCBcIitlcnJFdi5tZXNzYWdlKTtcclxuICAgICAgICAgICAgIGVyckNiKG5ldyBFcnJvcihlcnJFdi50b1N0cmluZygpKSk7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiTmV0IGF1ZGlvIGJ1ZmZlciBjaHVuayBhdWRpbyByZXF1ZXN0IGVycm9yIGV2ZW50OiBcIitlcnJFdi5tZXNzYWdlKTtcclxuICAgICAgICAgICAgZXJyQ2IobmV3IEVycm9yKGVyckV2LnRvU3RyaW5nKCkpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWxsQnVmcyhjY0J1ZnM6RmxvYXQzMkFycmF5W10sb3JnRnJhbWVMZW46bnVtYmVyfG51bGwsdHJnU3RhdGU6e2ZyYW1lUG9zOm51bWJlcixmcmFtZUxlbjpudW1iZXIsdHJnQnVmczpGbG9hdDMyQXJyYXlbXSxmaWxsZWQ6bnVtYmVyfSxzcmNTdGF0ZTp7b3JnU3JjRnJhbWVQb3M6bnVtYmVyLHNyY0ZyYW1lUG9zOm51bWJlcixjaTpudW1iZXIsY2NQb3M6bnVtYmVyfSl7XHJcbiAgICBsZXQgY2NCdWZzQ2hzPWNjQnVmcy5sZW5ndGg7XHJcbiAgICBpZihjY0J1ZnNDaHM+MCkge1xyXG4gICAgICBsZXQgY2NCdWYwID0gY2NCdWZzWzBdO1xyXG4gICAgICBsZXQgY2NCdWZzTGVuID0gY2NCdWYwLmxlbmd0aDtcclxuXHJcbiAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIGZyYW1lUG9zOiAnK2ZyYW1lUG9zKycsIHNyY0ZyYW1lUG9zOiAnK3NyY0ZyYW1lUG9zKycsIGNjQnVmc0xlbjogJytjY0J1ZnNMZW4pO1xyXG4gICAgICBpZiAodHJnU3RhdGUuZnJhbWVQb3MgPj0gc3JjU3RhdGUuc3JjRnJhbWVQb3MgKyBjY0J1ZnNMZW4pIHtcclxuICAgICAgICAvLyB0YXJnZXQgZnJhbWUgcG9zaXRpb24gaXMgYWhlYWQsIHNlZWsgdG8gbmV4dCBzb3VyY2UgYnVmZmVyXHJcbiAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgc2VlayB0byBuZXh0IGluZGRiIGJ1ZmZlcicpO1xyXG4gICAgICAgIHRoaXMuX2NjQ2FjaGU9bnVsbDtcclxuICAgICAgICBzcmNTdGF0ZS5jaSsrO1xyXG4gICAgICAgIHNyY1N0YXRlLmNjUG9zPTA7XHJcbiAgICAgICAgaWYob3JnRnJhbWVMZW49PT1udWxsKXtcclxuICAgICAgICAgIHNyY1N0YXRlLm9yZ1NyY0ZyYW1lUG9zKz1jY0J1ZnNMZW47XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBzcmNTdGF0ZS5vcmdTcmNGcmFtZVBvcys9b3JnRnJhbWVMZW47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNyY1N0YXRlLnNyY0ZyYW1lUG9zKz1jY0J1ZnNMZW47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gQXNzdW1pbmcgdGFyZ2V0IGZyYW1lIHBvcyBpcyBpbnNpZGUgY3VycmVudCBzb3VyY2UgYnVmZmVyXHJcbiAgICAgICAgc3JjU3RhdGUuY2NQb3M9dHJnU3RhdGUuZnJhbWVQb3Mtc3JjU3RhdGUuc3JjRnJhbWVQb3M7XHJcbiAgICAgICAgbGV0IGNjQXZhaWwgPSBjY0J1ZnNMZW4gLSBzcmNTdGF0ZS5jY1BvcztcclxuICAgICAgICBsZXQgdG9Db3B5ID0gY2NCdWZzTGVuO1xyXG5cclxuICAgICAgICBpZiAodG9Db3B5ID4gY2NBdmFpbCkge1xyXG4gICAgICAgICAgdG9Db3B5ID0gY2NBdmFpbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRvQ29weSA+IHRyZ1N0YXRlLmZyYW1lTGVuKSB7XHJcbiAgICAgICAgICB0b0NvcHkgPSB0cmdTdGF0ZS5mcmFtZUxlbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNjQnVmc0NoczsgY2grKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgc2kgPSAwOyBzaSA8IHRvQ29weTsgc2krKykge1xyXG4gICAgICAgICAgICB0cmdTdGF0ZS50cmdCdWZzW2NoXVt0cmdTdGF0ZS5maWxsZWQrc2ldID0gY2NCdWZzW2NoXVtzcmNTdGF0ZS5jY1BvcytzaV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyZ1N0YXRlLmZpbGxlZCArPSB0b0NvcHk7XHJcbiAgICAgICAgdHJnU3RhdGUuZnJhbWVMZW4gLT0gdG9Db3B5O1xyXG4gICAgICAgIHRyZ1N0YXRlLmZyYW1lUG9zICs9IHRvQ29weTtcclxuICAgICAgICBzcmNTdGF0ZS5jY1BvcyArPSB0b0NvcHk7XHJcbiAgICAgICAgaWYgKHNyY1N0YXRlLmNjUG9zID49IGNjQnVmc0xlbikge1xyXG4gICAgICAgICAgLy8gSW52YWxpZGF0ZSBjYWNoZVxyXG4gICAgICAgICAgdGhpcy5fY2NDYWNoZT1udWxsO1xyXG4gICAgICAgICAgc3JjU3RhdGUuY2krKztcclxuICAgICAgICAgIHRoaXMuX2N1cnJDaT1zcmNTdGF0ZS5jaTtcclxuICAgICAgICAgIHNyY1N0YXRlLmNjUG9zID0gMDtcclxuICAgICAgICAgIGlmKG9yZ0ZyYW1lTGVuPT09bnVsbCl7XHJcbiAgICAgICAgICAgIHNyY1N0YXRlLm9yZ1NyY0ZyYW1lUG9zKz1jY0J1ZnNMZW47XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgc3JjU3RhdGUub3JnU3JjRnJhbWVQb3MrPW9yZ0ZyYW1lTGVuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3JjU3RhdGUuc3JjRnJhbWVQb3MrPWNjQnVmc0xlbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbGxCdWZzKGJhc2VVcmw6c3RyaW5nLG9yZ0ZyYW1lTGVuOm51bWJlcnxudWxsLHRyZ1N0YXRlOntmcmFtZVBvczpudW1iZXIsZnJhbWVMZW46bnVtYmVyLHRyZ0J1ZnM6RmxvYXQzMkFycmF5W10sZmlsbGVkOm51bWJlcn0sc3JjU3RhdGU6e29yZ1NyY0ZyYW1lUG9zOm51bWJlcixzcmNGcmFtZVBvczpudW1iZXIsY2k6bnVtYmVyLGNjUG9zOm51bWJlcixjY0ZpbGxlZDpudW1iZXJ9LGNiOihmaWxsZWQ6bnVtYmVyKT0+dm9pZCxjYkVuZDooZmlsbGVkOm51bWJlcik9PnZvaWQsY2JFcnI6KGVycjpFcnJvcik9PnZvaWQpe1xyXG4gICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnM6IGZyYW1lUG9zOicrZnJhbWVQb3MrJywgZnJhbWVMZW46ICcrZnJhbWVMZW4rJywgZmlsbGVkOiAnK2ZpbGxlZCsnLCBzcmNGcmFtZVBvczogJytzcmNGcmFtZVBvcysnLGNpOiAnK2NpKycsIGNjUG9zOiAnK2NjUG9zKTtcclxuICAgIGlmKHRoaXMuX2NjQ2FjaGUpe1xyXG4gICAgICB0aGlzLl9maWxsQnVmcyh0aGlzLl9jY0NhY2hlLG9yZ0ZyYW1lTGVuLHRyZ1N0YXRlLHNyY1N0YXRlKTtcclxuICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgZnJhbWVMZW46ICcrZnJhbWVMZW4pO1xyXG4gICAgICBpZih0cmdTdGF0ZS5mcmFtZUxlbj09PTApe1xyXG4gICAgICAgIC8vY29uc29sZS5kZWJ1ZygnSW5kZXhlZERiQXVkaW9CdWZmZXI6OmZpbGxCdWZzIChmcmFtZWxlbj09MCkgY2FsbDogY2JlbmQgJytmaWxsZWQpO1xyXG4gICAgICAgIGNiRW5kKHRyZ1N0YXRlLmZpbGxlZCk7XHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICB0aGlzLmZpbGxCdWZzKGJhc2VVcmwsIG9yZ0ZyYW1lTGVuLHRyZ1N0YXRlLCBzcmNTdGF0ZSwgY2IsIGNiRW5kLCBjYkVycik7XHJcbiAgICAgIH1cclxuICAgIH1lbHNlIHtcclxuICAgICAgdGhpcy5jaHVuayhiYXNlVXJsLCBzcmNTdGF0ZS5jaSwgKGNjQnVmcyxvcmdGcmFtZUxlbmd0aCkgPT4ge1xyXG4gICAgICAgIGlmIChjY0J1ZnMpIHtcclxuICAgICAgICAgIHRoaXMuX2N1cnJDaSA9IHNyY1N0YXRlLmNpO1xyXG4gICAgICAgICAgdGhpcy5fY2NDYWNoZSA9IGNjQnVmcztcclxuXHJcbiAgICAgICAgICB0aGlzLl9maWxsQnVmcyhjY0J1ZnMsIG9yZ0ZyYW1lTGVuZ3RoLHRyZ1N0YXRlLCBzcmNTdGF0ZSk7XHJcbiAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ0luZGV4ZWREYkF1ZGlvQnVmZmVyOjpmaWxsQnVmcyBmcmFtZUxlbjogJytmcmFtZUxlbik7XHJcbiAgICAgICAgICBpZiAodHJnU3RhdGUuZnJhbWVMZW4gPT09IDApIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgKGZyYW1lbGVuPT0wKSBjYWxsOiBjYmVuZCAnK2ZpbGxlZCk7XHJcbiAgICAgICAgICAgIGNiRW5kKHRyZ1N0YXRlLmZpbGxlZCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGxCdWZzKGJhc2VVcmwsb3JnRnJhbWVMZW4sdHJnU3RhdGUsIHNyY1N0YXRlLCBjYiwgY2JFbmQsIGNiRXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdJbmRleGVkRGJBdWRpb0J1ZmZlcjo6ZmlsbEJ1ZnMgKGNodW5rIG5vdCBmb3VuZCkgY2FsbDogY2JlbmQgJytmaWxsZWQpO1xyXG4gICAgICAgICAgY2JFbmQodHJnU3RhdGUuZmlsbGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICBjYkVycihlcnIpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBmcmFtZXNPYnMoZnJhbWVQb3M6bnVtYmVyLGZyYW1lTGVuOm51bWJlcixidWZzOkZsb2F0MzJBcnJheVtdKTpPYnNlcnZhYmxlPG51bWJlcj57XHJcblxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPG51bWJlcj4oKHN1YnNjcmliZXIpPT57XHJcbiAgICAgIC8vIFBvc2l0aW9uaW5nXHJcbiAgICAgIGxldCBuZXdDaT1NYXRoLmZsb29yKGZyYW1lUG9zL3RoaXMuX25ldEFiLmNodW5rRnJhbWVMZW4pO1xyXG4gICAgICBpZihuZXdDaSE9PXRoaXMuX2N1cnJDaSl7XHJcbiAgICAgICAgdGhpcy5fY3VyckNpPW5ld0NpO1xyXG4gICAgICAgIHRoaXMuX2NjQ2FjaGU9bnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgc3JjRnJhbWVQb3M9bmV3Q2kqdGhpcy5fbmV0QWIuY2h1bmtGcmFtZUxlbjtcclxuICAgICAgbGV0IHRyZ1N0YXRlPXtmcmFtZVBvczpmcmFtZVBvcyxmcmFtZUxlbjpmcmFtZUxlbix0cmdCdWZzOmJ1ZnMsZmlsbGVkOjB9O1xyXG4gICAgICBsZXQgc3JjU3RhdGU9e29yZ1NyY0ZyYW1lUG9zOjAsc3JjRnJhbWVQb3M6c3JjRnJhbWVQb3MsY2k6bmV3Q2ksY2NQb3M6MCxjY0ZpbGxlZDowfTtcclxuICAgICAgdGhpcy5maWxsQnVmcyh0aGlzLl9uZXRBYi5iYXNlVXJsLHRoaXMuX25ldEFiLm9yZ0ZldGNoQ2h1bmtGcmFtZUxlbix0cmdTdGF0ZSxzcmNTdGF0ZSwodmFsKT0+e30sKGZpbGxlZDpudW1iZXIpPT57XHJcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KGZpbGxlZCk7XHJcbiAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xyXG4gICAgICB9LGVyciA9PiB7XHJcbiAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnIpO1xyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2N1cnJDaT0wO1xyXG4gICAgdGhpcy5fY2NDYWNoZT1udWxsO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE5ldEF1ZGlvSW5wdXRTdHJlYW0gaW1wbGVtZW50cyBBc3luY0Zsb2F0MzJBcnJheUlucHV0U3RyZWFte1xyXG5cclxuICBwcml2YXRlIGZyYW1lUG9zOm51bWJlcj0wO1xyXG4gIHByaXZhdGUgbmV0QWJTdHI6TmV0UmFuZG9tQWNjZXNzQXVkaW9TdHJlYW07XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZXRBYjpOZXRBdWRpb0J1ZmZlcikge1xyXG4gICAgICB0aGlzLm5ldEFiU3RyPW5ldyBOZXRSYW5kb21BY2Nlc3NBdWRpb1N0cmVhbShuZXRBYik7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMubmV0QWJTdHIuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHJlYWRPYnMoYnVmZmVyczogQXJyYXk8RmxvYXQzMkFycmF5Pik6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8bnVtYmVyPihzdWJzY3I9PiB7XHJcbiAgICAgIGlmIChidWZmZXJzICYmIGJ1ZmZlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBmbCA9IGJ1ZmZlcnNbMF0ubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMubmV0QWJTdHIuZnJhbWVzT2JzKHRoaXMuZnJhbWVQb3MsIGZsLCBidWZmZXJzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlYWQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mcmFtZVBvcyArPSByZWFkO1xyXG4gICAgICAgICAgICBzdWJzY3IubmV4dChyZWFkKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICBzdWJzY3IuY29tcGxldGUoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICBzdWJzY3IuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBzdWJzY3IubmV4dCgwKTtcclxuICAgICAgICBzdWJzY3IuY29tcGxldGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBza2lwRnJhbWVzKG46IG51bWJlcik6dm9pZCB7XHJcbiAgICB0aGlzLmZyYW1lUG9zKz1uO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -78,4 +78,4 @@ export class Selection {
|
|
|
78
78
|
return "Selection: from: " + this.leftFrame + " to: " + this.rightFrame + " frame. Refers to sample rate :" + this._sampleRate;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3BlcnNpc3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sU0FBUztJQU1wQixZQUFvQixnQkFBZ0M7UUFBaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFnQjtRQUo1QyxlQUFVLEdBQWdCLElBQUksQ0FBQztRQUN6QixnQkFBVyxHQUFtQixJQUFJLENBQUM7UUFLL0MsSUFBSSxDQUFDLGtCQUFrQixHQUFDLElBQUksS0FBSyxFQUErQixDQUFBO0lBQ2xFLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsS0FBcUI7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsNENBQTRDO1FBQzVDLDRDQUE0QztRQUM1QyxvQ0FBb0M7UUFDcEMsY0FBYztRQUNkLE1BQU07UUFDTixLQUFJLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxLQUF3QjtRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsaUJBQTZDLEVBQUMsSUFBSSxHQUFDLEtBQUs7UUFDM0UsSUFBSSxnQkFBZ0IsR0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFDLEVBQUUsQ0FBQSxDQUFDLEdBQUcsS0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUE7UUFDbkYsSUFBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ2pELENBQUM7UUFDRCxJQUFHLElBQUksRUFBQyxDQUFDO1lBQ1AsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxpQkFBNkM7UUFDbkUsSUFBSSxDQUFDLGtCQUFrQixHQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUMsRUFBRSxDQUFBLEdBQUcsS0FBRyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7Q0FDRjtBQUVELDRCQUE0QjtBQUM1QixpQ0FBaUM7QUFDakMsSUFBSTtBQUNKLDRCQUE0QjtBQUM1Qix1Q0FBdUM7QUFDdkMsSUFBSTtBQUVKLE1BQU0sT0FBTyxTQUFTO0lBS3BCLFlBQVksVUFBaUIsRUFBQyxVQUFpQixFQUFDLFFBQWU7UUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBQyxVQUFVLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBQyxVQUFVLENBQUE7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBQyxRQUFRLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQTtJQUNqRixDQUFDO0lBQ0QsSUFBSSxVQUFVO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFBO0lBQ2pGLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBdUM7UUFDNUMsSUFBRyxjQUFjLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxjQUFjLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssY0FBYyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1SixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sbUJBQW1CLEdBQUMsSUFBSSxDQUFDLFNBQVMsR0FBQyxPQUFPLEdBQUMsSUFBSSxDQUFDLFVBQVUsR0FBQyxpQ0FBaUMsR0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3ZILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGV2ZWxJbmZvc30gZnJvbSBcIi4vZHNwL2xldmVsX21lYXN1cmVcIjtcclxuaW1wb3J0IHtBdWRpb0RhdGFIb2xkZXJ9IGZyb20gXCIuL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQXVkaW9DbGlwIHtcclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uOlNlbGVjdGlvbnxudWxsPW51bGw7XHJcbiAgICAgICAgcHJpdmF0ZSBfbGV2ZWxJbmZvczpMZXZlbEluZm9zIHwgbnVsbD1udWxsO1xyXG4gIHByaXZhdGUgc2VsZWN0aW9uT2JzZXJ2ZXJzOkFycmF5PChhdWRpb0NsaXA6QXVkaW9DbGlwKT0+dm9pZD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2F1ZGlvRGF0YUhvbGRlcjpBdWRpb0RhdGFIb2xkZXIpIHtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbk9ic2VydmVycz1uZXcgQXJyYXk8KGF1ZGlvQ2xpcDpBdWRpb0NsaXApPT52b2lkPigpXHJcbiAgfVxyXG5cclxuICBnZXQgYXVkaW9EYXRhSG9sZGVyKCk6IEF1ZGlvRGF0YUhvbGRlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9EYXRhSG9sZGVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGlvbigpOiBTZWxlY3Rpb258bnVsbHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzZXQgc2VsZWN0aW9uKHZhbHVlOiBTZWxlY3Rpb258bnVsbCkge1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uID0gdmFsdWU7XHJcbiAgICAvLyBsZXQgb2JzQ250PXRoaXMuc2VsZWN0aW9uT2JzZXJ2ZXJzLmxlbmd0aFxyXG4gICAgLy8gdGhpcy5zZWxlY3Rpb25PYnNlcnZlcnMuZm9yRWFjaCgob2JzKT0+IHtcclxuICAgIC8vICAgY29uc29sZS5sb2coXCJDYWxsaW5nIG9ic2VydmVyXCIpXHJcbiAgICAvLyAgIG9icyh0aGlzKVxyXG4gICAgLy8gfSk7XHJcbiAgICBmb3IobGV0IHNlbE9icyBvZiB0aGlzLnNlbGVjdGlvbk9ic2VydmVycyl7XHJcbiAgICAgIHNlbE9icyh0aGlzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxldmVsSW5mb3MoKTogTGV2ZWxJbmZvcyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xldmVsSW5mb3M7XHJcbiAgfVxyXG5cclxuICBzZXQgbGV2ZWxJbmZvcyh2YWx1ZTogTGV2ZWxJbmZvcyB8IG51bGwpIHtcclxuICAgIHRoaXMuX2xldmVsSW5mb3MgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGFkZFNlbGVjdGlvbk9ic2VydmVyKHNlbGVjdGlvbk9ic2VydmVyOihhdWRpb0NsaXA6QXVkaW9DbGlwKT0+dm9pZCxpbml0PWZhbHNlKXtcclxuICAgIGxldCBvYnNBbHJlYWR5SW5MaXN0PXRoaXMuc2VsZWN0aW9uT2JzZXJ2ZXJzLmZpbmQoKG9icyk9PihvYnM9PT1zZWxlY3Rpb25PYnNlcnZlcikpXHJcbiAgICBpZighb2JzQWxyZWFkeUluTGlzdCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbk9ic2VydmVycy5wdXNoKHNlbGVjdGlvbk9ic2VydmVyKVxyXG4gICAgfVxyXG4gICAgaWYoaW5pdCl7XHJcbiAgICAgIHNlbGVjdGlvbk9ic2VydmVyKHRoaXMpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVTZWxlY3Rpb25PYnNlcnZlcihzZWxlY3Rpb25PYnNlcnZlcjooYXVkaW9DbGlwOkF1ZGlvQ2xpcCk9PnZvaWQpe1xyXG4gICAgdGhpcy5zZWxlY3Rpb25PYnNlcnZlcnM9dGhpcy5zZWxlY3Rpb25PYnNlcnZlcnMuZmlsdGVyKChvYnMpPT5vYnMhPT1zZWxlY3Rpb25PYnNlcnZlcik7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBleHBvcnQgaW50ZXJmYWNlIFJlYWRlciB7XHJcbi8vICAgcmVhZChkYXRhOiBCbG9iKTogQXVkaW9DbGlwO1xyXG4vLyB9XHJcbi8vIGV4cG9ydCBpbnRlcmZhY2UgV3JpdGVyIHtcclxuLy8gICB3cml0ZShhdWRpb0RhdGE6IEF1ZGlvQ2xpcCk6IEJsb2I7XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb257XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfc2FtcGxlUmF0ZTpudW1iZXI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRGcmFtZTpudW1iZXI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZW5kRnJhbWU6bnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihzYW1wbGVSYXRlOm51bWJlcixzdGFydEZyYW1lOm51bWJlcixlbmRGcmFtZTpudW1iZXIpe1xyXG4gICAgdGhpcy5fc2FtcGxlUmF0ZT1zYW1wbGVSYXRlO1xyXG4gICAgdGhpcy5fc3RhcnRGcmFtZT1zdGFydEZyYW1lXHJcbiAgICB0aGlzLl9lbmRGcmFtZT1lbmRGcmFtZTtcclxuICB9XHJcblxyXG4gIGdldCBzYW1wbGVSYXRlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2FtcGxlUmF0ZTtcclxuICB9XHJcbiAgZ2V0IGVuZEZyYW1lKCk6bnVtYmVye1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZEZyYW1lO1xyXG4gIH1cclxuICBnZXQgc3RhcnRGcmFtZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0RnJhbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbGVmdEZyYW1lKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKHRoaXMuX3N0YXJ0RnJhbWUgPD0gdGhpcy5fZW5kRnJhbWUpID8gdGhpcy5fc3RhcnRGcmFtZSA6IHRoaXMuX2VuZEZyYW1lXHJcbiAgfVxyXG4gIGdldCByaWdodEZyYW1lKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKHRoaXMuX3N0YXJ0RnJhbWUgPD0gdGhpcy5fZW5kRnJhbWUpID8gdGhpcy5fZW5kRnJhbWUgOiB0aGlzLl9zdGFydEZyYW1lXHJcbiAgfVxyXG5cclxuICBlcXVhbHMob3RoZXJTZWxlY3Rpb246U2VsZWN0aW9ufG51bGx8dW5kZWZpbmVkKTpib29sZWFue1xyXG4gICAgaWYob3RoZXJTZWxlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuICh0aGlzLl9zYW1wbGVSYXRlID09IG90aGVyU2VsZWN0aW9uLl9zYW1wbGVSYXRlICYmIHRoaXMuX3N0YXJ0RnJhbWUgPT09IG90aGVyU2VsZWN0aW9uLl9zdGFydEZyYW1lICYmIHRoaXMuX2VuZEZyYW1lID09PSBvdGhlclNlbGVjdGlvbi5fZW5kRnJhbWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdG9TdHJpbmcoKXtcclxuICAgIHJldHVybiBcIlNlbGVjdGlvbjogZnJvbTogXCIrdGhpcy5sZWZ0RnJhbWUrXCIgdG86IFwiK3RoaXMucmlnaHRGcmFtZStcIiBmcmFtZS4gUmVmZXJzIHRvIHNhbXBsZSByYXRlIDpcIit0aGlzLl9zYW1wbGVSYXRlO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -123,4 +123,4 @@ export class ArrayAudioBufferSourceNode extends AudioSourceNode {
|
|
|
123
123
|
this.onended?.call(this);
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlfYXVkaW9fYnVmZmVyX3NvdXJjZV9ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3BsYXliYWNrL2FycmF5X2F1ZGlvX2J1ZmZlcl9zb3VyY2Vfbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUMsMkJBQTJCLEVBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFDckYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxlQUFlO0lBVTdELFlBQVksT0FBcUI7UUFFL0IsS0FBSyxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBVmpDLHVCQUFrQixHQUFHLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQztRQUNqRSxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDckIsc0JBQWlCLEdBQTRCLElBQUksQ0FBQztRQUNsRCxzQkFBaUIsR0FBOEIsSUFBSSxDQUFDO1FBQ3BELGFBQVEsR0FBcUIsSUFBSSxDQUFDO1FBRWxDLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBS3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDNUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNkLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNsQyxJQUFJLE1BQU0sRUFBRTtvQkFDVixJQUFJLG9CQUFvQixLQUFLLE1BQU0sRUFBRTt3QkFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVks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QUFlLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLEtBQUksSUFBSSxFQUFFLEdBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBQyxHQUFHLEVBQUMsRUFBRSxFQUFFLEVBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxZQUFZLENBQUMsMEJBQTBCLENBQUMsNkJBQTZCLENBQUMsQ0FBQzthQUM5RjtZQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1lBQ3BDLElBQUcsTUFBTSxFQUFFO2dCQUNULElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO2FBQ3pEO2lCQUFJO2dCQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7YUFDaEQ7U0FDSjtJQUNELENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FycmF5QXVkaW9CdWZmZXJ9IGZyb20gXCIuLi9hcnJheV9hdWRpb19idWZmZXJcIjtcclxuaW1wb3J0IHtBcnJheUF1ZGlvQnVmZmVySW5wdXRTdHJlYW19IGZyb20gXCIuLi9hcnJheV9hdWRpb19idWZmZXJfaW5wdXRfc3RyZWFtXCI7XHJcbmltcG9ydCB7RWRpdEZsb2F0MzJBcnJheUlucHV0U3RyZWFtLCBGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbX0gZnJvbSBcIi4uLy4uL2lvL3N0cmVhbVwiO1xyXG5pbXBvcnQge0F1ZGlvU291cmNlTm9kZX0gZnJvbSBcIi4vYXVkaW9fc291cmNlX25vZGVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBBcnJheUF1ZGlvQnVmZmVyU291cmNlTm9kZSBleHRlbmRzIEF1ZGlvU291cmNlTm9kZSB7XHJcblxyXG4gIHByaXZhdGUgX2J1ZmZlckZpbGxTZWNvbmRzID0gQXVkaW9Tb3VyY2VOb2RlLkRFRkFVTFRfQlVGRkVSX0ZJTExfU0VDT05EUztcclxuICBwcml2YXRlIGJ1ZmZlckZpbGxGcmFtZXMgPSAwO1xyXG4gIHByaXZhdGUgX2FycmF5QXVkaW9CdWZmZXI6IEFycmF5QXVkaW9CdWZmZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9hdWRpb0lucHV0U3RyZWFtOkZsb2F0MzJBcnJheUlucHV0U3RyZWFtfG51bGw9bnVsbDtcclxuICBwcml2YXRlIF9haXNCdWZzOkZsb2F0MzJBcnJheVtdfG51bGw9bnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBmaWxsZWRGcmFtZXMgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBBdWRpb0NvbnRleHQpIHtcclxuXHJcbiAgICBzdXBlcihjb250ZXh0LCAnYXVkaW8tc291cmNlLXdvcmtsZXQnKTtcclxuICAgIHRoaXMuY2hhbm5lbENvdW50TW9kZSA9ICdleHBsaWNpdCc7XHJcbiAgICB0aGlzLnBvcnQub25tZXNzYWdlID0gKG1zZ0V2OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgaWYgKG1zZ0V2LmRhdGEpIHtcclxuICAgICAgICBsZXQgZXZUeXBlID0gbXNnRXYuZGF0YS5ldmVudFR5cGU7XHJcbiAgICAgICAgaWYgKGV2VHlwZSkge1xyXG4gICAgICAgICAgaWYgKCdidWZmZXJOb3RpZmljYXRpb24nID09PSBldlR5cGUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxsZWRGcmFtZXMgPSBtc2dFdi5kYXRhLmZpbGxlZEZyYW1lcztcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiQnVmZmVyIG5vdGlmaWNhdGlvbjogZmlsbGVkIGZyYW1lczogXCIgKyB0aGlzLmZpbGxlZEZyYW1lcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsbEJ1ZmZlcigpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICgnZW5kZWQnID09PSBldlR5cGUpIHtcclxuICAgICAgICAgICAgbGV0IGRyYWluVGltZSA9IDA7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9hcnJheUF1ZGlvQnVmZmVyPy5zYW1wbGVSYXRlKSB7XHJcbiAgICAgICAgICAgICAgZHJhaW5UaW1lID0gQXJyYXlBdWRpb0J1ZmZlclNvdXJjZU5vZGUuUVVBTlRVTV9GUkFNRV9MRU4gLyB0aGlzLl9hcnJheUF1ZGlvQnVmZmVyLnNhbXBsZVJhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9sZXQgZHN0QW55OmFueT10aGlzLmNvbnRleHQuZGVzdGluYXRpb247XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnRGVzdGluYXRpb24gbm9kZSB0YWlsLXRpbWU6ICcrZHN0QW55Wyd0YWlsLXRpbWUnXSk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9uZW5kZWQ/LmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgIH0sIGRyYWluVGltZSAqIDEwMDApO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsbEJ1ZmZlcigpIHtcclxuICAgIGlmICh0aGlzLl9hcnJheUF1ZGlvQnVmZmVyICYmIHRoaXMuX2F1ZGlvSW5wdXRTdHJlYW0gJiYgdGhpcy5fYWlzQnVmcykge1xyXG4gICAgICBsZXQgZmlsbGVkID0gdGhpcy5maWxsZWRGcmFtZXM7XHJcbiAgICAgIGxldCBidWZMZW4gPSAwO1xyXG5cclxuICAgICAgd2hpbGUoZmlsbGVkPCB0aGlzLmJ1ZmZlckZpbGxGcmFtZXMpIHtcclxuICAgICAgICBsZXQgcmVhZCA9IHRoaXMuX2F1ZGlvSW5wdXRTdHJlYW0ucmVhZCh0aGlzLl9haXNCdWZzKTtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiQXJyYXlBdWRpb0J1ZmZlclNvdXJjZU5vZGU6IHJlYWQ6IFwiK3JlYWQpXHJcbiAgICAgICAgaWYgKHJlYWQpIHtcclxuICAgICAgICAgIGxldCB0ckJ1ZmZlcnMgPSBuZXcgQXJyYXk8YW55Pih0aGlzLmNoYW5uZWxDb3VudCk7XHJcbiAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgdGhpcy5jaGFubmVsQ291bnQ7IGNoKyspIHtcclxuICAgICAgICAgICAgbGV0IGFkQ2ggPSB0aGlzLl9haXNCdWZzW2NoXTtcclxuICAgICAgICAgICAgbGV0IGFkQ2hDb3B5ID0gbmV3IEZsb2F0MzJBcnJheShhZENoLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGJ1ZkxlbiA9IGFkQ2hDb3B5Lmxlbmd0aDtcclxuICAgICAgICAgICAgYWRDaENvcHkuc2V0KGFkQ2gpO1xyXG4gICAgICAgICAgICB0ckJ1ZmZlcnNbY2hdID0gYWRDaENvcHkuYnVmZmVyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgICAgY21kOiAnZGF0YScsXHJcbiAgICAgICAgICAgIGNoczogdGhpcy5jaGFubmVsQ291bnQsXHJcbiAgICAgICAgICAgIGF1ZGlvRGF0YTogdHJCdWZmZXJzXHJcbiAgICAgICAgICB9LCB0ckJ1ZmZlcnMpO1xyXG4gICAgICAgICAgZmlsbGVkKz1yZWFkO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgICAgY21kOiAnZW5kT2ZTdHJlYW0nXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBhcnJheUF1ZGlvQnVmZmVyKCk6IEFycmF5QXVkaW9CdWZmZXIgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9hcnJheUF1ZGlvQnVmZmVyO1xyXG4gIH1cclxuXHJcbiAgc2V0IGFycmF5QXVkaW9CdWZmZXIodmFsdWU6IEFycmF5QXVkaW9CdWZmZXIgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9hcnJheUF1ZGlvQnVmZmVyID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5fYXJyYXlBdWRpb0J1ZmZlcj8uY2hhbm5lbENvdW50KSB7XHJcbiAgICAgIHRoaXMuY2hhbm5lbENvdW50ID0gdGhpcy5fYXJyYXlBdWRpb0J1ZmZlcj8uY2hhbm5lbENvdW50O1xyXG4gICAgICB0aGlzLmJ1ZmZlckZpbGxGcmFtZXMgPSB0aGlzLl9hcnJheUF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUgKiB0aGlzLl9idWZmZXJGaWxsU2Vjb25kcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBidWZmZXJGaWxsU2Vjb25kcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2J1ZmZlckZpbGxTZWNvbmRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGJ1ZmZlckZpbGxTZWNvbmRzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2J1ZmZlckZpbGxTZWNvbmRzID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzdGFydCh3aGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkLG9mZnNldD86IG51bWJlciB8IHVuZGVmaW5lZCxkdXJhdGlvbj86IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgaWYgKHdoZW4pIHtcclxuICAgICAgdGhyb3cgRXJyb3IoXCJ3aGVuIHBhcmFtZXRlciBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBieSBBcnJheUF1ZGlvQnVmZmVyU291cmNlTm9kZSBjbGFzc1wiKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9hcnJheUF1ZGlvQnVmZmVyKSB7XHJcbiAgICAgIGxldCBhcnJBaXM9bmV3IEFycmF5QXVkaW9CdWZmZXJJbnB1dFN0cmVhbSh0aGlzLl9hcnJheUF1ZGlvQnVmZmVyKTtcclxuICAgICAgaWYob2Zmc2V0PT09dW5kZWZpbmVkICYmIGR1cmF0aW9uPT09dW5kZWZpbmVkKXtcclxuICAgICAgICB0aGlzLl9hdWRpb0lucHV0U3RyZWFtID0gYXJyQWlzO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBsZXQgb2Zmc2V0RnJhbWVzPTA7XHJcbiAgICAgICAgbGV0IGR1cmF0aW9uRnJhbWVzPXVuZGVmaW5lZDtcclxuICAgICAgICBpZihvZmZzZXQhPT11bmRlZmluZWQpIHtcclxuICAgICAgICAgIG9mZnNldEZyYW1lcz1NYXRoLmZsb29yKG9mZnNldCAqIHRoaXMuX2FycmF5QXVkaW9CdWZmZXIuc2FtcGxlUmF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGR1cmF0aW9uIT09dW5kZWZpbmVkKXtcclxuICAgICAgICAgIGR1cmF0aW9uRnJhbWVzPU1hdGguZmxvb3IoZHVyYXRpb24gKiB0aGlzLl9hcnJheUF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9hdWRpb0lucHV0U3RyZWFtPW5ldyBFZGl0RmxvYXQzMkFycmF5SW5wdXRTdHJlYW0oYXJyQWlzLG9mZnNldEZyYW1lcyxkdXJhdGlvbkZyYW1lcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICBsZXQgY2hzPXRoaXMuX2FycmF5QXVkaW9CdWZmZXIuY2hhbm5lbENvdW50O1xyXG4gICAgdGhpcy5fYWlzQnVmcz1uZXcgQXJyYXk8RmxvYXQzMkFycmF5PihjaHMpO1xyXG4gICAgZm9yKGxldCBjaD0wO2NoPGNocztjaCsrKXtcclxuICAgICAgdGhpcy5fYWlzQnVmc1tjaF09bmV3IEZsb2F0MzJBcnJheShBcnJheUF1ZGlvQnVmZmVyU291cmNlTm9kZS5ERUZBVUxUX1NUUkVBTV9SRUFEX0ZSQU1FX0xFTik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxsQnVmZmVyKCk7XHJcbiAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe2NtZDogJ3N0YXJ0J30pO1xyXG4gICAgICBpZihvZmZzZXQpIHtcclxuICAgICAgICB0aGlzLl9wbGF5U3RhcnRUaW1lID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lIC0gb2Zmc2V0O1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLl9wbGF5U3RhcnRUaW1lID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lO1xyXG4gICAgICB9XHJcbiAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcCgpIHtcclxuICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7Y21kOiAnc3RvcCd9KTtcclxuICAgIHRoaXMub25lbmRlZD8uY2FsbCh0aGlzKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlfYXVkaW9fYnVmZmVyX3NvdXJjZV9ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3BsYXliYWNrL2FycmF5X2F1ZGlvX2J1ZmZlcl9zb3VyY2Vfbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUMsMkJBQTJCLEVBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFDckYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxlQUFlO0lBVTdELFlBQVksT0FBcUI7UUFFL0IsS0FBSyxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBVmpDLHVCQUFrQixHQUFHLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQztRQUNqRSxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDckIsc0JBQWlCLEdBQTRCLElBQUksQ0FBQztRQUNsRCxzQkFBaUIsR0FBOEIsSUFBSSxDQUFDO1FBQ3BELGFBQVEsR0FBcUIsSUFBSSxDQUFDO1FBRWxDLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBS3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDNUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2xDLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsSUFBSSxvQkFBb0IsS0FBSyxNQUFNLEVBQUUsQ0FBQzt3QkFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMs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LGlCQUFpQixHQUFDLElBQUksMkJBQTJCLENBQUMsTUFBTSxFQUFDLFlBQVksRUFBQyxjQUFjLENBQUMsQ0FBQztZQUM3RixDQUFDO1lBRUgsSUFBSSxHQUFHLEdBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQztZQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFDLElBQUksS0FBSyxDQUFlLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLEtBQUksSUFBSSxFQUFFLEdBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBQyxHQUFHLEVBQUMsRUFBRSxFQUFFLEVBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQy9GLENBQUM7WUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFHLE1BQU0sRUFBRSxDQUFDO2dCQUNWLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1lBQzFELENBQUM7aUJBQUksQ0FBQztnQkFDSixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQ2pELENBQUM7UUFDTCxDQUFDO0lBQ0QsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJyYXlBdWRpb0J1ZmZlcn0gZnJvbSBcIi4uL2FycmF5X2F1ZGlvX2J1ZmZlclwiO1xyXG5pbXBvcnQge0FycmF5QXVkaW9CdWZmZXJJbnB1dFN0cmVhbX0gZnJvbSBcIi4uL2FycmF5X2F1ZGlvX2J1ZmZlcl9pbnB1dF9zdHJlYW1cIjtcclxuaW1wb3J0IHtFZGl0RmxvYXQzMkFycmF5SW5wdXRTdHJlYW0sIEZsb2F0MzJBcnJheUlucHV0U3RyZWFtfSBmcm9tIFwiLi4vLi4vaW8vc3RyZWFtXCI7XHJcbmltcG9ydCB7QXVkaW9Tb3VyY2VOb2RlfSBmcm9tIFwiLi9hdWRpb19zb3VyY2Vfbm9kZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFycmF5QXVkaW9CdWZmZXJTb3VyY2VOb2RlIGV4dGVuZHMgQXVkaW9Tb3VyY2VOb2RlIHtcclxuXHJcbiAgcHJpdmF0ZSBfYnVmZmVyRmlsbFNlY29uZHMgPSBBdWRpb1NvdXJjZU5vZGUuREVGQVVMVF9CVUZGRVJfRklMTF9TRUNPTkRTO1xyXG4gIHByaXZhdGUgYnVmZmVyRmlsbEZyYW1lcyA9IDA7XHJcbiAgcHJpdmF0ZSBfYXJyYXlBdWRpb0J1ZmZlcjogQXJyYXlBdWRpb0J1ZmZlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2F1ZGlvSW5wdXRTdHJlYW06RmxvYXQzMkFycmF5SW5wdXRTdHJlYW18bnVsbD1udWxsO1xyXG4gIHByaXZhdGUgX2Fpc0J1ZnM6RmxvYXQzMkFycmF5W118bnVsbD1udWxsO1xyXG5cclxuICBwcml2YXRlIGZpbGxlZEZyYW1lcyA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQ6IEF1ZGlvQ29udGV4dCkge1xyXG5cclxuICAgIHN1cGVyKGNvbnRleHQsICdhdWRpby1zb3VyY2Utd29ya2xldCcpO1xyXG4gICAgdGhpcy5jaGFubmVsQ291bnRNb2RlID0gJ2V4cGxpY2l0JztcclxuICAgIHRoaXMucG9ydC5vbm1lc3NhZ2UgPSAobXNnRXY6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICBpZiAobXNnRXYuZGF0YSkge1xyXG4gICAgICAgIGxldCBldlR5cGUgPSBtc2dFdi5kYXRhLmV2ZW50VHlwZTtcclxuICAgICAgICBpZiAoZXZUeXBlKSB7XHJcbiAgICAgICAgICBpZiAoJ2J1ZmZlck5vdGlmaWNhdGlvbicgPT09IGV2VHlwZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGxlZEZyYW1lcyA9IG1zZ0V2LmRhdGEuZmlsbGVkRnJhbWVzO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJCdWZmZXIgbm90aWZpY2F0aW9uOiBmaWxsZWQgZnJhbWVzOiBcIiArIHRoaXMuZmlsbGVkRnJhbWVzKTtcclxuICAgICAgICAgICAgdGhpcy5maWxsQnVmZmVyKCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKCdlbmRlZCcgPT09IGV2VHlwZSkge1xyXG4gICAgICAgICAgICBsZXQgZHJhaW5UaW1lID0gMDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2FycmF5QXVkaW9CdWZmZXI/LnNhbXBsZVJhdGUpIHtcclxuICAgICAgICAgICAgICBkcmFpblRpbWUgPSBBcnJheUF1ZGlvQnVmZmVyU291cmNlTm9kZS5RVUFOVFVNX0ZSQU1FX0xFTiAvIHRoaXMuX2FycmF5QXVkaW9CdWZmZXIuc2FtcGxlUmF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2xldCBkc3RBbnk6YW55PXRoaXMuY29udGV4dC5kZXN0aW5hdGlvbjtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdEZXN0aW5hdGlvbiBub2RlIHRhaWwtdGltZTogJytkc3RBbnlbJ3RhaWwtdGltZSddKTtcclxuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMub25lbmRlZD8uY2FsbCh0aGlzKTtcclxuICAgICAgICAgICAgfSwgZHJhaW5UaW1lICogMTAwMCk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsQnVmZmVyKCkge1xyXG4gICAgaWYgKHRoaXMuX2FycmF5QXVkaW9CdWZmZXIgJiYgdGhpcy5fYXVkaW9JbnB1dFN0cmVhbSAmJiB0aGlzLl9haXNCdWZzKSB7XHJcbiAgICAgIGxldCBmaWxsZWQgPSB0aGlzLmZpbGxlZEZyYW1lcztcclxuICAgICAgbGV0IGJ1ZkxlbiA9IDA7XHJcblxyXG4gICAgICB3aGlsZShmaWxsZWQ8IHRoaXMuYnVmZmVyRmlsbEZyYW1lcykge1xyXG4gICAgICAgIGxldCByZWFkID0gdGhpcy5fYXVkaW9JbnB1dFN0cmVhbS5yZWFkKHRoaXMuX2Fpc0J1ZnMpO1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJBcnJheUF1ZGlvQnVmZmVyU291cmNlTm9kZTogcmVhZDogXCIrcmVhZClcclxuICAgICAgICBpZiAocmVhZCkge1xyXG4gICAgICAgICAgbGV0IHRyQnVmZmVycyA9IG5ldyBBcnJheTxhbnk+KHRoaXMuY2hhbm5lbENvdW50KTtcclxuICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCB0aGlzLmNoYW5uZWxDb3VudDsgY2grKykge1xyXG4gICAgICAgICAgICBsZXQgYWRDaCA9IHRoaXMuX2Fpc0J1ZnNbY2hdO1xyXG4gICAgICAgICAgICBsZXQgYWRDaENvcHkgPSBuZXcgRmxvYXQzMkFycmF5KGFkQ2gubGVuZ3RoKTtcclxuICAgICAgICAgICAgYnVmTGVuID0gYWRDaENvcHkubGVuZ3RoO1xyXG4gICAgICAgICAgICBhZENoQ29weS5zZXQoYWRDaCk7XHJcbiAgICAgICAgICAgIHRyQnVmZmVyc1tjaF0gPSBhZENoQ29weS5idWZmZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICBjbWQ6ICdkYXRhJyxcclxuICAgICAgICAgICAgY2hzOiB0aGlzLmNoYW5uZWxDb3VudCxcclxuICAgICAgICAgICAgYXVkaW9EYXRhOiB0ckJ1ZmZlcnNcclxuICAgICAgICAgIH0sIHRyQnVmZmVycyk7XHJcbiAgICAgICAgICBmaWxsZWQrPXJlYWQ7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICBjbWQ6ICdlbmRPZlN0cmVhbSdcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFycmF5QXVkaW9CdWZmZXIoKTogQXJyYXlBdWRpb0J1ZmZlciB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FycmF5QXVkaW9CdWZmZXI7XHJcbiAgfVxyXG5cclxuICBzZXQgYXJyYXlBdWRpb0J1ZmZlcih2YWx1ZTogQXJyYXlBdWRpb0J1ZmZlciB8IG51bGwpIHtcclxuICAgIHRoaXMuX2FycmF5QXVkaW9CdWZmZXIgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLl9hcnJheUF1ZGlvQnVmZmVyPy5jaGFubmVsQ291bnQpIHtcclxuICAgICAgdGhpcy5jaGFubmVsQ291bnQgPSB0aGlzLl9hcnJheUF1ZGlvQnVmZmVyPy5jaGFubmVsQ291bnQ7XHJcbiAgICAgIHRoaXMuYnVmZmVyRmlsbEZyYW1lcyA9IHRoaXMuX2FycmF5QXVkaW9CdWZmZXIuc2FtcGxlUmF0ZSAqIHRoaXMuX2J1ZmZlckZpbGxTZWNvbmRzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGJ1ZmZlckZpbGxTZWNvbmRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVmZmVyRmlsbFNlY29uZHM7XHJcbiAgfVxyXG5cclxuICBzZXQgYnVmZmVyRmlsbFNlY29uZHModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fYnVmZmVyRmlsbFNlY29uZHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHN0YXJ0KHdoZW4/OiBudW1iZXIgfCB1bmRlZmluZWQsb2Zmc2V0PzogbnVtYmVyIHwgdW5kZWZpbmVkLGR1cmF0aW9uPzogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAod2hlbikge1xyXG4gICAgICB0aHJvdyBFcnJvcihcIndoZW4gcGFyYW1ldGVyIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIGJ5IEFycmF5QXVkaW9CdWZmZXJTb3VyY2VOb2RlIGNsYXNzXCIpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2FycmF5QXVkaW9CdWZmZXIpIHtcclxuICAgICAgbGV0IGFyckFpcz1uZXcgQXJyYXlBdWRpb0J1ZmZlcklucHV0U3RyZWFtKHRoaXMuX2FycmF5QXVkaW9CdWZmZXIpO1xyXG4gICAgICBpZihvZmZzZXQ9PT11bmRlZmluZWQgJiYgZHVyYXRpb249PT11bmRlZmluZWQpe1xyXG4gICAgICAgIHRoaXMuX2F1ZGlvSW5wdXRTdHJlYW0gPSBhcnJBaXM7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGxldCBvZmZzZXRGcmFtZXM9MDtcclxuICAgICAgICBsZXQgZHVyYXRpb25GcmFtZXM9dW5kZWZpbmVkO1xyXG4gICAgICAgIGlmKG9mZnNldCE9PXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgb2Zmc2V0RnJhbWVzPU1hdGguZmxvb3Iob2Zmc2V0ICogdGhpcy5fYXJyYXlBdWRpb0J1ZmZlci5zYW1wbGVSYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZHVyYXRpb24hPT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgZHVyYXRpb25GcmFtZXM9TWF0aC5mbG9vcihkdXJhdGlvbiAqIHRoaXMuX2FycmF5QXVkaW9CdWZmZXIuc2FtcGxlUmF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2F1ZGlvSW5wdXRTdHJlYW09bmV3IEVkaXRGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbShhcnJBaXMsb2Zmc2V0RnJhbWVzLGR1cmF0aW9uRnJhbWVzKTtcclxuICAgICAgfVxyXG5cclxuICAgIGxldCBjaHM9dGhpcy5fYXJyYXlBdWRpb0J1ZmZlci5jaGFubmVsQ291bnQ7XHJcbiAgICB0aGlzLl9haXNCdWZzPW5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KGNocyk7XHJcbiAgICBmb3IobGV0IGNoPTA7Y2g8Y2hzO2NoKyspe1xyXG4gICAgICB0aGlzLl9haXNCdWZzW2NoXT1uZXcgRmxvYXQzMkFycmF5KEFycmF5QXVkaW9CdWZmZXJTb3VyY2VOb2RlLkRFRkFVTFRfU1RSRUFNX1JFQURfRlJBTUVfTEVOKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGxCdWZmZXIoKTtcclxuICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7Y21kOiAnc3RhcnQnfSk7XHJcbiAgICAgIGlmKG9mZnNldCkge1xyXG4gICAgICAgIHRoaXMuX3BsYXlTdGFydFRpbWUgPSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWUgLSBvZmZzZXQ7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuX3BsYXlTdGFydFRpbWUgPSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWU7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgfVxyXG5cclxuICBzdG9wKCkge1xyXG4gICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtjbWQ6ICdzdG9wJ30pO1xyXG4gICAgdGhpcy5vbmVuZGVkPy5jYWxsKHRoaXMpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -15,4 +15,4 @@ export class AudioSourceNode extends AudioWorkletNode {
|
|
|
15
15
|
return ppt;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fc291cmNlX25vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvYXVkaW8vcGxheWJhY2svYXVkaW9fc291cmNlX25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixlQUFnQixTQUFRLGdCQUFnQjtJQUE5RDs7UUFJWSxtQkFBYyxHQUFhLElBQUksQ0FBQztRQVcxQyxZQUFPLEdBQXdCLElBQUksQ0FBQztJQUN0QyxDQUFDO2FBZmlCLGdDQUEyQixHQUFHLEVBQUUsQUFBTCxDQUFNO2FBQ2pDLGtDQUE2QixHQUFDLElBQUksQUFBTCxDQUFNO2FBQ25DLHNCQUFpQixHQUFHLEdBQUcsQUFBTixDQUFPO0lBS3hDLElBQUksZ0JBQWdCO1FBQ2xCLElBQUksR0FBRyxHQUFDLElBQUksQ0FBQztRQUNiLElBQUcsSUFBSSxDQUFDLGNBQWMsS0FBRyxJQUFJLEVBQUUsQ0FBQztZQUM5QixHQUFHLEdBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1ZGlvU291cmNlTm9kZSBleHRlbmRzIEF1ZGlvV29ya2xldE5vZGUge1xyXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0JVRkZFUl9GSUxMX1NFQ09ORFMgPSAxMDtcclxuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9TVFJFQU1fUkVBRF9GUkFNRV9MRU49MTAyNDtcclxuICBzdGF0aWMgcmVhZG9ubHkgUVVBTlRVTV9GUkFNRV9MRU4gPSAxMjg7XHJcbiAgcHJvdGVjdGVkIF9wbGF5U3RhcnRUaW1lOm51bWJlcnxudWxsPW51bGw7XHJcbiAgcHVibGljIGFic3RyYWN0IHN0YXJ0KHdoZW4/OiBudW1iZXIgfCB1bmRlZmluZWQsb2Zmc2V0PzogbnVtYmVyIHwgdW5kZWZpbmVkLGR1cmF0aW9uPzogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZDtcclxuICBwdWJsaWMgYWJzdHJhY3Qgc3RvcCgpOnZvaWQ7XHJcblxyXG4gIGdldCBwbGF5UG9zaXRpb25UaW1lKCk6bnVtYmVyfG51bGwge1xyXG4gICAgbGV0IHBwdD1udWxsO1xyXG4gICAgaWYodGhpcy5fcGxheVN0YXJ0VGltZSE9PW51bGwpIHtcclxuICAgICAgcHB0PSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWUgLSB0aGlzLl9wbGF5U3RhcnRUaW1lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBwdDtcclxuICB9XHJcbiAgb25lbmRlZDogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcbn1cclxuIl19
|
|
@@ -164,4 +164,4 @@ export class AudioSourceWorkletModuleLoader {
|
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fc291cmNlX3dvcmtsZXRfbW9kdWxlX2xvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby9wbGF5YmFjay9hdWRpb19zb3VyY2Vfd29ya2xldF9tb2R1bGVfbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhFQUE4RTtBQUM5RSx1RkFBdUY7QUFFdkYsTUFBTSxPQUFPLEdBQUcsSUFBSTtJQUNsQiwySkFBMko7SUFDM0osSUFBSTtJQUNKLElBQUk7SUFDSiw2REFBNkQ7SUFDN0QsSUFBSTtJQUNKLHVCQUF1QjtJQUN2QixpQ0FBaUM7SUFDakMsZ0NBQWdDO0lBQ2hDLHFDQUFxQztJQUNyQyxrQ0FBa0M7SUFDbEMsc0JBQXNCO0lBQ3RCLHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsMEJBQTBCO0lBQzFCLG9CQUFvQjtJQUNwQixJQUFJO0lBQ0osdUJBQXVCO0lBQ3ZCLHdEQUF3RDtJQUN4RCwwQ0FBMEM7SUFDMUMsOERBQThEO0lBQzlELHVFQUF1RTtJQUN2RSxJQUFJO0lBQ0osaUNBQWlDO0lBQ2pDLDZDQUE2QztJQUM3QywyQ0FBMkM7SUFDM0MsSUFBSTtJQUNKLGlEQUFpRDtJQUNqRCxvREFBb0Q7SUFDcEQsK0VBQStFO0lBQy9FLG1CQUFtQjtJQUNuQixzREFBc0Q7SUFDdEQsb0RBQW9EO0lBQ3BELG1EQUFtRDtJQUNuRCw4SUFBOEk7SUFDOUksSUFBSTtJQUNKLG1EQUFtRDtJQUNuRCxvQ0FBb0M7SUFDcEMsa0RBQWtEO0lBQ2xELCtDQUErQztJQUMvQyxxQ0FBcUM7SUFDckMsb0NBQW9DO0lBQ3BDLGtDQUFrQztJQUNsQyxzQ0FBc0M7SUFDdEMsdURBQXVEO0lBQ3ZELDRDQUE0QztJQUM1QyxtQkFBbUI7SUFDbkIsOERBQThEO0lBQzlELHlEQUF5RDtJQUN6RCx3Q0FBd0M7SUFDeEMsc0RBQXNEO0lB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Q0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDO2FBRUo7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb2RlIGZyb20gYXVkaW9fc291cmNlX3dvcmtsZXQuanMgYXMgc3RyaW5nIGNvbnN0YW50IHRvIGJlIGxvYWRlZCBhcyBtb2R1bGVcclxuLy8gQ2hhbmdlcyBpbiBhdWRpb19zb3VyY2Vfd29ya2xldC5qcyBtdXN0IGJlIGNvcGllZCBhbmQgcGFzdGVkIHRvIHRoaXMgc3RyaW5nIGNvbnN0YW50XHJcblxyXG5jb25zdCBhc3dwU3RyID0gXCJcXG5cIiArXHJcbiAgXCIvLyBJbXBvcnRhbnQgbm90ZTogQ2hhbmdlcyBpbiBhdWRpb19zb3VyY2Vfd29ya2xldC5qcyBtdXN0IGJlIGNvcGllZCBhbmQgcGFzdGVkIHRvIHRoZSBzdHJpbmcgY29uc3RhbnQgYXN3cFN0ciBpbiBhdWRpb19zb3VyY2Vfd29ya2xldF9tb2R1bGVfbG9hZGVyLnRzXFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiY2xhc3MgQXVkaW9Tb3VyY2VQcm9jZXNzb3IgZXh0ZW5kcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3J7XFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiICAgIGZpbGxlZEZyYW1lcz0wO1xcblwiICtcclxuICBcIiAgICBhdWRpb0J1ZmZlcnM9bmV3IEFycmF5KCk7XFxuXCIgK1xyXG4gIFwiICAgIGN1cnJlbnRBdWRpb0J1ZmZlcj1udWxsO1xcblwiICtcclxuICBcIiAgICBjdXJyZW50QXVkaW9CdWZmZXJGcmFtZVBvcz0wO1xcblwiICtcclxuICBcIiAgICBjdXJyZW50QXVkaW9CdWZmZXJBdmFpbD0wO1xcblwiICtcclxuICBcIiAgICBydW5uaW5nPWZhbHNlO1xcblwiICtcclxuICBcIiAgICBzdGFsbGVkPWZhbHNlO1xcblwiICtcclxuICBcIiAgICBzdG9wcGVkPWZhbHNlO1xcblwiICtcclxuICBcIiAgICBlbmRPZlN0cmVhbT1mYWxzZTtcXG5cIiArXHJcbiAgXCIgICAgZW5kZWQ9ZmFsc2U7XFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiICAgIGNvbnN0cnVjdG9yKCkge1xcblwiICtcclxuICBcIiAgICAgICAgc3VwZXIoe251bWJlck9mSW5wdXRzOjAsbnVtYmVyT2ZPdXRwdXRzOjF9KTtcXG5cIiArXHJcbiAgXCIgICAgICAgIHRoaXMucG9ydC5vbm1lc3NhZ2U9KG1zZ0V2KT0+e1xcblwiICtcclxuICBcIiAgICAgICAgICAvLyByZWNlaXZlZCBhdWRpbyBwbGF5YmFjayBkYXRhIGZyb20gYXBwbGljYXRpb25cXG5cIiArXHJcbiAgXCIgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFxcXCJBdWRpbyBzb3VyY2Ugd29ya2xldCBtc2c6IFJlY2VpdmVkLlxcXCIpO1xcblwiICtcclxuICBcIlxcblwiICtcclxuICBcIiAgICAgICAgICBpZihtc2dFdi5kYXRhLmNtZCl7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgaWYoJ2RhdGEnPT09bXNnRXYuZGF0YS5jbWQpIHtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIGxldCBjaHMgPSBtc2dFdi5kYXRhLmNocztcXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIGxldCBhdWRpb0RhdGEgPSBuZXcgQXJyYXkoY2hzKTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgYXVkaW9EYXRhW2NoXSA9IG5ldyBGbG9hdDMyQXJyYXkobXNnRXYuZGF0YS5hdWRpb0RhdGFbY2hdKTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIH1cXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIGxldCBtc2dDaEJ1Zkxlbj1hdWRpb0RhdGFbMF0ubGVuZ3RoO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5hdWRpb0J1ZmZlcnMucHVzaChhdWRpb0RhdGEpO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5maWxsZWRGcmFtZXMgKz0gbXNnQ2hCdWZMZW47XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXFxcIkF1ZGlvIHNvdXJjZSB3b3JrbGV0IG1zZzogRmlsbGVkIFxcXCIgKyB0aGlzLmZpbGxlZEZyYW1lcysgXFxcIiBpbiBcXFwiK3RoaXMuYXVkaW9CdWZmZXJzLmxlbmd0aCtcXFwiIGJ1ZmZlcnMuXFxcIik7XFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgfWVsc2UgaWYoJ3N0YXJ0Jz09PW1zZ0V2LmRhdGEuY21kKXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIHRoaXMucnVubmluZz10cnVlO1xcblwiICtcclxuICBcIiAgICAgICAgICAgIH1lbHNlIGlmKCdzdG9wJz09PW1zZ0V2LmRhdGEuY21kKXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcXFwiU3RvcC4uLlxcXCIpO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5ydW5uaW5nPWZhbHNlO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5zdG9wcGVkPXRydWU7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAvLyBjbGVhciBidWZmZXJzXFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0aGlzLmZpbGxlZEZyYW1lcz0wO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgd2hpbGUodGhpcy5hdWRpb0J1ZmZlcnMubGVuZ3RoID4gMCkge1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICB0aGlzLmF1ZGlvQnVmZmVycy5wb3AoKTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIH1cXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvQnVmZmVyPW5ldyBGbG9hdDMyQXJyYXkoMCk7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgfWVsc2UgaWYoJ2VuZE9mU3RyZWFtJz09PW1zZ0V2LmRhdGEuY21kKXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIHRoaXMuZW5kT2ZTdHJlYW09dHJ1ZTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICB9ZWxzZSBpZignY29udGludWUnPT09bXNnRXYuZGF0YS5jbWQpe1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhcXFwiQ29udGludWUgYWZ0ZXIgc3RhbGxlZC4uLlxcXCIpO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5zdGFsbGVkPWZhbHNlO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtldmVudFR5cGU6ICdyZXN1bWVkJ30pO1xcblwiICtcclxuICBcIiAgICAgICAgICAgIH1cXG5cIiArXHJcbiAgXCIgICAgICAgICAgfVxcblwiICtcclxuICBcIiAgICAgICAgfVxcblwiICtcclxuICBcIiAgICB9XFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiIHByb2Nlc3MoXFxuXCIgK1xyXG4gIFwiICAgICAgaW5wdXRzLFxcblwiICtcclxuICBcIiAgICAgIG91dHB1dHMsXFxuXCIgK1xyXG4gIFwiICAgICAgcGFyYW1ldGVyc1xcblwiICtcclxuICBcIiAgKXtcXG5cIiArXHJcbiAgXCIgICAgICAvL2NvbnNvbGUuZGVidWcoXFxcIkF1ZGlvIHNvdXJjZSB3b3JrbGV0OiBwcm9jZXNzIFxcXCIrb3V0cHV0cy5sZW5ndGgrIFxcXCIgb3V0cHV0IGJ1ZmZlcnMuXFxcIik7XFxuXCIgK1xyXG4gIFwiICAgICAgLy8gY29weSByaW5nIGJ1ZmZlciBkYXRhIHRvIG91dHB1dHNcXG5cIiArXHJcbiAgXCIgICAgICAgIGlmKCF0aGlzLnJ1bm5pbmcgfHwgdGhpcy5zdGFsbGVkKXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICBpZih0aGlzLmVuZE9mU3RyZWFtKSB7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIHRoaXMuZW5kZWQgPSB0cnVlO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe2V2ZW50VHlwZTogJ2VuZGVkJ30pO1xcblwiICtcclxuICBcIiAgICAgICAgICAgIH1cXG5cIiArXHJcbiAgXCIgICAgICAgICAgcmV0dXJuICF0aGlzLmVuZGVkICYmICF0aGlzLnN0b3BwZWQ7XFxuXCIgK1xyXG4gIFwiICAgICAgICB9XFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiICAgICAgICBsZXQgb3V0cHV0PW91dHB1dHNbMF07XFxuXCIgK1xyXG4gIFwiICAgICAgICBsZXQgY2hzPW91dHB1dC5sZW5ndGg7XFxuXCIgK1xyXG4gIFwiICAgICAgICAvL2NvbnNvbGUuZGVidWcoXFxcIkF1ZGlvIHNvdXJjZSB3b3JrbGV0OiBPdXRwdXQgY2hhbm5lbHM6IFxcXCIrY2hzKTtcXG5cIiArXHJcbiAgXCIgICAgICAgIGlmKGNocz4wKSB7XFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiICAgICAgICAgIGxldCBvdXRDaDAgPSBvdXRwdXRbMF07XFxuXCIgK1xyXG4gIFwiICAgICAgICAgIGxldCBvdXRDaExlbiA9IG91dENoMC5sZW5ndGg7XFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiICAgICAgICAgIGlmKCF0aGlzLmN1cnJlbnRBdWRpb0J1ZmZlcil7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgLy8gZ2V0IGZpcnN0IGJ1ZmZlclxcblwiICtcclxuICBcIiAgICAgICAgICAgIGxldCBueHRCdWZmPXRoaXMuYXVkaW9CdWZmZXJzLnNoaWZ0KCk7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgaWYobnh0QnVmZikge1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW9CdWZmZXIgPSBueHRCdWZmO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW9CdWZmZXJGcmFtZVBvcz0wO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW9CdWZmZXJBdmFpbD10aGlzLmN1cnJlbnRBdWRpb0J1ZmZlclswXS5sZW5ndGg7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgfWVsc2V7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICB9XFxuXCIgK1xyXG4gIFwiICAgICAgICAgIH1cXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCIgICAgICAgICAgbGV0IGNvcGllZD0wO1xcblwiICtcclxuICBcIiAgICAgICAgICBkb3tcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICBpZih0aGlzLmN1cnJlbnRBdWRpb0J1ZmZlckF2YWlsPT09MCl7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICBsZXQgbnh0QnVmZj10aGlzLmF1ZGlvQnVmZmVycy5zaGlmdCgpO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgaWYobnh0QnVmZil7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvQnVmZmVyPW54dEJ1ZmY7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvQnVmZmVyRnJhbWVQb3M9MDtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW9CdWZmZXJBdmFpbD10aGlzLmN1cnJlbnRBdWRpb0J1ZmZlclswXS5sZW5ndGg7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcXFwiTmV4dCBidWZmZXIgd2l0aCBcXFwiK3RoaXMuY3VycmVudEF1ZGlvQnVmZmVyQXZhaWwrIFxcXCIgZnJhbWVzXFxcIik7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7ZXZlbnRUeXBlOididWZmZXJOb3RpZmljYXRpb24nLGZpbGxlZEZyYW1lczp0aGlzLmZpbGxlZEZyYW1lc30pO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgfWVsc2V7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIGlmKHRoaXMuZW5kT2ZTdHJlYW0pIHtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgICB0aGlzLmVuZGVkID0gdHJ1ZTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe2V2ZW50VHlwZTogJ2VuZGVkJ30pO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcXFwiU3RyZWFtIGVuZGVkXFxcIik7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIH1lbHNle1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICAgIGlmKCF0aGlzLnN0YWxsZWQpIHtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhbGxlZCA9IHRydWU7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe2V2ZW50VHlwZTogJ3N0YWxsZWQnfSk7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgICAgfVxcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICB9XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIGJyZWFrO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgfVxcblwiICtcclxuICBcIiAgICAgICAgICAgIH1cXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXFxcIm91dENoTGVuOiBcXFwiK291dENoTGVuK1xcXCIsIGNvcGllZDogXFxcIitjb3BpZWQrXFxcIiwgY3VycmVudCBhdmFpbDogXFxcIit0aGlzLmN1cnJlbnRBdWRpb0J1ZmZlckF2YWlsKTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICBsZXQgdG9Db3B5PW91dENoTGVuLWNvcGllZDtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICBpZih0b0NvcHk+dGhpcy5jdXJyZW50QXVkaW9CdWZmZXJBdmFpbCl7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0b0NvcHk9dGhpcy5jdXJyZW50QXVkaW9CdWZmZXJBdmFpbDtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICB9XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFxcXCJDb3B5IFxcXCIrdG9Db3B5K1xcXCIgZnJhbWVzLi4uXFxcIik7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgZm9yKGxldCBjaD0wO2NoPGNocztjaCsrKSB7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICBsZXQgb3V0Q2g9b3V0cHV0W2NoXTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9Db3B5OyBpKyspIHtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgb3V0Q2hbY29waWVkK2ldPXRoaXMuY3VycmVudEF1ZGlvQnVmZmVyW2NoXVt0aGlzLmN1cnJlbnRBdWRpb0J1ZmZlckZyYW1lUG9zK2ldO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgfVxcblwiICtcclxuICBcIiAgICAgICAgICAgIH1cXG5cIiArXHJcbiAgXCIgICAgICAgICAgICBjb3BpZWQrPXRvQ29weTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdWRpb0J1ZmZlckZyYW1lUG9zKz10b0NvcHk7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW9CdWZmZXJBdmFpbC09dG9Db3B5O1xcblwiICtcclxuICBcIlxcblwiICtcclxuICBcIiAgICAgICAgICB9d2hpbGUoY29waWVkPG91dENoTGVuKTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgdGhpcy5maWxsZWRGcmFtZXMtPWNvcGllZDtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFxcXCJDb3BpZWQgXFxcIitjb3BpZWQrXFxcIiBmcmFtZXMuXFxcIik7XFxuXCIgK1xyXG4gIFwiICAgICAgICB9XFxuXCIgK1xyXG4gIFwiICAgICByZXR1cm4gIXRoaXMuZW5kZWQ7XFxuXCIgK1xyXG4gIFwiICB9XFxuXCIgK1xyXG4gIFwifVxcblwiICtcclxuICBcIlxcblwiICtcclxuICBcInJlZ2lzdGVyUHJvY2Vzc29yKCdhdWRpby1zb3VyY2Utd29ya2xldCcsQXVkaW9Tb3VyY2VQcm9jZXNzb3IpO1xcblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEF1ZGlvU291cmNlV29ya2xldE1vZHVsZUxvYWRlcntcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgbW9kdWxlTG9hZGVkPWZhbHNlO1xyXG5cclxuICBzdGF0aWMgbG9hZE1vZHVsZShjb250ZXh0OiBBdWRpb0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmIChBdWRpb1NvdXJjZVdvcmtsZXRNb2R1bGVMb2FkZXIubW9kdWxlTG9hZGVkKSB7XHJcbiAgICAgICAgcmVzb2x2ZS5jYWxsKHNlbGYpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvV29ya2xldE1vZHVsZUJsb2IgPSBuZXcgQmxvYihbYXN3cFN0cl0sIHt0eXBlOiAndGV4dC9qYXZhc2NyaXB0J30pO1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvV29ya2xldE1vZHVsZUJsb2JVcmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChhdWRpb1dvcmtsZXRNb2R1bGVCbG9iKTtcclxuICAgICAgICBjb250ZXh0LmF1ZGlvV29ya2xldC5hZGRNb2R1bGUoYXVkaW9Xb3JrbGV0TW9kdWxlQmxvYlVybCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICBBdWRpb1NvdXJjZVdvcmtsZXRNb2R1bGVMb2FkZXIubW9kdWxlTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHJlc29sdmUuY2FsbChzZWxmKTtcclxuICAgICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHJlYXNvbik7XHJcbiAgICAgICAgICByZWplY3QuY2FsbChyZWFzb24pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fc291cmNlX3dvcmtsZXRfbW9kdWxlX2xvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby9wbGF5YmFjay9hdWRpb19zb3VyY2Vfd29ya2xldF9tb2R1bGVfbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhFQUE4RTtBQUM5RSx1RkFBdUY7QUFFdkYsTUFBTSxPQUFPLEdBQUcsSUFBSTtJQUNsQiwySkFBMko7SUFDM0osSUFBSTtJQUNKLElBQUk7SUFDSiw2REFBNkQ7SUFDN0QsSUFBSTtJQUNKLHVCQUF1QjtJQUN2QixpQ0FBaUM7SUFDakMsZ0NBQWdDO0lBQ2hDLHFDQUFxQztJQUNyQyxrQ0FBa0M7SUFDbEMsc0JBQXNCO0lBQ3RCLHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsMEJBQTBCO0lBQzFCLG9CQUFvQjtJQUNwQixJQUFJO0lBQ0osdUJBQXVCO0lBQ3ZCLHdEQUF3RDtJQUN4RCwwQ0FBMEM7SUFDMUMsOERBQThEO0lBQzlELHVFQUF1RTtJQUN2RSxJQUFJO0lBQ0osaUNBQWlDO0lBQ2pDLDZDQUE2QztJQUM3QywyQ0FBMkM7SUFDM0MsSUFBSTtJQUNKLGlEQUFpRDtJQUNqRCxvREFBb0Q7SUFDcEQsK0VBQStFO0lBQy9FLG1CQUFtQjtJQUNuQixzREFBc0Q7SUFDdEQsb0RBQW9EO0lBQ3BELG1EQUFtRDtJQUNuRCw4SUFBOEk7SUFDOUksSUFBSTtJQUNKLG1EQUFtRDtJQUNuRCxvQ0FBb0M7SUFDcEMsa0RBQWtEO0lBQ2xELCtDQUErQztJQUMvQyxxQ0FBcUM7SUFDckMsb0NBQW9DO0lBQ3BDLGtDQUFrQztJQUNsQyxzQ0FBc0M7SUFDdEMsdURBQXVEO0lBQ3ZELDRDQUE0QztJQUM1QyxtQkFBbUI7SUFDbkIsOERBQThEO0lBQzlELHlEQUF5RDtJQUN6RCx3Q0FBd0M7SUFDeEMsc0RBQXNEO0lB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QUM7b0JBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDO1lBRUwsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvZGUgZnJvbSBhdWRpb19zb3VyY2Vfd29ya2xldC5qcyBhcyBzdHJpbmcgY29uc3RhbnQgdG8gYmUgbG9hZGVkIGFzIG1vZHVsZVxyXG4vLyBDaGFuZ2VzIGluIGF1ZGlvX3NvdXJjZV93b3JrbGV0LmpzIG11c3QgYmUgY29waWVkIGFuZCBwYXN0ZWQgdG8gdGhpcyBzdHJpbmcgY29uc3RhbnRcclxuXHJcbmNvbnN0IGFzd3BTdHIgPSBcIlxcblwiICtcclxuICBcIi8vIEltcG9ydGFudCBub3RlOiBDaGFuZ2VzIGluIGF1ZGlvX3NvdXJjZV93b3JrbGV0LmpzIG11c3QgYmUgY29waWVkIGFuZCBwYXN0ZWQgdG8gdGhlIHN0cmluZyBjb25zdGFudCBhc3dwU3RyIGluIGF1ZGlvX3NvdXJjZV93b3JrbGV0X21vZHVsZV9sb2FkZXIudHNcXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCJjbGFzcyBBdWRpb1NvdXJjZVByb2Nlc3NvciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvcntcXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCIgICAgZmlsbGVkRnJhbWVzPTA7XFxuXCIgK1xyXG4gIFwiICAgIGF1ZGlvQnVmZmVycz1uZXcgQXJyYXkoKTtcXG5cIiArXHJcbiAgXCIgICAgY3VycmVudEF1ZGlvQnVmZmVyPW51bGw7XFxuXCIgK1xyXG4gIFwiICAgIGN1cnJlbnRBdWRpb0J1ZmZlckZyYW1lUG9zPTA7XFxuXCIgK1xyXG4gIFwiICAgIGN1cnJlbnRBdWRpb0J1ZmZlckF2YWlsPTA7XFxuXCIgK1xyXG4gIFwiICAgIHJ1bm5pbmc9ZmFsc2U7XFxuXCIgK1xyXG4gIFwiICAgIHN0YWxsZWQ9ZmFsc2U7XFxuXCIgK1xyXG4gIFwiICAgIHN0b3BwZWQ9ZmFsc2U7XFxuXCIgK1xyXG4gIFwiICAgIGVuZE9mU3RyZWFtPWZhbHNlO1xcblwiICtcclxuICBcIiAgICBlbmRlZD1mYWxzZTtcXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCIgICAgY29uc3RydWN0b3IoKSB7XFxuXCIgK1xyXG4gIFwiICAgICAgICBzdXBlcih7bnVtYmVyT2ZJbnB1dHM6MCxudW1iZXJPZk91dHB1dHM6MX0pO1xcblwiICtcclxuICBcIiAgICAgICAgdGhpcy5wb3J0Lm9ubWVzc2FnZT0obXNnRXYpPT57XFxuXCIgK1xyXG4gIFwiICAgICAgICAgIC8vIHJlY2VpdmVkIGF1ZGlvIHBsYXliYWNrIGRhdGEgZnJvbSBhcHBsaWNhdGlvblxcblwiICtcclxuICBcIiAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXFxcIkF1ZGlvIHNvdXJjZSB3b3JrbGV0IG1zZzogUmVjZWl2ZWQuXFxcIik7XFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiICAgICAgICAgIGlmKG1zZ0V2LmRhdGEuY21kKXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICBpZignZGF0YSc9PT1tc2dFdi5kYXRhLmNtZCkge1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgbGV0IGNocyA9IG1zZ0V2LmRhdGEuY2hzO1xcblwiICtcclxuICBcIlxcblwiICtcclxuICBcIiAgICAgICAgICAgICAgbGV0IGF1ZGlvRGF0YSA9IG5ldyBBcnJheShjaHMpO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNoczsgY2grKykge1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICBhdWRpb0RhdGFbY2hdID0gbmV3IEZsb2F0MzJBcnJheShtc2dFdi5kYXRhLmF1ZGlvRGF0YVtjaF0pO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgfVxcblwiICtcclxuICBcIiAgICAgICAgICAgICAgbGV0IG1zZ0NoQnVmTGVuPWF1ZGlvRGF0YVswXS5sZW5ndGg7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0aGlzLmF1ZGlvQnVmZmVycy5wdXNoKGF1ZGlvRGF0YSk7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0aGlzLmZpbGxlZEZyYW1lcyArPSBtc2dDaEJ1ZkxlbjtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcXFwiQXVkaW8gc291cmNlIHdvcmtsZXQgbXNnOiBGaWxsZWQgXFxcIiArIHRoaXMuZmlsbGVkRnJhbWVzKyBcXFwiIGluIFxcXCIrdGhpcy5hdWRpb0J1ZmZlcnMubGVuZ3RoK1xcXCIgYnVmZmVycy5cXFwiKTtcXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICB9ZWxzZSBpZignc3RhcnQnPT09bXNnRXYuZGF0YS5jbWQpe1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5ydW5uaW5nPXRydWU7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgfWVsc2UgaWYoJ3N0b3AnPT09bXNnRXYuZGF0YS5jbWQpe1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFxcXCJTdG9wLi4uXFxcIik7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0aGlzLnJ1bm5pbmc9ZmFsc2U7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0aGlzLnN0b3BwZWQ9dHJ1ZTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIC8vIGNsZWFyIGJ1ZmZlcnNcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIHRoaXMuZmlsbGVkRnJhbWVzPTA7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB3aGlsZSh0aGlzLmF1ZGlvQnVmZmVycy5sZW5ndGggPiAwKSB7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIHRoaXMuYXVkaW9CdWZmZXJzLnBvcCgpO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgfVxcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW9CdWZmZXI9bmV3IEZsb2F0MzJBcnJheSgwKTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICB9ZWxzZSBpZignZW5kT2ZTdHJlYW0nPT09bXNnRXYuZGF0YS5jbWQpe1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgdGhpcy5lbmRPZlN0cmVhbT10cnVlO1xcblwiICtcclxuICBcIiAgICAgICAgICAgIH1lbHNlIGlmKCdjb250aW51ZSc9PT1tc2dFdi5kYXRhLmNtZCl7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKFxcXCJDb250aW51ZSBhZnRlciBzdGFsbGVkLi4uXFxcIik7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0aGlzLnN0YWxsZWQ9ZmFsc2U7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe2V2ZW50VHlwZTogJ3Jlc3VtZWQnfSk7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgfVxcblwiICtcclxuICBcIiAgICAgICAgICB9XFxuXCIgK1xyXG4gIFwiICAgICAgICB9XFxuXCIgK1xyXG4gIFwiICAgIH1cXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCIgcHJvY2VzcyhcXG5cIiArXHJcbiAgXCIgICAgICBpbnB1dHMsXFxuXCIgK1xyXG4gIFwiICAgICAgb3V0cHV0cyxcXG5cIiArXHJcbiAgXCIgICAgICBwYXJhbWV0ZXJzXFxuXCIgK1xyXG4gIFwiICApe1xcblwiICtcclxuICBcIiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcXFwiQXVkaW8gc291cmNlIHdvcmtsZXQ6IHByb2Nlc3MgXFxcIitvdXRwdXRzLmxlbmd0aCsgXFxcIiBvdXRwdXQgYnVmZmVycy5cXFwiKTtcXG5cIiArXHJcbiAgXCIgICAgICAvLyBjb3B5IHJpbmcgYnVmZmVyIGRhdGEgdG8gb3V0cHV0c1xcblwiICtcclxuICBcIiAgICAgICAgaWYoIXRoaXMucnVubmluZyB8fCB0aGlzLnN0YWxsZWQpe1xcblwiICtcclxuICBcIiAgICAgICAgICAgIGlmKHRoaXMuZW5kT2ZTdHJlYW0pIHtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgdGhpcy5lbmRlZCA9IHRydWU7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7ZXZlbnRUeXBlOiAnZW5kZWQnfSk7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgfVxcblwiICtcclxuICBcIiAgICAgICAgICByZXR1cm4gIXRoaXMuZW5kZWQgJiYgIXRoaXMuc3RvcHBlZDtcXG5cIiArXHJcbiAgXCIgICAgICAgIH1cXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCIgICAgICAgIGxldCBvdXRwdXQ9b3V0cHV0c1swXTtcXG5cIiArXHJcbiAgXCIgICAgICAgIGxldCBjaHM9b3V0cHV0Lmxlbmd0aDtcXG5cIiArXHJcbiAgXCIgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcXFwiQXVkaW8gc291cmNlIHdvcmtsZXQ6IE91dHB1dCBjaGFubmVsczogXFxcIitjaHMpO1xcblwiICtcclxuICBcIiAgICAgICAgaWYoY2hzPjApIHtcXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCIgICAgICAgICAgbGV0IG91dENoMCA9IG91dHB1dFswXTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgbGV0IG91dENoTGVuID0gb3V0Q2gwLmxlbmd0aDtcXG5cIiArXHJcbiAgXCJcXG5cIiArXHJcbiAgXCIgICAgICAgICAgaWYoIXRoaXMuY3VycmVudEF1ZGlvQnVmZmVyKXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAvLyBnZXQgZmlyc3QgYnVmZmVyXFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgbGV0IG54dEJ1ZmY9dGhpcy5hdWRpb0J1ZmZlcnMuc2hpZnQoKTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICBpZihueHRCdWZmKSB7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdWRpb0J1ZmZlciA9IG54dEJ1ZmY7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdWRpb0J1ZmZlckZyYW1lUG9zPTA7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdWRpb0J1ZmZlckF2YWlsPXRoaXMuY3VycmVudEF1ZGlvQnVmZmVyWzBdLmxlbmd0aDtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICB9ZWxzZXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xcblwiICtcclxuICBcIiAgICAgICAgICAgIH1cXG5cIiArXHJcbiAgXCIgICAgICAgICAgfVxcblwiICtcclxuICBcIlxcblwiICtcclxuICBcIiAgICAgICAgICBsZXQgY29waWVkPTA7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgIGRve1xcblwiICtcclxuICBcIiAgICAgICAgICAgIGlmKHRoaXMuY3VycmVudEF1ZGlvQnVmZmVyQXZhaWw9PT0wKXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIGxldCBueHRCdWZmPXRoaXMuYXVkaW9CdWZmZXJzLnNoaWZ0KCk7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICBpZihueHRCdWZmKXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW9CdWZmZXI9bnh0QnVmZjtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW9CdWZmZXJGcmFtZVBvcz0wO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdWRpb0J1ZmZlckF2YWlsPXRoaXMuY3VycmVudEF1ZGlvQnVmZmVyWzBdLmxlbmd0aDtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFxcXCJOZXh0IGJ1ZmZlciB3aXRoIFxcXCIrdGhpcy5jdXJyZW50QXVkaW9CdWZmZXJBdmFpbCsgXFxcIiBmcmFtZXNcXFwiKTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtldmVudFR5cGU6J2J1ZmZlck5vdGlmaWNhdGlvbicsZmlsbGVkRnJhbWVzOnRoaXMuZmlsbGVkRnJhbWVzfSk7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB9ZWxzZXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgaWYodGhpcy5lbmRPZlN0cmVhbSkge1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICAgIHRoaXMuZW5kZWQgPSB0cnVlO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7ZXZlbnRUeXBlOiAnZW5kZWQnfSk7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFxcXCJTdHJlYW0gZW5kZWRcXFwiKTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgfWVsc2V7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgICAgaWYoIXRoaXMuc3RhbGxlZCkge1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFsbGVkID0gdHJ1ZTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7ZXZlbnRUeXBlOiAnc3RhbGxlZCd9KTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgICB9XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICAgIH1cXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgICAgYnJlYWs7XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB9XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgfVxcblwiICtcclxuICBcIiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcXFwib3V0Q2hMZW46IFxcXCIrb3V0Q2hMZW4rXFxcIiwgY29waWVkOiBcXFwiK2NvcGllZCtcXFwiLCBjdXJyZW50IGF2YWlsOiBcXFwiK3RoaXMuY3VycmVudEF1ZGlvQnVmZmVyQXZhaWwpO1xcblwiICtcclxuICBcIiAgICAgICAgICAgIGxldCB0b0NvcHk9b3V0Q2hMZW4tY29waWVkO1xcblwiICtcclxuICBcIiAgICAgICAgICAgIGlmKHRvQ29weT50aGlzLmN1cnJlbnRBdWRpb0J1ZmZlckF2YWlsKXtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIHRvQ29weT10aGlzLmN1cnJlbnRBdWRpb0J1ZmZlckF2YWlsO1xcblwiICtcclxuICBcIiAgICAgICAgICAgIH1cXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXFxcIkNvcHkgXFxcIit0b0NvcHkrXFxcIiBmcmFtZXMuLi5cXFwiKTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICBmb3IobGV0IGNoPTA7Y2g8Y2hzO2NoKyspIHtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICAgIGxldCBvdXRDaD1vdXRwdXRbY2hdO1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b0NvcHk7IGkrKykge1xcblwiICtcclxuICBcIiAgICAgICAgICAgICAgICBvdXRDaFtjb3BpZWQraV09dGhpcy5jdXJyZW50QXVkaW9CdWZmZXJbY2hdW3RoaXMuY3VycmVudEF1ZGlvQnVmZmVyRnJhbWVQb3MraV07XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgICB9XFxuXCIgK1xyXG4gIFwiICAgICAgICAgICAgfVxcblwiICtcclxuICBcIiAgICAgICAgICAgIGNvcGllZCs9dG9Db3B5O1xcblwiICtcclxuICBcIiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvQnVmZmVyRnJhbWVQb3MrPXRvQ29weTtcXG5cIiArXHJcbiAgXCIgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdWRpb0J1ZmZlckF2YWlsLT10b0NvcHk7XFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwiICAgICAgICAgIH13aGlsZShjb3BpZWQ8b3V0Q2hMZW4pO1xcblwiICtcclxuICBcIiAgICAgICAgICB0aGlzLmZpbGxlZEZyYW1lcy09Y29waWVkO1xcblwiICtcclxuICBcIiAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXFxcIkNvcGllZCBcXFwiK2NvcGllZCtcXFwiIGZyYW1lcy5cXFwiKTtcXG5cIiArXHJcbiAgXCIgICAgICAgIH1cXG5cIiArXHJcbiAgXCIgICAgIHJldHVybiAhdGhpcy5lbmRlZDtcXG5cIiArXHJcbiAgXCIgIH1cXG5cIiArXHJcbiAgXCJ9XFxuXCIgK1xyXG4gIFwiXFxuXCIgK1xyXG4gIFwicmVnaXN0ZXJQcm9jZXNzb3IoJ2F1ZGlvLXNvdXJjZS13b3JrbGV0JyxBdWRpb1NvdXJjZVByb2Nlc3Nvcik7XFxuXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQXVkaW9Tb3VyY2VXb3JrbGV0TW9kdWxlTG9hZGVye1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBtb2R1bGVMb2FkZWQ9ZmFsc2U7XHJcblxyXG4gIHN0YXRpYyBsb2FkTW9kdWxlKGNvbnRleHQ6IEF1ZGlvQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKEF1ZGlvU291cmNlV29ya2xldE1vZHVsZUxvYWRlci5tb2R1bGVMb2FkZWQpIHtcclxuICAgICAgICByZXNvbHZlLmNhbGwoc2VsZik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgYXVkaW9Xb3JrbGV0TW9kdWxlQmxvYiA9IG5ldyBCbG9iKFthc3dwU3RyXSwge3R5cGU6ICd0ZXh0L2phdmFzY3JpcHQnfSk7XHJcbiAgICAgICAgY29uc3QgYXVkaW9Xb3JrbGV0TW9kdWxlQmxvYlVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGF1ZGlvV29ya2xldE1vZHVsZUJsb2IpO1xyXG4gICAgICAgIGNvbnRleHQuYXVkaW9Xb3JrbGV0LmFkZE1vZHVsZShhdWRpb1dvcmtsZXRNb2R1bGVCbG9iVXJsKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIEF1ZGlvU291cmNlV29ya2xldE1vZHVsZUxvYWRlci5tb2R1bGVMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmVzb2x2ZS5jYWxsKHNlbGYpO1xyXG4gICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVhc29uKTtcclxuICAgICAgICAgIHJlamVjdC5jYWxsKHJlYXNvbik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|