@angular/compiler-cli 12.1.0-next.6 → 12.1.3
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/linker/src/file_linker/emit_scopes/iife_emit_scope.js +1 -1
- package/linker/src/file_linker/partial_linkers/partial_component_linker_1.js +2 -3
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
- package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
- package/ngcc/src/dependencies/dts_dependency_host.js +1 -1
- package/ngcc/src/dependencies/esm_dependency_host.js +1 -1
- package/ngcc/src/dependencies/umd_dependency_host.js +1 -1
- package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +1 -1
- package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +1 -1
- package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +1 -1
- package/ngcc/src/execution/tasks/queues/serial_task_queue.js +1 -1
- package/ngcc/src/host/commonjs_host.js +1 -1
- package/ngcc/src/host/esm2015_host.js +1 -1
- package/ngcc/src/host/esm5_host.js +1 -1
- package/ngcc/src/host/umd_host.js +1 -1
- package/ngcc/src/packages/build_marker.d.ts +1 -1
- package/ngcc/src/packages/build_marker.js +1 -1
- package/ngcc/src/packages/configuration.d.ts +7 -0
- package/ngcc/src/packages/configuration.js +8 -3
- package/ngcc/src/packages/entry_point_manifest.js +2 -2
- package/ngcc/src/packages/ngcc_compiler_host.js +1 -1
- package/ngcc/src/rendering/commonjs_rendering_formatter.js +1 -1
- package/ngcc/src/rendering/esm5_rendering_formatter.js +1 -1
- package/ngcc/src/rendering/umd_rendering_formatter.js +1 -1
- package/ngcc/src/writing/new_entry_point_file_writer.js +1 -1
- package/package.json +2 -2
- package/src/ngtsc/annotations/src/component.d.ts +2 -0
- package/src/ngtsc/annotations/src/component.js +6 -2
- package/src/ngtsc/annotations/src/directive.js +1 -1
- package/src/ngtsc/annotations/src/ng_module.js +1 -1
- package/src/ngtsc/annotations/src/pipe.js +1 -1
- package/src/ngtsc/core/api/src/public_options.d.ts +12 -0
- package/src/ngtsc/core/api/src/public_options.js +1 -1
- package/src/ngtsc/core/src/compiler.d.ts +5 -0
- package/src/ngtsc/core/src/compiler.js +10 -1
- package/src/ngtsc/cycles/src/analyzer.d.ts +7 -0
- package/src/ngtsc/cycles/src/analyzer.js +89 -4
- package/src/ngtsc/cycles/src/imports.d.ts +1 -6
- package/src/ngtsc/cycles/src/imports.js +5 -23
- package/src/ngtsc/file_system/testing/src/mock_file_system_native.js +1 -1
- package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +1 -1
- package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +1 -1
- package/src/ngtsc/incremental/semantic_graph/src/graph.js +1 -1
- package/src/ngtsc/incremental/src/incremental.js +30 -4
- package/src/ngtsc/indexer/src/template.js +1 -1
- package/src/ngtsc/metadata/src/dts.js +2 -3
- package/src/ngtsc/metadata/src/inheritance.js +2 -7
- package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
- package/src/ngtsc/partial_evaluator/src/diagnostics.js +4 -1
- package/src/ngtsc/partial_evaluator/src/dynamic.d.ts +19 -1
- package/src/ngtsc/partial_evaluator/src/dynamic.js +12 -4
- package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +2 -0
- package/src/ngtsc/partial_evaluator/src/interpreter.js +53 -5
- package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
- package/src/ngtsc/program.d.ts +1 -0
- package/src/ngtsc/program.js +26 -2
- package/src/ngtsc/program_driver/src/api.d.ts +20 -1
- package/src/ngtsc/program_driver/src/api.js +3 -2
- package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
- package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
- package/src/ngtsc/reflection/src/typescript.js +4 -1
- package/src/ngtsc/transform/src/api.d.ts +6 -0
- package/src/ngtsc/transform/src/api.js +1 -1
- package/src/ngtsc/transform/src/compilation.d.ts +2 -0
- package/src/ngtsc/transform/src/compilation.js +59 -20
- package/src/ngtsc/transform/src/transform.js +1 -1
- package/src/ngtsc/typecheck/src/context.d.ts +2 -1
- package/src/ngtsc/typecheck/src/context.js +11 -3
- package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
- package/src/ngtsc/typecheck/src/template_symbol_builder.js +36 -4
- package/src/ngtsc/typecheck/src/type_check_block.js +2 -2
- package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
- package/src/ngtsc/typecheck/src/type_emitter.d.ts +2 -1
- package/src/ngtsc/typecheck/src/type_emitter.js +54 -48
- package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +2 -0
- package/src/ngtsc/typecheck/src/type_parameter_emitter.js +21 -7
- package/src/ngtsc/util/src/visitor.d.ts +1 -1
- package/src/ngtsc/util/src/visitor.js +1 -8
- package/src/ngtsc/xi18n/index.d.ts +9 -0
- package/src/ngtsc/xi18n/index.js +22 -0
- package/src/ngtsc/xi18n/src/context.d.ts +26 -0
- package/src/ngtsc/xi18n/src/context.js +20 -0
- package/src/transformers/api.d.ts +0 -3
- package/src/transformers/api.js +1 -1
- package/src/transformers/i18n.d.ts +14 -0
- package/src/transformers/i18n.js +76 -0
- package/src/transformers/program.d.ts +0 -4
- package/src/transformers/program.js +5 -56
- package/src/version.js +1 -1
- package/compiler-cli.externs.js +0 -0
- package/index.mjs +0 -20
- package/linker/babel/babel.externs.js +0 -0
- package/linker/babel/index.mjs +0 -11
- package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
- package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
- package/linker/babel/src/babel_declaration_scope.mjs +0 -52
- package/linker/babel/src/babel_plugin.mjs +0 -23
- package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
- package/linker/babel/src/linker_plugin_options.mjs +0 -2
- package/linker/index.mjs +0 -7
- package/linker/linker.externs.js +0 -0
- package/linker/src/ast/ast_host.mjs +0 -9
- package/linker/src/ast/ast_value.mjs +0 -256
- package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
- package/linker/src/ast/utils.mjs +0 -17
- package/linker/src/fatal_linker_error.mjs +0 -30
- package/linker/src/file_linker/declaration_scope.mjs +0 -9
- package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
- package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
- package/linker/src/file_linker/file_linker.mjs +0 -70
- package/linker/src/file_linker/get_source_file.mjs +0 -28
- package/linker/src/file_linker/linker_environment.mjs +0 -23
- package/linker/src/file_linker/linker_options.mjs +0 -16
- package/linker/src/file_linker/needs_linking.mjs +0 -27
- package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
- package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
- package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
- package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
- package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
- package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
- package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
- package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
- package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
- package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
- package/linker/src/file_linker/translator.mjs +0 -23
- package/linker/src/linker_import_generator.mjs +0 -28
- package/ngcc/index.mjs +0 -16
- package/ngcc/main-ivy-ngcc.mjs +0 -12
- package/ngcc/main-ngcc.mjs +0 -32
- package/ngcc/ngcc.externs.js +0 -0
- package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
- package/ngcc/src/analysis/migration_host.mjs +0 -80
- package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
- package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
- package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
- package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
- package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
- package/ngcc/src/analysis/types.mjs +0 -2
- package/ngcc/src/analysis/util.mjs +0 -19
- package/ngcc/src/command_line_options.mjs +0 -142
- package/ngcc/src/constants.mjs +0 -10
- package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
- package/ngcc/src/dependencies/dependency_host.mjs +0 -102
- package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
- package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
- package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
- package/ngcc/src/dependencies/module_resolver.mjs +0 -233
- package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
- package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
- package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
- package/ngcc/src/entry_point_finder/interface.mjs +0 -2
- package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
- package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
- package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
- package/ngcc/src/entry_point_finder/utils.mjs +0 -176
- package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
- package/ngcc/src/execution/api.mjs +0 -2
- package/ngcc/src/execution/cluster/api.mjs +0 -9
- package/ngcc/src/execution/cluster/executor.mjs +0 -27
- package/ngcc/src/execution/cluster/master.mjs +0 -261
- package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
- package/ngcc/src/execution/cluster/utils.mjs +0 -59
- package/ngcc/src/execution/cluster/worker.mjs +0 -81
- package/ngcc/src/execution/create_compile_function.mjs +0 -62
- package/ngcc/src/execution/single_process_executor.mjs +0 -57
- package/ngcc/src/execution/tasks/api.mjs +0 -22
- package/ngcc/src/execution/tasks/completion.mjs +0 -61
- package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
- package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
- package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
- package/ngcc/src/execution/tasks/utils.mjs +0 -114
- package/ngcc/src/host/commonjs_host.mjs +0 -220
- package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
- package/ngcc/src/host/delegating_host.mjs +0 -140
- package/ngcc/src/host/esm2015_host.mjs +0 -2293
- package/ngcc/src/host/esm5_host.mjs +0 -721
- package/ngcc/src/host/ngcc_host.mjs +0 -15
- package/ngcc/src/host/umd_host.mjs +0 -486
- package/ngcc/src/host/utils.mjs +0 -12
- package/ngcc/src/locking/async_locker.mjs +0 -76
- package/ngcc/src/locking/lock_file.mjs +0 -4
- package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
- package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
- package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
- package/ngcc/src/locking/sync_locker.mjs +0 -52
- package/ngcc/src/main.mjs +0 -134
- package/ngcc/src/migrations/migration.mjs +0 -2
- package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
- package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
- package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
- package/ngcc/src/migrations/utils.mjs +0 -117
- package/ngcc/src/ngcc_options.mjs +0 -119
- package/ngcc/src/packages/build_marker.mjs +0 -84
- package/ngcc/src/packages/bundle_program.mjs +0 -52
- package/ngcc/src/packages/configuration.mjs +0 -250
- package/ngcc/src/packages/entry_point.mjs +0 -239
- package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
- package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
- package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
- package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
- package/ngcc/src/packages/source_file_cache.mjs +0 -187
- package/ngcc/src/packages/transformer.mjs +0 -140
- package/ngcc/src/path_mappings.mjs +0 -13
- package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
- package/ngcc/src/rendering/dts_renderer.mjs +0 -139
- package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
- package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
- package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
- package/ngcc/src/rendering/renderer.mjs +0 -170
- package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
- package/ngcc/src/rendering/source_maps.mjs +0 -54
- package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
- package/ngcc/src/rendering/utils.mjs +0 -20
- package/ngcc/src/utils.mjs +0 -144
- package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
- package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
- package/ngcc/src/writing/cleaning/utils.mjs +0 -16
- package/ngcc/src/writing/file_writer.mjs +0 -2
- package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
- package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
- package/ngcc/src/writing/package_json_updater.mjs +0 -144
- package/src/diagnostics/translate_diagnostics.mjs +0 -47
- package/src/diagnostics/typescript_version.mjs +0 -79
- package/src/extract_i18n.mjs +0 -46
- package/src/language_services.mjs +0 -18
- package/src/main.mjs +0 -185
- package/src/metadata/bundle_index_host.mjs +0 -107
- package/src/metadata/bundler.mjs +0 -556
- package/src/metadata/collector.mjs +0 -701
- package/src/metadata/evaluator.mjs +0 -643
- package/src/metadata/index.mjs +0 -11
- package/src/metadata/index_writer.mjs +0 -44
- package/src/metadata/schema.mjs +0 -102
- package/src/metadata/symbols.mjs +0 -117
- package/src/ngtsc/annotations/annotations.externs.js +0 -0
- package/src/ngtsc/annotations/index.mjs +0 -15
- package/src/ngtsc/annotations/src/api.mjs +0 -9
- package/src/ngtsc/annotations/src/component.mjs +0 -1064
- package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
- package/src/ngtsc/annotations/src/directive.mjs +0 -692
- package/src/ngtsc/annotations/src/factory.mjs +0 -17
- package/src/ngtsc/annotations/src/injectable.mjs +0 -260
- package/src/ngtsc/annotations/src/metadata.mjs +0 -145
- package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
- package/src/ngtsc/annotations/src/pipe.mjs +0 -151
- package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
- package/src/ngtsc/annotations/src/util.mjs +0 -495
- package/src/ngtsc/core/api/index.mjs +0 -12
- package/src/ngtsc/core/api/src/adapter.mjs +0 -9
- package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
- package/src/ngtsc/core/api/src/options.mjs +0 -9
- package/src/ngtsc/core/api/src/public_options.mjs +0 -9
- package/src/ngtsc/core/api.externs.js +0 -0
- package/src/ngtsc/core/core.externs.js +0 -0
- package/src/ngtsc/core/index.mjs +0 -10
- package/src/ngtsc/core/src/compiler.mjs +0 -908
- package/src/ngtsc/core/src/config.mjs +0 -15
- package/src/ngtsc/core/src/host.mjs +0 -229
- package/src/ngtsc/cycles/cycles.externs.js +0 -0
- package/src/ngtsc/cycles/index.mjs +0 -10
- package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
- package/src/ngtsc/cycles/src/imports.mjs +0 -152
- package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
- package/src/ngtsc/diagnostics/index.mjs +0 -11
- package/src/ngtsc/diagnostics/src/error.mjs +0 -51
- package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
- package/src/ngtsc/diagnostics/src/util.mjs +0 -21
- package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
- package/src/ngtsc/entry_point/index.mjs +0 -12
- package/src/ngtsc/entry_point/src/generator.mjs +0 -35
- package/src/ngtsc/entry_point/src/logic.mjs +0 -35
- package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
- package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
- package/src/ngtsc/file_system/file_system.externs.js +0 -0
- package/src/ngtsc/file_system/index.mjs +0 -13
- package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
- package/src/ngtsc/file_system/src/helpers.mjs +0 -99
- package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
- package/src/ngtsc/file_system/src/logical.mjs +0 -84
- package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
- package/src/ngtsc/file_system/src/types.mjs +0 -9
- package/src/ngtsc/file_system/src/util.mjs +0 -22
- package/src/ngtsc/file_system/testing/index.mjs +0 -13
- package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
- package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
- package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
- package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
- package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
- package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
- package/src/ngtsc/imports/imports.externs.js +0 -0
- package/src/ngtsc/imports/index.mjs +0 -14
- package/src/ngtsc/imports/src/alias.mjs +0 -137
- package/src/ngtsc/imports/src/core.mjs +0 -78
- package/src/ngtsc/imports/src/default.mjs +0 -135
- package/src/ngtsc/imports/src/emitter.mjs +0 -266
- package/src/ngtsc/imports/src/find_export.mjs +0 -56
- package/src/ngtsc/imports/src/reexport.mjs +0 -9
- package/src/ngtsc/imports/src/references.mjs +0 -137
- package/src/ngtsc/imports/src/resolver.mjs +0 -24
- package/src/ngtsc/incremental/api.externs.js +0 -0
- package/src/ngtsc/incremental/api.mjs +0 -9
- package/src/ngtsc/incremental/incremental.externs.js +0 -0
- package/src/ngtsc/incremental/index.mjs +0 -12
- package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
- package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
- package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
- package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
- package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
- package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
- package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
- package/src/ngtsc/incremental/src/incremental.mjs +0 -271
- package/src/ngtsc/incremental/src/noop.mjs +0 -13
- package/src/ngtsc/incremental/src/state.mjs +0 -17
- package/src/ngtsc/incremental/src/strategy.mjs +0 -76
- package/src/ngtsc/indexer/index.mjs +0 -11
- package/src/ngtsc/indexer/indexer.externs.js +0 -0
- package/src/ngtsc/indexer/src/api.mjs +0 -30
- package/src/ngtsc/indexer/src/context.mjs +0 -25
- package/src/ngtsc/indexer/src/template.mjs +0 -303
- package/src/ngtsc/indexer/src/transform.mjs +0 -51
- package/src/ngtsc/logging/index.mjs +0 -10
- package/src/ngtsc/logging/logging.externs.js +0 -0
- package/src/ngtsc/logging/src/console_logger.mjs +0 -43
- package/src/ngtsc/logging/src/logger.mjs +0 -15
- package/src/ngtsc/logging/testing/index.mjs +0 -9
- package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
- package/src/ngtsc/logging/testing/testing.externs.js +0 -0
- package/src/ngtsc/metadata/index.mjs +0 -15
- package/src/ngtsc/metadata/metadata.externs.js +0 -0
- package/src/ngtsc/metadata/src/api.mjs +0 -13
- package/src/ngtsc/metadata/src/dts.mjs +0 -143
- package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
- package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
- package/src/ngtsc/metadata/src/registry.mjs +0 -80
- package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
- package/src/ngtsc/metadata/src/util.mjs +0 -200
- package/src/ngtsc/partial_evaluator/index.mjs +0 -12
- package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
- package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
- package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -171
- package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -86
- package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
- package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -683
- package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
- package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
- package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
- package/src/ngtsc/perf/index.mjs +0 -11
- package/src/ngtsc/perf/perf.externs.js +0 -0
- package/src/ngtsc/perf/src/api.mjs +0 -278
- package/src/ngtsc/perf/src/clock.mjs +0 -15
- package/src/ngtsc/perf/src/noop.mjs +0 -21
- package/src/ngtsc/perf/src/recorder.mjs +0 -125
- package/src/ngtsc/program.mjs +0 -247
- package/src/ngtsc/program_driver/index.mjs +0 -10
- package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
- package/src/ngtsc/program_driver/src/api.mjs +0 -22
- package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
- package/src/ngtsc/reflection/index.mjs +0 -12
- package/src/ngtsc/reflection/reflection.externs.js +0 -0
- package/src/ngtsc/reflection/src/host.mjs +0 -73
- package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
- package/src/ngtsc/reflection/src/typescript.mjs +0 -608
- package/src/ngtsc/reflection/src/util.mjs +0 -21
- package/src/ngtsc/resource/index.mjs +0 -9
- package/src/ngtsc/resource/resource.externs.js +0 -0
- package/src/ngtsc/resource/src/loader.mjs +0 -242
- package/src/ngtsc/routing/index.mjs +0 -11
- package/src/ngtsc/routing/routing.externs.js +0 -0
- package/src/ngtsc/routing/src/analyzer.mjs +0 -69
- package/src/ngtsc/routing/src/lazy.mjs +0 -168
- package/src/ngtsc/routing/src/route.mjs +0 -51
- package/src/ngtsc/scope/index.mjs +0 -12
- package/src/ngtsc/scope/scope.externs.js +0 -0
- package/src/ngtsc/scope/src/api.mjs +0 -9
- package/src/ngtsc/scope/src/component_scope.mjs +0 -31
- package/src/ngtsc/scope/src/dependency.mjs +0 -134
- package/src/ngtsc/scope/src/local.mjs +0 -531
- package/src/ngtsc/scope/src/typecheck.mjs +0 -83
- package/src/ngtsc/shims/api.externs.js +0 -0
- package/src/ngtsc/shims/api.mjs +0 -2
- package/src/ngtsc/shims/index.mjs +0 -14
- package/src/ngtsc/shims/shims.externs.js +0 -0
- package/src/ngtsc/shims/src/adapter.mjs +0 -188
- package/src/ngtsc/shims/src/expando.mjs +0 -102
- package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
- package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
- package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
- package/src/ngtsc/shims/src/util.mjs +0 -26
- package/src/ngtsc/sourcemaps/index.mjs +0 -11
- package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
- package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
- package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
- package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
- package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
- package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
- package/src/ngtsc/switch/index.mjs +0 -9
- package/src/ngtsc/switch/src/switch.mjs +0 -115
- package/src/ngtsc/switch/switch.externs.js +0 -0
- package/src/ngtsc/transform/index.mjs +0 -14
- package/src/ngtsc/transform/src/alias.mjs +0 -30
- package/src/ngtsc/transform/src/api.mjs +0 -63
- package/src/ngtsc/transform/src/compilation.mjs +0 -496
- package/src/ngtsc/transform/src/declaration.mjs +0 -182
- package/src/ngtsc/transform/src/trait.mjs +0 -95
- package/src/ngtsc/transform/src/transform.mjs +0 -298
- package/src/ngtsc/transform/src/utils.mjs +0 -57
- package/src/ngtsc/transform/transform.externs.js +0 -0
- package/src/ngtsc/translator/index.mjs +0 -14
- package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
- package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
- package/src/ngtsc/translator/src/context.mjs +0 -24
- package/src/ngtsc/translator/src/import_manager.mjs +0 -48
- package/src/ngtsc/translator/src/translator.mjs +0 -317
- package/src/ngtsc/translator/src/type_translator.mjs +0 -204
- package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
- package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
- package/src/ngtsc/translator/translator.externs.js +0 -0
- package/src/ngtsc/tsc_plugin.mjs +0 -98
- package/src/ngtsc/typecheck/api/api.externs.js +0 -0
- package/src/ngtsc/typecheck/api/api.mjs +0 -9
- package/src/ngtsc/typecheck/api/checker.mjs +0 -31
- package/src/ngtsc/typecheck/api/completion.mjs +0 -16
- package/src/ngtsc/typecheck/api/context.mjs +0 -9
- package/src/ngtsc/typecheck/api/index.mjs +0 -14
- package/src/ngtsc/typecheck/api/scope.mjs +0 -9
- package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
- package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
- package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
- package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
- package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
- package/src/ngtsc/typecheck/index.mjs +0 -12
- package/src/ngtsc/typecheck/src/checker.mjs +0 -591
- package/src/ngtsc/typecheck/src/comments.mjs +0 -159
- package/src/ngtsc/typecheck/src/completion.mjs +0 -155
- package/src/ngtsc/typecheck/src/context.mjs +0 -350
- package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
- package/src/ngtsc/typecheck/src/dom.mjs +0 -68
- package/src/ngtsc/typecheck/src/environment.mjs +0 -146
- package/src/ngtsc/typecheck/src/expression.mjs +0 -412
- package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
- package/src/ngtsc/typecheck/src/oob.mjs +0 -112
- package/src/ngtsc/typecheck/src/shim.mjs +0 -37
- package/src/ngtsc/typecheck/src/source.mjs +0 -74
- package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
- package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
- package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -472
- package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
- package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
- package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
- package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
- package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -140
- package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -80
- package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
- package/src/ngtsc/util/src/path.mjs +0 -18
- package/src/ngtsc/util/src/typescript.mjs +0 -143
- package/src/ngtsc/util/src/visitor.mjs +0 -107
- package/src/ngtsc/util/util.externs.js +0 -0
- package/src/perform_compile.mjs +0 -275
- package/src/perform_watch.mjs +0 -247
- package/src/tooling.mjs +0 -32
- package/src/transformers/api.mjs +0 -27
- package/src/transformers/compiler_host.mjs +0 -593
- package/src/transformers/downlevel_decorators_transform.mjs +0 -507
- package/src/transformers/entry_points.mjs +0 -10
- package/src/transformers/inline_resources.mjs +0 -269
- package/src/transformers/lower_expressions.mjs +0 -336
- package/src/transformers/metadata_cache.mjs +0 -53
- package/src/transformers/metadata_reader.mjs +0 -104
- package/src/transformers/node_emitter.mjs +0 -606
- package/src/transformers/node_emitter_transform.mjs +0 -78
- package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
- package/src/transformers/program.mjs +0 -935
- package/src/transformers/r3_metadata_transform.mjs +0 -46
- package/src/transformers/r3_transform.mjs +0 -29
- package/src/transformers/util.mjs +0 -89
- package/src/typescript_support.mjs +0 -57
- package/src/version.mjs +0 -15
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
TraceDynamicValueVisitor.prototype.visitUnknownIdentifier = function (value) {
|
|
133
133
|
return [diagnostics_1.makeRelatedInformation(value.node, 'Unknown reference.')];
|
|
134
134
|
};
|
|
135
|
+
TraceDynamicValueVisitor.prototype.visitDynamicType = function (value) {
|
|
136
|
+
return [diagnostics_1.makeRelatedInformation(value.node, 'Dynamic type.')];
|
|
137
|
+
};
|
|
135
138
|
TraceDynamicValueVisitor.prototype.visitUnsupportedSyntax = function (value) {
|
|
136
139
|
return [diagnostics_1.makeRelatedInformation(value.node, 'This syntax is not supported.')];
|
|
137
140
|
};
|
|
@@ -187,4 +190,4 @@
|
|
|
187
190
|
return node.getSourceFile();
|
|
188
191
|
}
|
|
189
192
|
});
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3BhcnRpYWxfZXZhbHVhdG9yL3NyYy9kaWFnbm9zdGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBRUgsK0JBQWlDO0lBRWpDLDJFQUF5RDtJQUN6RCxtRUFBd0M7SUFFeEMseUZBQTREO0lBQzVELHVGQUEyRTtJQUUzRTs7Ozs7T0FLRztJQUNILFNBQWdCLG9CQUFvQixDQUFDLEtBQW9CLEVBQUUsUUFBb0I7O1FBQXBCLHlCQUFBLEVBQUEsWUFBb0I7UUFDN0UsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2xCLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7YUFBTSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDOUIsT0FBTyxXQUFXLENBQUM7U0FDcEI7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQy9GLE9BQU8sT0FBTyxLQUFLLENBQUM7U0FDckI7YUFBTSxJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUU7WUFDL0IsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFO2dCQUNsQixPQUFPLFFBQVEsQ0FBQzthQUNqQjtZQUNELElBQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUMsRUFBUTtvQkFBUixLQUFBLHFCQUFRLEVBQVAsR0FBRyxRQUFBLEVBQUUsQ0FBQyxRQUFBO2dCQUN0RCxPQUFVLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBSyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsQ0FBRyxDQUFDO1lB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RSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDeEMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQjtvQkFDcEMsT0FBTyxXQUFXLENBQUM7YUFDdEI7WUFFRCxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztTQUNsQztRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7bWFrZVJlbGF0ZWRJbmZvcm1hdGlvbn0gZnJvbSAnLi4vLi4vZGlhZ25vc3RpY3MnO1xuaW1wb3J0IHtSZWZlcmVuY2V9IGZyb20gJy4uLy4uL2ltcG9ydHMnO1xuaW1wb3J0IHtGdW5jdGlvbkRlZmluaXRpb259IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtEeW5hbWljVmFsdWUsIER5bmFtaWNWYWx1ZVZpc2l0b3J9IGZyb20gJy4vZHluYW1pYyc7XG5pbXBvcnQge0VudW1WYWx1ZSwgS25vd25GbiwgUmVzb2x2ZWRNb2R1bGUsIFJlc29sdmVkVmFsdWV9IGZyb20gJy4vcmVzdWx0JztcblxuLyoqXG4gKiBEZXJpdmVzIGEgdHlwZSByZXByZXNlbnRhdGlvbiBmcm9tIGEgcmVzb2x2ZWQgdmFsdWUgdG8gYmUgcmVwb3J0ZWQgaW4gYSBkaWFnbm9zdGljLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgcmVzb2x2ZWQgdmFsdWUgZm9yIHdoaWNoIGEgdHlwZSByZXByZXNlbnRhdGlvbiBzaG91bGQgYmUgZGVyaXZlZC5cbiAqIEBwYXJhbSBtYXhEZXB0aCBUaGUgbWF4aW11bSBuZXN0aW5nIGRlcHRoIG9mIG9iamVjdHMgYW5kIGFycmF5cywgZGVmYXVsdHMgdG8gMSBsZXZlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlUmVzb2x2ZWRUeXBlKHZhbHVlOiBSZXNvbHZlZFZhbHVlLCBtYXhEZXB0aDogbnVtYmVyID0gMSk6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnbnVsbCc7XG4gIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgaWYgKG1heERlcHRoID09PSAwKSB7XG4gICAgICByZXR1cm4gJ29iamVjdCc7XG4gICAgfVxuICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKHZhbHVlLmVudHJpZXMoKSkubWFwKChba2V5LCB2XSkgPT4ge1xuICAgICAgcmV0dXJuIGAke3F1b3RlS2V5KGtleSl9OiAke2Rlc2NyaWJlUmVzb2x2ZWRUeXBlKHYsIG1heERlcHRoIC0gMSl9YDtcbiAgICB9KTtcbiAgICByZXR1cm4gZW50cmllcy5sZW5ndGggPiAwID8gYHsgJHtlbnRyaWVzLmpvaW4oJzsgJyl9IH1gIDogJ3t9JztcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlc29sdmVkTW9kdWxlKSB7XG4gICAgcmV0dXJuICcobW9kdWxlKSc7XG4gIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBFbnVtVmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuZW51bVJlZi5kZWJ1Z05hbWUgPz8gJyhhbm9ueW1vdXMpJztcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZmVyZW5jZSkge1xuICAgIHJldHVybiB2YWx1ZS5kZWJ1Z05hbWUgPz8gJyhhbm9ueW1vdXMpJztcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmIChtYXhEZXB0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICdBcnJheSc7XG4gICAgfVxuICAgIHJldHVybiBgWyR7dmFsdWUubWFwKHYgPT4gZGVzY3JpYmVSZXNvbHZlZFR5cGUodiwgbWF4RGVwdGggLSAxKSkuam9pbignLCAnKX1dYDtcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIER5bmFtaWNWYWx1ZSkge1xuICAgIHJldHVybiAnKG5vdCBzdGF0aWNhbGx5IGFuYWx5emFibGUpJztcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEtub3duRm4pIHtcbiAgICByZXR1cm4gJ0Z1bmN0aW9uJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJ3Vua25vd24nO1xuICB9XG59XG5cbmZ1bmN0aW9uIHF1b3RlS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKC9eW2EtejAtOV9dKyQvaS50ZXN0KGtleSkpIHtcbiAgICByZXR1cm4ga2V5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBgJyR7a2V5LnJlcGxhY2UoLycvZywgJ1xcXFxcXCcnKX0nYDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgcmVsYXRlZCBpbmZvcm1hdGlvbiBkaWFnbm9zdGljcyBmb3IgYSBgRHluYW1pY1ZhbHVlYCB0aGF0IGRlc2NyaWJlIHRoZSB0cmFjZVxuICogb2Ygd2h5IGFuIGV4cHJlc3Npb24gd2FzIGV2YWx1YXRlZCBhcyBkeW5hbWljLlxuICpcbiAqIEBwYXJhbSBub2RlIFRoZSBub2RlIGZvciB3aGljaCBhIGB0cy5EaWFnbm9zdGljYCBpcyB0byBiZSBjcmVhdGVkIHdpdGggdGhlIHRyYWNlLlxuICogQHBhcmFtIHZhbHVlIFRoZSBkeW5hbWljIHZhbHVlIGZvciB3aGljaCBhIHRyYWNlIHNob3VsZCBiZSBjcmVhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VEeW5hbWljVmFsdWUoXG4gICAgbm9kZTogdHMuTm9kZSwgdmFsdWU6IER5bmFtaWNWYWx1ZSk6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gIHJldHVybiB2YWx1ZS5hY2NlcHQobmV3IFRyYWNlRHluYW1pY1ZhbHVlVmlzaXRvcihub2RlKSk7XG59XG5cbmNsYXNzIFRyYWNlRHluYW1pY1ZhbHVlVmlzaXRvciBpbXBsZW1lbnRzIER5bmFtaWNWYWx1ZVZpc2l0b3I8dHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdPiB7XG4gIHByaXZhdGUgY3VycmVudENvbnRhaW5lck5vZGU6IHRzLk5vZGV8bnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiB0cy5Ob2RlKSB7fVxuXG4gIHZpc2l0RHluYW1pY0lucHV0KHZhbHVlOiBEeW5hbWljVmFsdWU8RHluYW1pY1ZhbHVlPik6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gICAgY29uc3QgdHJhY2UgPSB2YWx1ZS5yZWFzb24uYWNjZXB0KHRoaXMpO1xuICAgIGlmICh0aGlzLnNob3VsZFRyYWNlKHZhbHVlLm5vZGUpKSB7XG4gICAgICBjb25zdCBpbmZvID1cbiAgICAgICAgICBtYWtlUmVsYXRlZEluZm9ybWF0aW9uKHZhbHVlLm5vZGUsICdVbmFibGUgdG8gZXZhbHVhdGUgdGhpcyBleHByZXNzaW9uIHN0YXRpY2FsbHkuJyk7XG4gICAgICB0cmFjZS51bnNoaWZ0KGluZm8pO1xuICAgIH1cbiAgICByZXR1cm4gdHJhY2U7XG4gIH1cblxuICB2aXNpdER5bmFtaWNTdHJpbmcodmFsdWU6IER5bmFtaWNWYWx1ZSk6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gICAgcmV0dXJuIFttYWtlUmVsYXRlZEluZm9ybWF0aW9uKFxuICAgICAgICB2YWx1ZS5ub2RlLCAnQSBzdHJpbmcgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWluZWQgc3RhdGljYWxseS4nKV07XG4gIH1cblxuICB2aXNpdEV4dGVybmFsUmVmZXJlbmNlKHZhbHVlOiBEeW5hbWljVmFsdWU8UmVmZXJlbmNlPHRzLkRlY2xhcmF0aW9uPj4pOlxuICAgICAgdHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdIHtcbiAgICBjb25zdCBuYW1lID0gdmFsdWUucmVhc29uLmRlYnVnTmFtZTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IG5hbWUgIT09IG51bGwgPyBgJyR7bmFtZX0nYCA6ICdhbiBhbm9ueW1vdXMgZGVjbGFyYXRpb24nO1xuICAgIHJldHVybiBbbWFrZVJlbGF0ZWRJbmZvcm1hdGlvbihcbiAgICAgICAgdmFsdWUubm9kZSxcbiAgICAgICAgYEEgdmFsdWUgZm9yICR7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbn0gY2Fubm90IGJlIGRldGVybWluZWQgc3RhdGljYWxseSwgYXMgaXQgaXMgYW4gZXh0ZXJuYWwgZGVjbGFyYXRpb24uYCldO1xuICB9XG5cbiAgdmlzaXRDb21wbGV4RnVuY3Rpb25DYWxsKHZhbHVlOiBEeW5hbWljVmFsdWU8RnVuY3Rpb25EZWZpbml0aW9uPik6XG4gICAgICB0cy5EaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uW10ge1xuICAgIHJldHVybiBbXG4gICAgICBtYWtlUmVsYXRlZEluZm9ybWF0aW9uKFxuICAgICAgICAgIHZhbHVlLm5vZGUsXG4gICAgICAgICAgJ1VuYWJsZSB0byBldmFsdWF0ZSBmdW5jdGlvbiBjYWxsIG9mIGNvbXBsZXggZnVuY3Rpb24uIEEgZnVuY3Rpb24gbXVzdCBoYXZlIGV4YWN0bHkgb25lIHJldHVybiBzdGF0ZW1lbnQuJyksXG4gICAgICBtYWtlUmVsYXRlZEluZm9ybWF0aW9uKHZhbHVlLnJlYXNvbi5ub2RlLCAnRnVuY3Rpb24gaXMgZGVjbGFyZWQgaGVyZS4nKVxuICAgIF07XG4gIH1cblxuICB2aXNpdEludmFsaWRFeHByZXNzaW9uVHlwZSh2YWx1ZTogRHluYW1pY1ZhbHVlKTogdHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdIHtcbiAgICByZXR1cm4gW21ha2VSZWxhdGVkSW5mb3JtYXRpb24odmFsdWUubm9kZSwgJ1VuYWJsZSB0byBldmFsdWF0ZSBhbiBpbnZhbGlkIGV4cHJlc3Npb24uJyldO1xuICB9XG5cbiAgdmlzaXRVbmtub3duKHZhbHVlOiBEeW5hbWljVmFsdWUpOiB0cy5EaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uW10ge1xuICAgIHJldHVybiBbbWFrZVJlbGF0ZWRJbmZvcm1hdGlvbih2YWx1ZS5ub2RlLCAnVW5hYmxlIHRvIGV2YWx1YXRlIHN0YXRpY2FsbHkuJyldO1xuICB9XG5cbiAgdmlzaXRVbmtub3duSWRlbnRpZmllcih2YWx1ZTogRHluYW1pY1ZhbHVlKTogdHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdIHtcbiAgICByZXR1cm4gW21ha2VSZWxhdGVkSW5mb3JtYXRpb24odmFsdWUubm9kZSwgJ1Vua25vd24gcmVmZXJlbmNlLicpXTtcbiAgfVxuXG4gIHZpc2l0VW5zdXBwb3J0ZWRTeW50YXgodmFsdWU6IER5bmFtaWNWYWx1ZSk6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gICAgcmV0dXJuIFttYWtlUmVsYXRlZEluZm9ybWF0aW9uKHZhbHVlLm5vZGUsICdUaGlzIHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLicpXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGR5bmFtaWMgdmFsdWUgcmVwb3J0ZWQgZm9yIHRoZSBub2RlIHNob3VsZCBiZSB0cmFjZWQsIGkuZS4gaWYgaXQgaXMgbm90XG4gICAqIHBhcnQgb2YgdGhlIGNvbnRhaW5lciBmb3Igd2hpY2ggdGhlIG1vc3QgcmVjZW50IHRyYWNlIHdhcyBjcmVhdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRUcmFjZShub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiB7XG4gICAgaWYgKG5vZGUgPT09IHRoaXMubm9kZSkge1xuICAgICAgLy8gRG8gbm90IGluY2x1ZGUgYSBkeW5hbWljIHZhbHVlIGZvciB0aGUgb3JpZ2luIG5vZGUsIGFzIHRoZSBtYWluIGRpYWdub3N0aWMgaXMgYWxyZWFkeVxuICAgICAgLy8gcmVwb3J0ZWQgb24gdGhhdCBub2RlLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGdldENvbnRhaW5lck5vZGUobm9kZSk7XG4gICAgaWYgKGNvbnRhaW5lciA9PT0gdGhpcy5jdXJyZW50Q29udGFpbmVyTm9kZSkge1xuICAgICAgLy8gVGhlIG5vZGUgaXMgcGFydCBvZiB0aGUgc2FtZSBjb250YWluZXIgYXMgdGhlIHByZXZpb3VzIHRyYWNlIGVudHJ5LCBzbyB0aGlzIGR5bmFtaWMgdmFsdWVcbiAgICAgIC8vIHNob3VsZCBub3QgYmVjb21lIHBhcnQgb2YgdGhlIHRyYWNlLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudENvbnRhaW5lck5vZGUgPSBjb250YWluZXI7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBjbG9zZXN0IHBhcmVudCBub2RlIHRoYXQgaXMgdG8gYmUgY29uc2lkZXJlZCBhcyBjb250YWluZXIsIHdoaWNoIGlzIHVzZWQgdG8gcmVkdWNlXG4gKiB0aGUgZ3JhbnVsYXJpdHkgb2YgdHJhY2luZyB0aGUgZHluYW1pYyB2YWx1ZXMgdG8gYSBzaW5nbGUgZW50cnkgcGVyIGNvbnRhaW5lci4gQ3VycmVudGx5LCBmdWxsXG4gKiBzdGF0ZW1lbnRzIGFuZCBkZXN0cnVjdHVyaW5nIHBhdHRlcm5zIGFyZSBjb25zaWRlcmVkIGFzIGNvbnRhaW5lci5cbiAqL1xuZnVuY3Rpb24gZ2V0Q29udGFpbmVyTm9kZShub2RlOiB0cy5Ob2RlKTogdHMuTm9kZSB7XG4gIGxldCBjdXJyZW50Tm9kZTogdHMuTm9kZXx1bmRlZmluZWQgPSBub2RlO1xuICB3aGlsZSAoY3VycmVudE5vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHN3aXRjaCAoY3VycmVudE5vZGUua2luZCkge1xuICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLkV4cHJlc3Npb25TdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuVmFyaWFibGVTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuUmV0dXJuU3RhdGVtZW50OlxuICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLklmU3RhdGVtZW50OlxuICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLlN3aXRjaFN0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5Eb1N0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5XaGlsZVN0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5Gb3JTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuRm9ySW5TdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuRm9yT2ZTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuQ29udGludWVTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuQnJlYWtTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuVGhyb3dTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuT2JqZWN0QmluZGluZ1BhdHRlcm46XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuQXJyYXlCaW5kaW5nUGF0dGVybjpcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH1cblxuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50O1xuICB9XG4gIHJldHVybiBub2RlLmdldFNvdXJjZUZpbGUoKTtcbn1cbiJdfQ==
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3BhcnRpYWxfZXZhbHVhdG9yL3NyYy9kaWFnbm9zdGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBRUgsK0JBQWlDO0lBRWpDLDJFQUF5RDtJQUN6RCxtRUFBd0M7SUFFeEMseUZBQTREO0lBQzVELHVGQUEyRTtJQUUzRTs7Ozs7T0FLRztJQUNILFNBQWdCLG9CQUFvQixDQUFDLEtBQW9CLEVBQUUsUUFBb0I7O1FBQXBCLHlCQUFBLEVBQUEsWUFBb0I7UUFDN0UsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2xCLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7YUFBTSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDOUIsT0FBTyxXQUFXLENBQUM7U0FDcEI7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQy9GLE9BQU8sT0FBTyxLQUFLLENBQUM7U0FDckI7YUFBTSxJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUU7WUFDL0IsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFO2dCQUNsQixPQUFPLFFBQVEsQ0FBQzthQUNqQjtZQUNELElBQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUMsRUFBUTtvQkFBUixLQUFBLHFCQUFRLEVBQVAsR0FBRyxRQUFBLEVBQUUsQ0FBQyxRQUFBO2dCQUN0RCxPQUFVLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBSyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsQ0FBRyxDQUFDO1lB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QUFpQixDQUFDO2dCQUNyQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO2dCQUNsQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO2dCQUNsQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3hDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUI7b0JBQ3BDLE9BQU8sV0FBVyxDQUFDO2FBQ3RCO1lBRUQsV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7U0FDbEM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge21ha2VSZWxhdGVkSW5mb3JtYXRpb259IGZyb20gJy4uLy4uL2RpYWdub3N0aWNzJztcbmltcG9ydCB7UmVmZXJlbmNlfSBmcm9tICcuLi8uLi9pbXBvcnRzJztcbmltcG9ydCB7RnVuY3Rpb25EZWZpbml0aW9ufSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcbmltcG9ydCB7RHluYW1pY1ZhbHVlLCBEeW5hbWljVmFsdWVWaXNpdG9yfSBmcm9tICcuL2R5bmFtaWMnO1xuaW1wb3J0IHtFbnVtVmFsdWUsIEtub3duRm4sIFJlc29sdmVkTW9kdWxlLCBSZXNvbHZlZFZhbHVlfSBmcm9tICcuL3Jlc3VsdCc7XG5cbi8qKlxuICogRGVyaXZlcyBhIHR5cGUgcmVwcmVzZW50YXRpb24gZnJvbSBhIHJlc29sdmVkIHZhbHVlIHRvIGJlIHJlcG9ydGVkIGluIGEgZGlhZ25vc3RpYy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHJlc29sdmVkIHZhbHVlIGZvciB3aGljaCBhIHR5cGUgcmVwcmVzZW50YXRpb24gc2hvdWxkIGJlIGRlcml2ZWQuXG4gKiBAcGFyYW0gbWF4RGVwdGggVGhlIG1heGltdW0gbmVzdGluZyBkZXB0aCBvZiBvYmplY3RzIGFuZCBhcnJheXMsIGRlZmF1bHRzIHRvIDEgbGV2ZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNjcmliZVJlc29sdmVkVHlwZSh2YWx1ZTogUmVzb2x2ZWRWYWx1ZSwgbWF4RGVwdGg6IG51bWJlciA9IDEpOiBzdHJpbmcge1xuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gJ251bGwnO1xuICB9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZTtcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgIGlmIChtYXhEZXB0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICdvYmplY3QnO1xuICAgIH1cbiAgICBjb25zdCBlbnRyaWVzID0gQXJyYXkuZnJvbSh2YWx1ZS5lbnRyaWVzKCkpLm1hcCgoW2tleSwgdl0pID0+IHtcbiAgICAgIHJldHVybiBgJHtxdW90ZUtleShrZXkpfTogJHtkZXNjcmliZVJlc29sdmVkVHlwZSh2LCBtYXhEZXB0aCAtIDEpfWA7XG4gICAgfSk7XG4gICAgcmV0dXJuIGVudHJpZXMubGVuZ3RoID4gMCA/IGB7ICR7ZW50cmllcy5qb2luKCc7ICcpfSB9YCA6ICd7fSc7XG4gIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZXNvbHZlZE1vZHVsZSkge1xuICAgIHJldHVybiAnKG1vZHVsZSknO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRW51bVZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmVudW1SZWYuZGVidWdOYW1lID8/ICcoYW5vbnltb3VzKSc7XG4gIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZWZlcmVuY2UpIHtcbiAgICByZXR1cm4gdmFsdWUuZGVidWdOYW1lID8/ICcoYW5vbnltb3VzKSc7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAobWF4RGVwdGggPT09IDApIHtcbiAgICAgIHJldHVybiAnQXJyYXknO1xuICAgIH1cbiAgICByZXR1cm4gYFske3ZhbHVlLm1hcCh2ID0+IGRlc2NyaWJlUmVzb2x2ZWRUeXBlKHYsIG1heERlcHRoIC0gMSkpLmpvaW4oJywgJyl9XWA7XG4gIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEeW5hbWljVmFsdWUpIHtcbiAgICByZXR1cm4gJyhub3Qgc3RhdGljYWxseSBhbmFseXphYmxlKSc7XG4gIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBLbm93bkZuKSB7XG4gICAgcmV0dXJuICdGdW5jdGlvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICd1bmtub3duJztcbiAgfVxufVxuXG5mdW5jdGlvbiBxdW90ZUtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICgvXlthLXowLTlfXSskL2kudGVzdChrZXkpKSB7XG4gICAgcmV0dXJuIGtleTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYCcke2tleS5yZXBsYWNlKC8nL2csICdcXFxcXFwnJyl9J2A7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHJlbGF0ZWQgaW5mb3JtYXRpb24gZGlhZ25vc3RpY3MgZm9yIGEgYER5bmFtaWNWYWx1ZWAgdGhhdCBkZXNjcmliZSB0aGUgdHJhY2VcbiAqIG9mIHdoeSBhbiBleHByZXNzaW9uIHdhcyBldmFsdWF0ZWQgYXMgZHluYW1pYy5cbiAqXG4gKiBAcGFyYW0gbm9kZSBUaGUgbm9kZSBmb3Igd2hpY2ggYSBgdHMuRGlhZ25vc3RpY2AgaXMgdG8gYmUgY3JlYXRlZCB3aXRoIHRoZSB0cmFjZS5cbiAqIEBwYXJhbSB2YWx1ZSBUaGUgZHluYW1pYyB2YWx1ZSBmb3Igd2hpY2ggYSB0cmFjZSBzaG91bGQgYmUgY3JlYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlRHluYW1pY1ZhbHVlKFxuICAgIG5vZGU6IHRzLk5vZGUsIHZhbHVlOiBEeW5hbWljVmFsdWUpOiB0cy5EaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uW10ge1xuICByZXR1cm4gdmFsdWUuYWNjZXB0KG5ldyBUcmFjZUR5bmFtaWNWYWx1ZVZpc2l0b3Iobm9kZSkpO1xufVxuXG5jbGFzcyBUcmFjZUR5bmFtaWNWYWx1ZVZpc2l0b3IgaW1wbGVtZW50cyBEeW5hbWljVmFsdWVWaXNpdG9yPHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXT4ge1xuICBwcml2YXRlIGN1cnJlbnRDb250YWluZXJOb2RlOiB0cy5Ob2RlfG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogdHMuTm9kZSkge31cblxuICB2aXNpdER5bmFtaWNJbnB1dCh2YWx1ZTogRHluYW1pY1ZhbHVlPER5bmFtaWNWYWx1ZT4pOiB0cy5EaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uW10ge1xuICAgIGNvbnN0IHRyYWNlID0gdmFsdWUucmVhc29uLmFjY2VwdCh0aGlzKTtcbiAgICBpZiAodGhpcy5zaG91bGRUcmFjZSh2YWx1ZS5ub2RlKSkge1xuICAgICAgY29uc3QgaW5mbyA9XG4gICAgICAgICAgbWFrZVJlbGF0ZWRJbmZvcm1hdGlvbih2YWx1ZS5ub2RlLCAnVW5hYmxlIHRvIGV2YWx1YXRlIHRoaXMgZXhwcmVzc2lvbiBzdGF0aWNhbGx5LicpO1xuICAgICAgdHJhY2UudW5zaGlmdChpbmZvKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYWNlO1xuICB9XG5cbiAgdmlzaXREeW5hbWljU3RyaW5nKHZhbHVlOiBEeW5hbWljVmFsdWUpOiB0cy5EaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uW10ge1xuICAgIHJldHVybiBbbWFrZVJlbGF0ZWRJbmZvcm1hdGlvbihcbiAgICAgICAgdmFsdWUubm9kZSwgJ0Egc3RyaW5nIHZhbHVlIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHkuJyldO1xuICB9XG5cbiAgdmlzaXRFeHRlcm5hbFJlZmVyZW5jZSh2YWx1ZTogRHluYW1pY1ZhbHVlPFJlZmVyZW5jZTx0cy5EZWNsYXJhdGlvbj4+KTpcbiAgICAgIHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gICAgY29uc3QgbmFtZSA9IHZhbHVlLnJlYXNvbi5kZWJ1Z05hbWU7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBuYW1lICE9PSBudWxsID8gYCcke25hbWV9J2AgOiAnYW4gYW5vbnltb3VzIGRlY2xhcmF0aW9uJztcbiAgICByZXR1cm4gW21ha2VSZWxhdGVkSW5mb3JtYXRpb24oXG4gICAgICAgIHZhbHVlLm5vZGUsXG4gICAgICAgIGBBIHZhbHVlIGZvciAke1xuICAgICAgICAgICAgZGVzY3JpcHRpb259IGNhbm5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHksIGFzIGl0IGlzIGFuIGV4dGVybmFsIGRlY2xhcmF0aW9uLmApXTtcbiAgfVxuXG4gIHZpc2l0Q29tcGxleEZ1bmN0aW9uQ2FsbCh2YWx1ZTogRHluYW1pY1ZhbHVlPEZ1bmN0aW9uRGVmaW5pdGlvbj4pOlxuICAgICAgdHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgbWFrZVJlbGF0ZWRJbmZvcm1hdGlvbihcbiAgICAgICAgICB2YWx1ZS5ub2RlLFxuICAgICAgICAgICdVbmFibGUgdG8gZXZhbHVhdGUgZnVuY3Rpb24gY2FsbCBvZiBjb21wbGV4IGZ1bmN0aW9uLiBBIGZ1bmN0aW9uIG11c3QgaGF2ZSBleGFjdGx5IG9uZSByZXR1cm4gc3RhdGVtZW50LicpLFxuICAgICAgbWFrZVJlbGF0ZWRJbmZvcm1hdGlvbih2YWx1ZS5yZWFzb24ubm9kZSwgJ0Z1bmN0aW9uIGlzIGRlY2xhcmVkIGhlcmUuJylcbiAgICBdO1xuICB9XG5cbiAgdmlzaXRJbnZhbGlkRXhwcmVzc2lvblR5cGUodmFsdWU6IER5bmFtaWNWYWx1ZSk6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gICAgcmV0dXJuIFttYWtlUmVsYXRlZEluZm9ybWF0aW9uKHZhbHVlLm5vZGUsICdVbmFibGUgdG8gZXZhbHVhdGUgYW4gaW52YWxpZCBleHByZXNzaW9uLicpXTtcbiAgfVxuXG4gIHZpc2l0VW5rbm93bih2YWx1ZTogRHluYW1pY1ZhbHVlKTogdHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdIHtcbiAgICByZXR1cm4gW21ha2VSZWxhdGVkSW5mb3JtYXRpb24odmFsdWUubm9kZSwgJ1VuYWJsZSB0byBldmFsdWF0ZSBzdGF0aWNhbGx5LicpXTtcbiAgfVxuXG4gIHZpc2l0VW5rbm93bklkZW50aWZpZXIodmFsdWU6IER5bmFtaWNWYWx1ZSk6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gICAgcmV0dXJuIFttYWtlUmVsYXRlZEluZm9ybWF0aW9uKHZhbHVlLm5vZGUsICdVbmtub3duIHJlZmVyZW5jZS4nKV07XG4gIH1cblxuICB2aXNpdER5bmFtaWNUeXBlKHZhbHVlOiBEeW5hbWljVmFsdWUpOiB0cy5EaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uW10ge1xuICAgIHJldHVybiBbbWFrZVJlbGF0ZWRJbmZvcm1hdGlvbih2YWx1ZS5ub2RlLCAnRHluYW1pYyB0eXBlLicpXTtcbiAgfVxuXG4gIHZpc2l0VW5zdXBwb3J0ZWRTeW50YXgodmFsdWU6IER5bmFtaWNWYWx1ZSk6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gICAgcmV0dXJuIFttYWtlUmVsYXRlZEluZm9ybWF0aW9uKHZhbHVlLm5vZGUsICdUaGlzIHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLicpXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGR5bmFtaWMgdmFsdWUgcmVwb3J0ZWQgZm9yIHRoZSBub2RlIHNob3VsZCBiZSB0cmFjZWQsIGkuZS4gaWYgaXQgaXMgbm90XG4gICAqIHBhcnQgb2YgdGhlIGNvbnRhaW5lciBmb3Igd2hpY2ggdGhlIG1vc3QgcmVjZW50IHRyYWNlIHdhcyBjcmVhdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRUcmFjZShub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiB7XG4gICAgaWYgKG5vZGUgPT09IHRoaXMubm9kZSkge1xuICAgICAgLy8gRG8gbm90IGluY2x1ZGUgYSBkeW5hbWljIHZhbHVlIGZvciB0aGUgb3JpZ2luIG5vZGUsIGFzIHRoZSBtYWluIGRpYWdub3N0aWMgaXMgYWxyZWFkeVxuICAgICAgLy8gcmVwb3J0ZWQgb24gdGhhdCBub2RlLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGdldENvbnRhaW5lck5vZGUobm9kZSk7XG4gICAgaWYgKGNvbnRhaW5lciA9PT0gdGhpcy5jdXJyZW50Q29udGFpbmVyTm9kZSkge1xuICAgICAgLy8gVGhlIG5vZGUgaXMgcGFydCBvZiB0aGUgc2FtZSBjb250YWluZXIgYXMgdGhlIHByZXZpb3VzIHRyYWNlIGVudHJ5LCBzbyB0aGlzIGR5bmFtaWMgdmFsdWVcbiAgICAgIC8vIHNob3VsZCBub3QgYmVjb21lIHBhcnQgb2YgdGhlIHRyYWNlLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudENvbnRhaW5lck5vZGUgPSBjb250YWluZXI7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBjbG9zZXN0IHBhcmVudCBub2RlIHRoYXQgaXMgdG8gYmUgY29uc2lkZXJlZCBhcyBjb250YWluZXIsIHdoaWNoIGlzIHVzZWQgdG8gcmVkdWNlXG4gKiB0aGUgZ3JhbnVsYXJpdHkgb2YgdHJhY2luZyB0aGUgZHluYW1pYyB2YWx1ZXMgdG8gYSBzaW5nbGUgZW50cnkgcGVyIGNvbnRhaW5lci4gQ3VycmVudGx5LCBmdWxsXG4gKiBzdGF0ZW1lbnRzIGFuZCBkZXN0cnVjdHVyaW5nIHBhdHRlcm5zIGFyZSBjb25zaWRlcmVkIGFzIGNvbnRhaW5lci5cbiAqL1xuZnVuY3Rpb24gZ2V0Q29udGFpbmVyTm9kZShub2RlOiB0cy5Ob2RlKTogdHMuTm9kZSB7XG4gIGxldCBjdXJyZW50Tm9kZTogdHMuTm9kZXx1bmRlZmluZWQgPSBub2RlO1xuICB3aGlsZSAoY3VycmVudE5vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHN3aXRjaCAoY3VycmVudE5vZGUua2luZCkge1xuICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLkV4cHJlc3Npb25TdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuVmFyaWFibGVTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuUmV0dXJuU3RhdGVtZW50OlxuICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLklmU3RhdGVtZW50OlxuICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLlN3aXRjaFN0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5Eb1N0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5XaGlsZVN0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5Gb3JTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuRm9ySW5TdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuRm9yT2ZTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuQ29udGludWVTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuQnJlYWtTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuVGhyb3dTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuT2JqZWN0QmluZGluZ1BhdHRlcm46XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuQXJyYXlCaW5kaW5nUGF0dGVybjpcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH1cblxuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50O1xuICB9XG4gIHJldHVybiBub2RlLmdldFNvdXJjZUZpbGUoKTtcbn1cbiJdfQ==
|
|
@@ -52,10 +52,25 @@ export declare const enum DynamicValueReason {
|
|
|
52
52
|
* A function call could not be evaluated as the function's body is not a single return statement.
|
|
53
53
|
*/
|
|
54
54
|
COMPLEX_FUNCTION_CALL = 6,
|
|
55
|
+
/**
|
|
56
|
+
* A value that could not be determined because it contains type information that cannot be
|
|
57
|
+
* statically evaluated. This happens when producing a value from type information, but the value
|
|
58
|
+
* of the given type cannot be determined statically.
|
|
59
|
+
*
|
|
60
|
+
* E.g. evaluating a tuple.
|
|
61
|
+
*
|
|
62
|
+
* `declare const foo: [string];`
|
|
63
|
+
*
|
|
64
|
+
* Evaluating `foo` gives a DynamicValue wrapped in an array with a reason of DYNAMIC_TYPE. This
|
|
65
|
+
* is because the static evaluator has a `string` type for the first element of this tuple, and
|
|
66
|
+
* the value of that string cannot be determined statically. The type `string` permits it to be
|
|
67
|
+
* 'foo', 'bar' or any arbitrary string, so we evaluate it to a DynamicValue.
|
|
68
|
+
*/
|
|
69
|
+
DYNAMIC_TYPE = 7,
|
|
55
70
|
/**
|
|
56
71
|
* A value could not be determined statically for any reason other the above.
|
|
57
72
|
*/
|
|
58
|
-
UNKNOWN =
|
|
73
|
+
UNKNOWN = 8
|
|
59
74
|
}
|
|
60
75
|
/**
|
|
61
76
|
* Represents a value which cannot be determined statically.
|
|
@@ -72,6 +87,7 @@ export declare class DynamicValue<R = unknown> {
|
|
|
72
87
|
static fromUnknownIdentifier(node: ts.Identifier): DynamicValue;
|
|
73
88
|
static fromInvalidExpressionType(node: ts.Node, value: unknown): DynamicValue<unknown>;
|
|
74
89
|
static fromComplexFunctionCall(node: ts.Node, fn: FunctionDefinition): DynamicValue<FunctionDefinition>;
|
|
90
|
+
static fromDynamicType(node: ts.TypeNode): DynamicValue;
|
|
75
91
|
static fromUnknown(node: ts.Node): DynamicValue;
|
|
76
92
|
isFromDynamicInput(this: DynamicValue<R>): this is DynamicValue<DynamicValue>;
|
|
77
93
|
isFromDynamicString(this: DynamicValue<R>): this is DynamicValue;
|
|
@@ -80,6 +96,7 @@ export declare class DynamicValue<R = unknown> {
|
|
|
80
96
|
isFromUnknownIdentifier(this: DynamicValue<R>): this is DynamicValue;
|
|
81
97
|
isFromInvalidExpressionType(this: DynamicValue<R>): this is DynamicValue<unknown>;
|
|
82
98
|
isFromComplexFunctionCall(this: DynamicValue<R>): this is DynamicValue<FunctionDefinition>;
|
|
99
|
+
isFromDynamicType(this: DynamicValue<R>): this is DynamicValue;
|
|
83
100
|
isFromUnknown(this: DynamicValue<R>): this is DynamicValue;
|
|
84
101
|
accept<R>(visitor: DynamicValueVisitor<R>): R;
|
|
85
102
|
}
|
|
@@ -91,5 +108,6 @@ export interface DynamicValueVisitor<R> {
|
|
|
91
108
|
visitUnknownIdentifier(value: DynamicValue): R;
|
|
92
109
|
visitInvalidExpressionType(value: DynamicValue): R;
|
|
93
110
|
visitComplexFunctionCall(value: DynamicValue<FunctionDefinition>): R;
|
|
111
|
+
visitDynamicType(value: DynamicValue): R;
|
|
94
112
|
visitUnknown(value: DynamicValue): R;
|
|
95
113
|
}
|
|
@@ -47,8 +47,11 @@
|
|
|
47
47
|
DynamicValue.fromComplexFunctionCall = function (node, fn) {
|
|
48
48
|
return new DynamicValue(node, fn, 6 /* COMPLEX_FUNCTION_CALL */);
|
|
49
49
|
};
|
|
50
|
+
DynamicValue.fromDynamicType = function (node) {
|
|
51
|
+
return new DynamicValue(node, undefined, 7 /* DYNAMIC_TYPE */);
|
|
52
|
+
};
|
|
50
53
|
DynamicValue.fromUnknown = function (node) {
|
|
51
|
-
return new DynamicValue(node, undefined,
|
|
54
|
+
return new DynamicValue(node, undefined, 8 /* UNKNOWN */);
|
|
52
55
|
};
|
|
53
56
|
DynamicValue.prototype.isFromDynamicInput = function () {
|
|
54
57
|
return this.code === 0 /* DYNAMIC_INPUT */;
|
|
@@ -71,8 +74,11 @@
|
|
|
71
74
|
DynamicValue.prototype.isFromComplexFunctionCall = function () {
|
|
72
75
|
return this.code === 6 /* COMPLEX_FUNCTION_CALL */;
|
|
73
76
|
};
|
|
77
|
+
DynamicValue.prototype.isFromDynamicType = function () {
|
|
78
|
+
return this.code === 7 /* DYNAMIC_TYPE */;
|
|
79
|
+
};
|
|
74
80
|
DynamicValue.prototype.isFromUnknown = function () {
|
|
75
|
-
return this.code ===
|
|
81
|
+
return this.code === 8 /* UNKNOWN */;
|
|
76
82
|
};
|
|
77
83
|
DynamicValue.prototype.accept = function (visitor) {
|
|
78
84
|
switch (this.code) {
|
|
@@ -90,7 +96,9 @@
|
|
|
90
96
|
return visitor.visitInvalidExpressionType(this);
|
|
91
97
|
case 6 /* COMPLEX_FUNCTION_CALL */:
|
|
92
98
|
return visitor.visitComplexFunctionCall(this);
|
|
93
|
-
case 7 /*
|
|
99
|
+
case 7 /* DYNAMIC_TYPE */:
|
|
100
|
+
return visitor.visitDynamicType(this);
|
|
101
|
+
case 8 /* UNKNOWN */:
|
|
94
102
|
return visitor.visitUnknown(this);
|
|
95
103
|
}
|
|
96
104
|
};
|
|
@@ -98,4 +106,4 @@
|
|
|
98
106
|
}());
|
|
99
107
|
exports.DynamicValue = DynamicValue;
|
|
100
108
|
});
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvcGFydGlhbF9ldmFsdWF0b3Ivc3JjL2R5bmFtaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBK0RIOztPQUVHO0lBQ0g7UUFDRSxzQkFDYSxJQUFhLEVBQVcsTUFBUyxFQUFVLElBQXdCO1lBQW5FLFNBQUksR0FBSixJQUFJLENBQVM7WUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFHO1lBQVUsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUFBRyxDQUFDO1FBRTdFLDZCQUFnQixHQUF2QixVQUF3QixJQUFhLEVBQUUsS0FBbUI7WUFDeEQsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyx3QkFBbUMsQ0FBQztRQUN6RSxDQUFDO1FBRU0sOEJBQWlCLEdBQXhCLFVBQXlCLElBQWE7WUFDcEMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyx5QkFBb0MsQ0FBQztRQUM5RSxDQUFDO1FBRU0sa0NBQXFCLEdBQTVCLFVBQTZCLElBQWEsRUFBRSxHQUE4QjtZQUV4RSxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLDZCQUF3QyxDQUFDO1FBQzVFLENBQUM7UUFFTSxrQ0FBcUIsR0FBNUIsVUFBNkIsSUFBYTtZQUN4QyxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLDZCQUF3QyxDQUFDO1FBQ2xGLENBQUM7UUFFTSxrQ0FBcUIsR0FBNUIsVUFBNkIsSUFBbUI7WUFDOUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyw2QkFBd0MsQ0FBQztRQUNsRixDQUFDO1FBRU0sc0NBQXlCLEdBQWhDLFVBQWlDLElBQWEsRUFBRSxLQUFjO1lBQzVELE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssa0NBQTZDLENBQUM7UUFDbkYsQ0FBQztRQUVNLG9DQUF1QixHQUE5QixVQUErQixJQUFhLEVBQUUsRUFBc0I7WUFFbEUsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxnQ0FBMkMsQ0FBQztRQUM5RSxDQUFDO1FBRU0sd0JBQVcsR0FBbEIsVUFBbUIsSUFBYTtZQUM5QixPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLGtCQUE2QixDQUFDO1FBQ3ZFLENBQUM7UUFFRCx5Q0FBa0IsR0FBbEI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLDBCQUFxQyxDQUFDO1FBQ3hELENBQUM7UUFFRCwwQ0FBbUIsR0FBbkI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLDJCQUFzQyxDQUFDO1FBQ3pELENBQUM7UUFFRCw4Q0FBdUIsR0FBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLCtCQUEwQyxDQUFDO1FBQzdELENBQUM7UUFFRCw4Q0FBdUIsR0FBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLCtCQUEwQyxDQUFDO1FBQzdELENBQUM7UUFFRCw4Q0FBdUIsR0FBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLCtCQUEwQyxDQUFDO1FBQzdELENBQUM7UUFFRCxrREFBMkIsR0FBM0I7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLG9DQUErQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxnREFBeUIsR0FBekI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLGtDQUE2QyxDQUFDO1FBQ2hFLENBQUM7UUFFRCxvQ0FBYSxHQUFiO1lBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxvQkFBK0IsQ0FBQztRQUNsRCxDQUFDO1FBRUQsNkJBQU0sR0FBTixVQUFVLE9BQStCO1lBQ3ZDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDakI7b0JBQ0UsT0FBTyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBNkMsQ0FBQyxDQUFDO2dCQUNsRjtvQkFDRSxPQUFPLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUM7b0JBQ0UsT0FBTyxPQUFPLENBQUMsc0JBQXNCLENBQ2pDLElBQTBELENBQUMsQ0FBQztnQkFDbEU7b0JBQ0UsT0FBTyxPQUFPLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlDO29CQUNFLE9BQU8sT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QztvQkFDRSxPQUFPLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEQ7b0JBQ0UsT0FBTyxPQUFPLENBQUMsd0JBQXdCLENBQ25DLElBQW1ELENBQUMsQ0FBQztnQkFDM0Q7b0JBQ0UsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQztRQUNILG1CQUFDO0lBQUQsQ0FBQyxBQTVGRCxJQTRGQztJQTVGWSxvQ0FBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtSZWZlcmVuY2V9IGZyb20gJy4uLy4uL2ltcG9ydHMnO1xuaW1wb3J0IHtGdW5jdGlvbkRlZmluaXRpb259IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuXG4vKipcbiAqIFRoZSByZWFzb24gd2h5IGEgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQgc3RhdGljYWxseS5cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gRHluYW1pY1ZhbHVlUmVhc29uIHtcbiAgLyoqXG4gICAqIEEgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWluZWQgc3RhdGljYWxseSwgYmVjYXVzZSBpdCBjb250YWlucyBhIHRlcm0gdGhhdCBjb3VsZCBub3QgYmVcbiAgICogZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LlxuICAgKiAoRS5nLiBhIHByb3BlcnR5IGFzc2lnbm1lbnQgb3IgY2FsbCBleHByZXNzaW9uIHdoZXJlIHRoZSBsaHMgaXMgYSBgRHluYW1pY1ZhbHVlYCwgYSB0ZW1wbGF0ZVxuICAgKiBsaXRlcmFsIHdpdGggYSBkeW5hbWljIGV4cHJlc3Npb24sIGFuIG9iamVjdCBsaXRlcmFsIHdpdGggYSBzcHJlYWQgYXNzaWdubWVudCB3aGljaCBjb3VsZCBub3RcbiAgICogYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LCBldGMuKVxuICAgKi9cbiAgRFlOQU1JQ19JTlBVVCxcblxuICAvKipcbiAgICogQSBzdHJpbmcgY291bGQgbm90IGJlIHN0YXRpY2FsbHkgZXZhbHVhdGVkLlxuICAgKiAoRS5nLiBhIGR5bmFtaWNhbGx5IGNvbnN0cnVjdGVkIG9iamVjdCBwcm9wZXJ0eSBuYW1lIG9yIGEgdGVtcGxhdGUgbGl0ZXJhbCBleHByZXNzaW9uIHRoYXRcbiAgICogY291bGQgbm90IGJlIHN0YXRpY2FsbHkgcmVzb2x2ZWQgdG8gYSBwcmltaXRpdmUgdmFsdWUuKVxuICAgKi9cbiAgRFlOQU1JQ19TVFJJTkcsXG5cbiAgLyoqXG4gICAqIEFuIGV4dGVybmFsIHJlZmVyZW5jZSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgdG8gYSB2YWx1ZSB3aGljaCBjYW4gYmUgZXZhbHVhdGVkLlxuICAgKiBGb3IgZXhhbXBsZSBhIGNhbGwgZXhwcmVzc2lvbiBmb3IgYSBmdW5jdGlvbiBkZWNsYXJlZCBpbiBgLmQudHNgLCBvciBhY2Nlc3NpbmcgbmF0aXZlIGdsb2JhbHNcbiAgICogc3VjaCBhcyBgd2luZG93YC5cbiAgICovXG4gIEVYVEVSTkFMX1JFRkVSRU5DRSxcblxuICAvKipcbiAgICogU3ludGF4IHRoYXQgYFN0YXRpY0ludGVycHJldGVyYCBkb2Vzbid0IGtub3cgaG93IHRvIGV2YWx1YXRlLCBmb3IgZXhhbXBsZSBhIHR5cGUgb2ZcbiAgICogYHRzLkV4cHJlc3Npb25gIHRoYXQgaXMgbm90IHN1cHBvcnRlZC5cbiAgICovXG4gIFVOU1VQUE9SVEVEX1NZTlRBWCxcblxuICAvKipcbiAgICogQSBkZWNsYXJhdGlvbiBvZiBhIGB0cy5JZGVudGlmaWVyYCBjb3VsZCBub3QgYmUgZm91bmQuXG4gICAqL1xuICBVTktOT1dOX0lERU5USUZJRVIsXG5cbiAgLyoqXG4gICAqIEEgdmFsdWUgY291bGQgYmUgcmVzb2x2ZWQsIGJ1dCBpcyBub3QgYW4gYWNjZXB0YWJsZSB0eXBlIGZvciB0aGUgb3BlcmF0aW9uIGJlaW5nIHBlcmZvcm1lZC5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGF0dGVtcHRpbmcgdG8gY2FsbCBhIG5vbi1jYWxsYWJsZSBleHByZXNzaW9uLlxuICAgKi9cbiAgSU5WQUxJRF9FWFBSRVNTSU9OX1RZUEUsXG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gY2FsbCBjb3VsZCBub3QgYmUgZXZhbHVhdGVkIGFzIHRoZSBmdW5jdGlvbidzIGJvZHkgaXMgbm90IGEgc2luZ2xlIHJldHVybiBzdGF0ZW1lbnQuXG4gICAqL1xuICBDT01QTEVYX0ZVTkNUSU9OX0NBTEwsXG5cbiAgLyoqXG4gICAqIEEgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWluZWQgc3RhdGljYWxseSBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGUgYWJvdmUuXG4gICAqL1xuICBVTktOT1dOLFxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB2YWx1ZSB3aGljaCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LlxuICovXG5leHBvcnQgY2xhc3MgRHluYW1pY1ZhbHVlPFIgPSB1bmtub3duPiB7XG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgICByZWFkb25seSBub2RlOiB0cy5Ob2RlLCByZWFkb25seSByZWFzb246IFIsIHByaXZhdGUgY29kZTogRHluYW1pY1ZhbHVlUmVhc29uKSB7fVxuXG4gIHN0YXRpYyBmcm9tRHluYW1pY0lucHV0KG5vZGU6IHRzLk5vZGUsIGlucHV0OiBEeW5hbWljVmFsdWUpOiBEeW5hbWljVmFsdWU8RHluYW1pY1ZhbHVlPiB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWUobm9kZSwgaW5wdXQsIER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX0lOUFVUKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRHluYW1pY1N0cmluZyhub2RlOiB0cy5Ob2RlKTogRHluYW1pY1ZhbHVlIHtcbiAgICByZXR1cm4gbmV3IER5bmFtaWNWYWx1ZShub2RlLCB1bmRlZmluZWQsIER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX1NUUklORyk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUV4dGVybmFsUmVmZXJlbmNlKG5vZGU6IHRzLk5vZGUsIHJlZjogUmVmZXJlbmNlPHRzLkRlY2xhcmF0aW9uPik6XG4gICAgICBEeW5hbWljVmFsdWU8UmVmZXJlbmNlPHRzLkRlY2xhcmF0aW9uPj4ge1xuICAgIHJldHVybiBuZXcgRHluYW1pY1ZhbHVlKG5vZGUsIHJlZiwgRHluYW1pY1ZhbHVlUmVhc29uLkVYVEVSTkFMX1JFRkVSRU5DRSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVVuc3VwcG9ydGVkU3ludGF4KG5vZGU6IHRzLk5vZGUpOiBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiBuZXcgRHluYW1pY1ZhbHVlKG5vZGUsIHVuZGVmaW5lZCwgRHluYW1pY1ZhbHVlUmVhc29uLlVOU1VQUE9SVEVEX1NZTlRBWCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVVua25vd25JZGVudGlmaWVyKG5vZGU6IHRzLklkZW50aWZpZXIpOiBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiBuZXcgRHluYW1pY1ZhbHVlKG5vZGUsIHVuZGVmaW5lZCwgRHluYW1pY1ZhbHVlUmVhc29uLlVOS05PV05fSURFTlRJRklFUik7XG4gIH1cblxuICBzdGF0aWMgZnJvbUludmFsaWRFeHByZXNzaW9uVHlwZShub2RlOiB0cy5Ob2RlLCB2YWx1ZTogdW5rbm93bik6IER5bmFtaWNWYWx1ZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWUobm9kZSwgdmFsdWUsIER5bmFtaWNWYWx1ZVJlYXNvbi5JTlZBTElEX0VYUFJFU1NJT05fVFlQRSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNvbXBsZXhGdW5jdGlvbkNhbGwobm9kZTogdHMuTm9kZSwgZm46IEZ1bmN0aW9uRGVmaW5pdGlvbik6XG4gICAgICBEeW5hbWljVmFsdWU8RnVuY3Rpb25EZWZpbml0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWUobm9kZSwgZm4sIER5bmFtaWNWYWx1ZVJlYXNvbi5DT01QTEVYX0ZVTkNUSU9OX0NBTEwpO1xuICB9XG5cbiAgc3RhdGljIGZyb21Vbmtub3duKG5vZGU6IHRzLk5vZGUpOiBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiBuZXcgRHluYW1pY1ZhbHVlKG5vZGUsIHVuZGVmaW5lZCwgRHluYW1pY1ZhbHVlUmVhc29uLlVOS05PV04pO1xuICB9XG5cbiAgaXNGcm9tRHluYW1pY0lucHV0KHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlPER5bmFtaWNWYWx1ZT4ge1xuICAgIHJldHVybiB0aGlzLmNvZGUgPT09IER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX0lOUFVUO1xuICB9XG5cbiAgaXNGcm9tRHluYW1pY1N0cmluZyh0aGlzOiBEeW5hbWljVmFsdWU8Uj4pOiB0aGlzIGlzIER5bmFtaWNWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZSA9PT0gRHluYW1pY1ZhbHVlUmVhc29uLkRZTkFNSUNfU1RSSU5HO1xuICB9XG5cbiAgaXNGcm9tRXh0ZXJuYWxSZWZlcmVuY2UodGhpczogRHluYW1pY1ZhbHVlPFI+KTogdGhpcyBpcyBEeW5hbWljVmFsdWU8UmVmZXJlbmNlPHRzLkRlY2xhcmF0aW9uPj4ge1xuICAgIHJldHVybiB0aGlzLmNvZGUgPT09IER5bmFtaWNWYWx1ZVJlYXNvbi5FWFRFUk5BTF9SRUZFUkVOQ0U7XG4gIH1cblxuICBpc0Zyb21VbnN1cHBvcnRlZFN5bnRheCh0aGlzOiBEeW5hbWljVmFsdWU8Uj4pOiB0aGlzIGlzIER5bmFtaWNWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZSA9PT0gRHluYW1pY1ZhbHVlUmVhc29uLlVOU1VQUE9SVEVEX1NZTlRBWDtcbiAgfVxuXG4gIGlzRnJvbVVua25vd25JZGVudGlmaWVyKHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5jb2RlID09PSBEeW5hbWljVmFsdWVSZWFzb24uVU5LTk9XTl9JREVOVElGSUVSO1xuICB9XG5cbiAgaXNGcm9tSW52YWxpZEV4cHJlc3Npb25UeXBlKHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5jb2RlID09PSBEeW5hbWljVmFsdWVSZWFzb24uSU5WQUxJRF9FWFBSRVNTSU9OX1RZUEU7XG4gIH1cblxuICBpc0Zyb21Db21wbGV4RnVuY3Rpb25DYWxsKHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlPEZ1bmN0aW9uRGVmaW5pdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmNvZGUgPT09IER5bmFtaWNWYWx1ZVJlYXNvbi5DT01QTEVYX0ZVTkNUSU9OX0NBTEw7XG4gIH1cblxuICBpc0Zyb21Vbmtub3duKHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5jb2RlID09PSBEeW5hbWljVmFsdWVSZWFzb24uVU5LTk9XTjtcbiAgfVxuXG4gIGFjY2VwdDxSPih2aXNpdG9yOiBEeW5hbWljVmFsdWVWaXNpdG9yPFI+KTogUiB7XG4gICAgc3dpdGNoICh0aGlzLmNvZGUpIHtcbiAgICAgIGNhc2UgRHluYW1pY1ZhbHVlUmVhc29uLkRZTkFNSUNfSU5QVVQ6XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RHluYW1pY0lucHV0KHRoaXMgYXMgdW5rbm93biBhcyBEeW5hbWljVmFsdWU8RHluYW1pY1ZhbHVlPik7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX1NUUklORzpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREeW5hbWljU3RyaW5nKHRoaXMpO1xuICAgICAgY2FzZSBEeW5hbWljVmFsdWVSZWFzb24uRVhURVJOQUxfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEV4dGVybmFsUmVmZXJlbmNlKFxuICAgICAgICAgICAgdGhpcyBhcyB1bmtub3duIGFzIER5bmFtaWNWYWx1ZTxSZWZlcmVuY2U8dHMuRGVjbGFyYXRpb24+Pik7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5VTlNVUFBPUlRFRF9TWU5UQVg6XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VW5zdXBwb3J0ZWRTeW50YXgodGhpcyk7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5VTktOT1dOX0lERU5USUZJRVI6XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VW5rbm93bklkZW50aWZpZXIodGhpcyk7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5JTlZBTElEX0VYUFJFU1NJT05fVFlQRTpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRJbnZhbGlkRXhwcmVzc2lvblR5cGUodGhpcyk7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5DT01QTEVYX0ZVTkNUSU9OX0NBTEw6XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q29tcGxleEZ1bmN0aW9uQ2FsbChcbiAgICAgICAgICAgIHRoaXMgYXMgdW5rbm93biBhcyBEeW5hbWljVmFsdWU8RnVuY3Rpb25EZWZpbml0aW9uPik7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5VTktOT1dOOlxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFVua25vd24odGhpcyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY1ZhbHVlVmlzaXRvcjxSPiB7XG4gIHZpc2l0RHluYW1pY0lucHV0KHZhbHVlOiBEeW5hbWljVmFsdWU8RHluYW1pY1ZhbHVlPik6IFI7XG4gIHZpc2l0RHluYW1pY1N0cmluZyh2YWx1ZTogRHluYW1pY1ZhbHVlKTogUjtcbiAgdmlzaXRFeHRlcm5hbFJlZmVyZW5jZSh2YWx1ZTogRHluYW1pY1ZhbHVlPFJlZmVyZW5jZTx0cy5EZWNsYXJhdGlvbj4+KTogUjtcbiAgdmlzaXRVbnN1cHBvcnRlZFN5bnRheCh2YWx1ZTogRHluYW1pY1ZhbHVlKTogUjtcbiAgdmlzaXRVbmtub3duSWRlbnRpZmllcih2YWx1ZTogRHluYW1pY1ZhbHVlKTogUjtcbiAgdmlzaXRJbnZhbGlkRXhwcmVzc2lvblR5cGUodmFsdWU6IER5bmFtaWNWYWx1ZSk6IFI7XG4gIHZpc2l0Q29tcGxleEZ1bmN0aW9uQ2FsbCh2YWx1ZTogRHluYW1pY1ZhbHVlPEZ1bmN0aW9uRGVmaW5pdGlvbj4pOiBSO1xuICB2aXNpdFVua25vd24odmFsdWU6IER5bmFtaWNWYWx1ZSk6IFI7XG59XG4iXX0=
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvcGFydGlhbF9ldmFsdWF0b3Ivc3JjL2R5bmFtaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBK0VIOztPQUVHO0lBQ0g7UUFDRSxzQkFDYSxJQUFhLEVBQVcsTUFBUyxFQUFVLElBQXdCO1lBQW5FLFNBQUksR0FBSixJQUFJLENBQVM7WUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFHO1lBQVUsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUFBRyxDQUFDO1FBRTdFLDZCQUFnQixHQUF2QixVQUF3QixJQUFhLEVBQUUsS0FBbUI7WUFDeEQsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyx3QkFBbUMsQ0FBQztRQUN6RSxDQUFDO1FBRU0sOEJBQWlCLEdBQXhCLFVBQXlCLElBQWE7WUFDcEMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyx5QkFBb0MsQ0FBQztRQUM5RSxDQUFDO1FBRU0sa0NBQXFCLEdBQTVCLFVBQTZCLElBQWEsRUFBRSxHQUE4QjtZQUV4RSxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLDZCQUF3QyxDQUFDO1FBQzVFLENBQUM7UUFFTSxrQ0FBcUIsR0FBNUIsVUFBNkIsSUFBYTtZQUN4QyxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLDZCQUF3QyxDQUFDO1FBQ2xGLENBQUM7UUFFTSxrQ0FBcUIsR0FBNUIsVUFBNkIsSUFBbUI7WUFDOUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyw2QkFBd0MsQ0FBQztRQUNsRixDQUFDO1FBRU0sc0NBQXlCLEdBQWhDLFVBQWlDLElBQWEsRUFBRSxLQUFjO1lBQzVELE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssa0NBQTZDLENBQUM7UUFDbkYsQ0FBQztRQUVNLG9DQUF1QixHQUE5QixVQUErQixJQUFhLEVBQUUsRUFBc0I7WUFFbEUsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxnQ0FBMkMsQ0FBQztRQUM5RSxDQUFDO1FBRU0sNEJBQWUsR0FBdEIsVUFBdUIsSUFBaUI7WUFDdEMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyx1QkFBa0MsQ0FBQztRQUM1RSxDQUFDO1FBRU0sd0JBQVcsR0FBbEIsVUFBbUIsSUFBYTtZQUM5QixPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLGtCQUE2QixDQUFDO1FBQ3ZFLENBQUM7UUFFRCx5Q0FBa0IsR0FBbEI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLDBCQUFxQyxDQUFDO1FBQ3hELENBQUM7UUFFRCwwQ0FBbUIsR0FBbkI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLDJCQUFzQyxDQUFDO1FBQ3pELENBQUM7UUFFRCw4Q0FBdUIsR0FBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLCtCQUEwQyxDQUFDO1FBQzdELENBQUM7UUFFRCw4Q0FBdUIsR0FBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLCtCQUEwQyxDQUFDO1FBQzdELENBQUM7UUFFRCw4Q0FBdUIsR0FBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLCtCQUEwQyxDQUFDO1FBQzdELENBQUM7UUFFRCxrREFBMkIsR0FBM0I7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLG9DQUErQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxnREFBeUIsR0FBekI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLGtDQUE2QyxDQUFDO1FBQ2hFLENBQUM7UUFFRCx3Q0FBaUIsR0FBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLHlCQUFvQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxvQ0FBYSxHQUFiO1lBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxvQkFBK0IsQ0FBQztRQUNsRCxDQUFDO1FBRUQsNkJBQU0sR0FBTixVQUFVLE9BQStCO1lBQ3ZDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDakI7b0JBQ0UsT0FBTyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBNkMsQ0FBQyxDQUFDO2dCQUNsRjtvQkFDRSxPQUFPLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUM7b0JBQ0UsT0FBTyxPQUFPLENBQUMsc0JBQXNCLENBQ2pDLElBQTBELENBQUMsQ0FBQztnQkFDbEU7b0JBQ0UsT0FBTyxPQUFPLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlDO29CQUNFLE9BQU8sT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QztvQkFDRSxPQUFPLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEQ7b0JBQ0UsT0FBTyxPQUFPLENBQUMsd0JBQXdCLENBQ25DLElBQW1ELENBQUMsQ0FBQztnQkFDM0Q7b0JBQ0UsT0FBTyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hDO29CQUNFLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUM7UUFDSCxtQkFBQztJQUFELENBQUMsQUF0R0QsSUFzR0M7SUF0R1ksb0NBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7UmVmZXJlbmNlfSBmcm9tICcuLi8uLi9pbXBvcnRzJztcbmltcG9ydCB7RnVuY3Rpb25EZWZpbml0aW9ufSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuLyoqXG4gKiBUaGUgcmVhc29uIHdoeSBhIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIER5bmFtaWNWYWx1ZVJlYXNvbiB7XG4gIC8qKlxuICAgKiBBIHZhbHVlIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHksIGJlY2F1c2UgaXQgY29udGFpbnMgYSB0ZXJtIHRoYXQgY291bGQgbm90IGJlXG4gICAqIGRldGVybWluZWQgc3RhdGljYWxseS5cbiAgICogKEUuZy4gYSBwcm9wZXJ0eSBhc3NpZ25tZW50IG9yIGNhbGwgZXhwcmVzc2lvbiB3aGVyZSB0aGUgbGhzIGlzIGEgYER5bmFtaWNWYWx1ZWAsIGEgdGVtcGxhdGVcbiAgICogbGl0ZXJhbCB3aXRoIGEgZHluYW1pYyBleHByZXNzaW9uLCBhbiBvYmplY3QgbGl0ZXJhbCB3aXRoIGEgc3ByZWFkIGFzc2lnbm1lbnQgd2hpY2ggY291bGQgbm90XG4gICAqIGJlIGRldGVybWluZWQgc3RhdGljYWxseSwgZXRjLilcbiAgICovXG4gIERZTkFNSUNfSU5QVVQsXG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIGNvdWxkIG5vdCBiZSBzdGF0aWNhbGx5IGV2YWx1YXRlZC5cbiAgICogKEUuZy4gYSBkeW5hbWljYWxseSBjb25zdHJ1Y3RlZCBvYmplY3QgcHJvcGVydHkgbmFtZSBvciBhIHRlbXBsYXRlIGxpdGVyYWwgZXhwcmVzc2lvbiB0aGF0XG4gICAqIGNvdWxkIG5vdCBiZSBzdGF0aWNhbGx5IHJlc29sdmVkIHRvIGEgcHJpbWl0aXZlIHZhbHVlLilcbiAgICovXG4gIERZTkFNSUNfU1RSSU5HLFxuXG4gIC8qKlxuICAgKiBBbiBleHRlcm5hbCByZWZlcmVuY2UgY291bGQgbm90IGJlIHJlc29sdmVkIHRvIGEgdmFsdWUgd2hpY2ggY2FuIGJlIGV2YWx1YXRlZC5cbiAgICogRm9yIGV4YW1wbGUgYSBjYWxsIGV4cHJlc3Npb24gZm9yIGEgZnVuY3Rpb24gZGVjbGFyZWQgaW4gYC5kLnRzYCwgb3IgYWNjZXNzaW5nIG5hdGl2ZSBnbG9iYWxzXG4gICAqIHN1Y2ggYXMgYHdpbmRvd2AuXG4gICAqL1xuICBFWFRFUk5BTF9SRUZFUkVOQ0UsXG5cbiAgLyoqXG4gICAqIFN5bnRheCB0aGF0IGBTdGF0aWNJbnRlcnByZXRlcmAgZG9lc24ndCBrbm93IGhvdyB0byBldmFsdWF0ZSwgZm9yIGV4YW1wbGUgYSB0eXBlIG9mXG4gICAqIGB0cy5FeHByZXNzaW9uYCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQuXG4gICAqL1xuICBVTlNVUFBPUlRFRF9TWU5UQVgsXG5cbiAgLyoqXG4gICAqIEEgZGVjbGFyYXRpb24gb2YgYSBgdHMuSWRlbnRpZmllcmAgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgVU5LTk9XTl9JREVOVElGSUVSLFxuXG4gIC8qKlxuICAgKiBBIHZhbHVlIGNvdWxkIGJlIHJlc29sdmVkLCBidXQgaXMgbm90IGFuIGFjY2VwdGFibGUgdHlwZSBmb3IgdGhlIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBhdHRlbXB0aW5nIHRvIGNhbGwgYSBub24tY2FsbGFibGUgZXhwcmVzc2lvbi5cbiAgICovXG4gIElOVkFMSURfRVhQUkVTU0lPTl9UWVBFLFxuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIGNhbGwgY291bGQgbm90IGJlIGV2YWx1YXRlZCBhcyB0aGUgZnVuY3Rpb24ncyBib2R5IGlzIG5vdCBhIHNpbmdsZSByZXR1cm4gc3RhdGVtZW50LlxuICAgKi9cbiAgQ09NUExFWF9GVU5DVElPTl9DQUxMLFxuXG4gIC8qKlxuICAgKiBBIHZhbHVlIHRoYXQgY291bGQgbm90IGJlIGRldGVybWluZWQgYmVjYXVzZSBpdCBjb250YWlucyB0eXBlIGluZm9ybWF0aW9uIHRoYXQgY2Fubm90IGJlXG4gICAqIHN0YXRpY2FsbHkgZXZhbHVhdGVkLiBUaGlzIGhhcHBlbnMgd2hlbiBwcm9kdWNpbmcgYSB2YWx1ZSBmcm9tIHR5cGUgaW5mb3JtYXRpb24sIGJ1dCB0aGUgdmFsdWVcbiAgICogb2YgdGhlIGdpdmVuIHR5cGUgY2Fubm90IGJlIGRldGVybWluZWQgc3RhdGljYWxseS5cbiAgICpcbiAgICogRS5nLiBldmFsdWF0aW5nIGEgdHVwbGUuXG4gICAqXG4gICAqICAgYGRlY2xhcmUgY29uc3QgZm9vOiBbc3RyaW5nXTtgXG4gICAqXG4gICAqICBFdmFsdWF0aW5nIGBmb29gIGdpdmVzIGEgRHluYW1pY1ZhbHVlIHdyYXBwZWQgaW4gYW4gYXJyYXkgd2l0aCBhIHJlYXNvbiBvZiBEWU5BTUlDX1RZUEUuIFRoaXNcbiAgICogaXMgYmVjYXVzZSB0aGUgc3RhdGljIGV2YWx1YXRvciBoYXMgYSBgc3RyaW5nYCB0eXBlIGZvciB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGlzIHR1cGxlLCBhbmRcbiAgICogdGhlIHZhbHVlIG9mIHRoYXQgc3RyaW5nIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHkuIFRoZSB0eXBlIGBzdHJpbmdgIHBlcm1pdHMgaXQgdG8gYmVcbiAgICogJ2ZvbycsICdiYXInIG9yIGFueSBhcmJpdHJhcnkgc3RyaW5nLCBzbyB3ZSBldmFsdWF0ZSBpdCB0byBhIER5bmFtaWNWYWx1ZS5cbiAgICovXG4gIERZTkFNSUNfVFlQRSxcblxuICAvKipcbiAgICogQSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5IGZvciBhbnkgcmVhc29uIG90aGVyIHRoZSBhYm92ZS5cbiAgICovXG4gIFVOS05PV04sXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHZhbHVlIHdoaWNoIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBEeW5hbWljVmFsdWU8UiA9IHVua25vd24+IHtcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICAgIHJlYWRvbmx5IG5vZGU6IHRzLk5vZGUsIHJlYWRvbmx5IHJlYXNvbjogUiwgcHJpdmF0ZSBjb2RlOiBEeW5hbWljVmFsdWVSZWFzb24pIHt9XG5cbiAgc3RhdGljIGZyb21EeW5hbWljSW5wdXQobm9kZTogdHMuTm9kZSwgaW5wdXQ6IER5bmFtaWNWYWx1ZSk6IER5bmFtaWNWYWx1ZTxEeW5hbWljVmFsdWU+IHtcbiAgICByZXR1cm4gbmV3IER5bmFtaWNWYWx1ZShub2RlLCBpbnB1dCwgRHluYW1pY1ZhbHVlUmVhc29uLkRZTkFNSUNfSU5QVVQpO1xuICB9XG5cbiAgc3RhdGljIGZyb21EeW5hbWljU3RyaW5nKG5vZGU6IHRzLk5vZGUpOiBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiBuZXcgRHluYW1pY1ZhbHVlKG5vZGUsIHVuZGVmaW5lZCwgRHluYW1pY1ZhbHVlUmVhc29uLkRZTkFNSUNfU1RSSU5HKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRXh0ZXJuYWxSZWZlcmVuY2Uobm9kZTogdHMuTm9kZSwgcmVmOiBSZWZlcmVuY2U8dHMuRGVjbGFyYXRpb24+KTpcbiAgICAgIER5bmFtaWNWYWx1ZTxSZWZlcmVuY2U8dHMuRGVjbGFyYXRpb24+PiB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWUobm9kZSwgcmVmLCBEeW5hbWljVmFsdWVSZWFzb24uRVhURVJOQUxfUkVGRVJFTkNFKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVW5zdXBwb3J0ZWRTeW50YXgobm9kZTogdHMuTm9kZSk6IER5bmFtaWNWYWx1ZSB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWUobm9kZSwgdW5kZWZpbmVkLCBEeW5hbWljVmFsdWVSZWFzb24uVU5TVVBQT1JURURfU1lOVEFYKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVW5rbm93bklkZW50aWZpZXIobm9kZTogdHMuSWRlbnRpZmllcik6IER5bmFtaWNWYWx1ZSB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWUobm9kZSwgdW5kZWZpbmVkLCBEeW5hbWljVmFsdWVSZWFzb24uVU5LTk9XTl9JREVOVElGSUVSKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSW52YWxpZEV4cHJlc3Npb25UeXBlKG5vZGU6IHRzLk5vZGUsIHZhbHVlOiB1bmtub3duKTogRHluYW1pY1ZhbHVlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IER5bmFtaWNWYWx1ZShub2RlLCB2YWx1ZSwgRHluYW1pY1ZhbHVlUmVhc29uLklOVkFMSURfRVhQUkVTU0lPTl9UWVBFKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQ29tcGxleEZ1bmN0aW9uQ2FsbChub2RlOiB0cy5Ob2RlLCBmbjogRnVuY3Rpb25EZWZpbml0aW9uKTpcbiAgICAgIER5bmFtaWNWYWx1ZTxGdW5jdGlvbkRlZmluaXRpb24+IHtcbiAgICByZXR1cm4gbmV3IER5bmFtaWNWYWx1ZShub2RlLCBmbiwgRHluYW1pY1ZhbHVlUmVhc29uLkNPTVBMRVhfRlVOQ1RJT05fQ0FMTCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUR5bmFtaWNUeXBlKG5vZGU6IHRzLlR5cGVOb2RlKTogRHluYW1pY1ZhbHVlIHtcbiAgICByZXR1cm4gbmV3IER5bmFtaWNWYWx1ZShub2RlLCB1bmRlZmluZWQsIER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX1RZUEUpO1xuICB9XG5cbiAgc3RhdGljIGZyb21Vbmtub3duKG5vZGU6IHRzLk5vZGUpOiBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiBuZXcgRHluYW1pY1ZhbHVlKG5vZGUsIHVuZGVmaW5lZCwgRHluYW1pY1ZhbHVlUmVhc29uLlVOS05PV04pO1xuICB9XG5cbiAgaXNGcm9tRHluYW1pY0lucHV0KHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlPER5bmFtaWNWYWx1ZT4ge1xuICAgIHJldHVybiB0aGlzLmNvZGUgPT09IER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX0lOUFVUO1xuICB9XG5cbiAgaXNGcm9tRHluYW1pY1N0cmluZyh0aGlzOiBEeW5hbWljVmFsdWU8Uj4pOiB0aGlzIGlzIER5bmFtaWNWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZSA9PT0gRHluYW1pY1ZhbHVlUmVhc29uLkRZTkFNSUNfU1RSSU5HO1xuICB9XG5cbiAgaXNGcm9tRXh0ZXJuYWxSZWZlcmVuY2UodGhpczogRHluYW1pY1ZhbHVlPFI+KTogdGhpcyBpcyBEeW5hbWljVmFsdWU8UmVmZXJlbmNlPHRzLkRlY2xhcmF0aW9uPj4ge1xuICAgIHJldHVybiB0aGlzLmNvZGUgPT09IER5bmFtaWNWYWx1ZVJlYXNvbi5FWFRFUk5BTF9SRUZFUkVOQ0U7XG4gIH1cblxuICBpc0Zyb21VbnN1cHBvcnRlZFN5bnRheCh0aGlzOiBEeW5hbWljVmFsdWU8Uj4pOiB0aGlzIGlzIER5bmFtaWNWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZSA9PT0gRHluYW1pY1ZhbHVlUmVhc29uLlVOU1VQUE9SVEVEX1NZTlRBWDtcbiAgfVxuXG4gIGlzRnJvbVVua25vd25JZGVudGlmaWVyKHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5jb2RlID09PSBEeW5hbWljVmFsdWVSZWFzb24uVU5LTk9XTl9JREVOVElGSUVSO1xuICB9XG5cbiAgaXNGcm9tSW52YWxpZEV4cHJlc3Npb25UeXBlKHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5jb2RlID09PSBEeW5hbWljVmFsdWVSZWFzb24uSU5WQUxJRF9FWFBSRVNTSU9OX1RZUEU7XG4gIH1cblxuICBpc0Zyb21Db21wbGV4RnVuY3Rpb25DYWxsKHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlPEZ1bmN0aW9uRGVmaW5pdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmNvZGUgPT09IER5bmFtaWNWYWx1ZVJlYXNvbi5DT01QTEVYX0ZVTkNUSU9OX0NBTEw7XG4gIH1cblxuICBpc0Zyb21EeW5hbWljVHlwZSh0aGlzOiBEeW5hbWljVmFsdWU8Uj4pOiB0aGlzIGlzIER5bmFtaWNWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZSA9PT0gRHluYW1pY1ZhbHVlUmVhc29uLkRZTkFNSUNfVFlQRTtcbiAgfVxuXG4gIGlzRnJvbVVua25vd24odGhpczogRHluYW1pY1ZhbHVlPFI+KTogdGhpcyBpcyBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiB0aGlzLmNvZGUgPT09IER5bmFtaWNWYWx1ZVJlYXNvbi5VTktOT1dOO1xuICB9XG5cbiAgYWNjZXB0PFI+KHZpc2l0b3I6IER5bmFtaWNWYWx1ZVZpc2l0b3I8Uj4pOiBSIHtcbiAgICBzd2l0Y2ggKHRoaXMuY29kZSkge1xuICAgICAgY2FzZSBEeW5hbWljVmFsdWVSZWFzb24uRFlOQU1JQ19JTlBVVDpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREeW5hbWljSW5wdXQodGhpcyBhcyB1bmtub3duIGFzIER5bmFtaWNWYWx1ZTxEeW5hbWljVmFsdWU+KTtcbiAgICAgIGNhc2UgRHluYW1pY1ZhbHVlUmVhc29uLkRZTkFNSUNfU1RSSU5HOlxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdER5bmFtaWNTdHJpbmcodGhpcyk7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5FWFRFUk5BTF9SRUZFUkVOQ0U6XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RXh0ZXJuYWxSZWZlcmVuY2UoXG4gICAgICAgICAgICB0aGlzIGFzIHVua25vd24gYXMgRHluYW1pY1ZhbHVlPFJlZmVyZW5jZTx0cy5EZWNsYXJhdGlvbj4+KTtcbiAgICAgIGNhc2UgRHluYW1pY1ZhbHVlUmVhc29uLlVOU1VQUE9SVEVEX1NZTlRBWDpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRVbnN1cHBvcnRlZFN5bnRheCh0aGlzKTtcbiAgICAgIGNhc2UgRHluYW1pY1ZhbHVlUmVhc29uLlVOS05PV05fSURFTlRJRklFUjpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRVbmtub3duSWRlbnRpZmllcih0aGlzKTtcbiAgICAgIGNhc2UgRHluYW1pY1ZhbHVlUmVhc29uLklOVkFMSURfRVhQUkVTU0lPTl9UWVBFOlxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEludmFsaWRFeHByZXNzaW9uVHlwZSh0aGlzKTtcbiAgICAgIGNhc2UgRHluYW1pY1ZhbHVlUmVhc29uLkNPTVBMRVhfRlVOQ1RJT05fQ0FMTDpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDb21wbGV4RnVuY3Rpb25DYWxsKFxuICAgICAgICAgICAgdGhpcyBhcyB1bmtub3duIGFzIER5bmFtaWNWYWx1ZTxGdW5jdGlvbkRlZmluaXRpb24+KTtcbiAgICAgIGNhc2UgRHluYW1pY1ZhbHVlUmVhc29uLkRZTkFNSUNfVFlQRTpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREeW5hbWljVHlwZSh0aGlzKTtcbiAgICAgIGNhc2UgRHluYW1pY1ZhbHVlUmVhc29uLlVOS05PV046XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VW5rbm93bih0aGlzKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljVmFsdWVWaXNpdG9yPFI+IHtcbiAgdmlzaXREeW5hbWljSW5wdXQodmFsdWU6IER5bmFtaWNWYWx1ZTxEeW5hbWljVmFsdWU+KTogUjtcbiAgdmlzaXREeW5hbWljU3RyaW5nKHZhbHVlOiBEeW5hbWljVmFsdWUpOiBSO1xuICB2aXNpdEV4dGVybmFsUmVmZXJlbmNlKHZhbHVlOiBEeW5hbWljVmFsdWU8UmVmZXJlbmNlPHRzLkRlY2xhcmF0aW9uPj4pOiBSO1xuICB2aXNpdFVuc3VwcG9ydGVkU3ludGF4KHZhbHVlOiBEeW5hbWljVmFsdWUpOiBSO1xuICB2aXNpdFVua25vd25JZGVudGlmaWVyKHZhbHVlOiBEeW5hbWljVmFsdWUpOiBSO1xuICB2aXNpdEludmFsaWRFeHByZXNzaW9uVHlwZSh2YWx1ZTogRHluYW1pY1ZhbHVlKTogUjtcbiAgdmlzaXRDb21wbGV4RnVuY3Rpb25DYWxsKHZhbHVlOiBEeW5hbWljVmFsdWU8RnVuY3Rpb25EZWZpbml0aW9uPik6IFI7XG4gIHZpc2l0RHluYW1pY1R5cGUodmFsdWU6IER5bmFtaWNWYWx1ZSk6IFI7XG4gIHZpc2l0VW5rbm93bih2YWx1ZTogRHluYW1pY1ZhbHVlKTogUjtcbn1cbiJdfQ==
|